{"version":3,"file":"js/157-7e5799c30ff41c2450dd.js","mappings":"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AAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,mBCPlyC,MAUA,EAVe,CACbE,cAAe,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","sources":["webpack://app/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://app/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://app/./node_modules/date-fns/esm/toDate/index.js","webpack://app/./node_modules/date-fns/esm/addDays/index.js","webpack://app/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://app/./node_modules/date-fns/esm/addHours/index.js","webpack://app/./node_modules/date-fns/esm/addMonths/index.js","webpack://app/./node_modules/date-fns/esm/addYears/index.js","webpack://app/./node_modules/date-fns/esm/differenceInCalendarYears/index.js","webpack://app/./node_modules/date-fns/esm/compareAsc/index.js","webpack://app/./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://app/./node_modules/date-fns/esm/endOfDay/index.js","webpack://app/./node_modules/date-fns/esm/endOfMonth/index.js","webpack://app/./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://app/./node_modules/date-fns/esm/differenceInMonths/index.js","webpack://app/./node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://app/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://app/./node_modules/date-fns/esm/startOfDay/index.js","webpack://app/./node_modules/date-fns/esm/differenceInCalendarDays/index.js","webpack://app/./node_modules/date-fns/esm/differenceInDays/index.js","webpack://app/./node_modules/date-fns/esm/constants/index.js","webpack://app/./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://app/./node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://app/./node_modules/date-fns/esm/endOfWeek/index.js","webpack://app/./node_modules/date-fns/esm/endOfYear/index.js","webpack://app/./node_modules/date-fns/esm/isDate/index.js","webpack://app/./node_modules/date-fns/esm/isValid/index.js","webpack://app/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://app/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://app/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://app/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://app/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://app/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://app/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://app/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://app/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://app/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://app/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://app/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://app/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://app/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://app/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://app/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://app/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://app/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://app/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://app/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://app/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://app/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://app/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://app/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://app/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://app/./node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://app/./node_modules/date-fns/esm/format/index.js","webpack://app/./node_modules/date-fns/esm/isAfter/index.js","webpack://app/./node_modules/date-fns/esm/isBefore/index.js","webpack://app/./node_modules/date-fns/esm/startOfHour/index.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://app/./node_modules/date-fns/esm/_lib/assign/index.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/Setter.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/Parser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/constants.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/utils.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","webpack://app/./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","webpack://app/./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","webpack://app/./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","webpack://app/./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","webpack://app/./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack://app/./node_modules/date-fns/esm/parse/index.js","webpack://app/./node_modules/date-fns/esm/getDaysInMonth/index.js","webpack://app/./node_modules/date-fns/esm/getDay/index.js","webpack://app/./node_modules/date-fns/esm/startOfMonth/index.js","webpack://app/./node_modules/date-fns/esm/startOfWeek/index.js","webpack://app/./node_modules/date-fns/esm/startOfYear/index.js","webpack://app/./node_modules/date-fns/esm/parseISO/index.js","webpack://app/./node_modules/@date-io/date-fns/build/index.esm.js","webpack://app/./node_modules/date-fns/esm/formatISO/index.js","webpack://app/./node_modules/date-fns/esm/addSeconds/index.js","webpack://app/./node_modules/date-fns/esm/addMinutes/index.js","webpack://app/./node_modules/date-fns/esm/addWeeks/index.js","webpack://app/./node_modules/date-fns/esm/differenceInYears/index.js","webpack://app/./node_modules/date-fns/esm/differenceInQuarters/index.js","webpack://app/./node_modules/date-fns/esm/differenceInWeeks/index.js","webpack://app/./node_modules/date-fns/esm/differenceInHours/index.js","webpack://app/./node_modules/date-fns/esm/differenceInMinutes/index.js","webpack://app/./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://app/./node_modules/date-fns/esm/getHours/index.js","webpack://app/./node_modules/date-fns/esm/setHours/index.js","webpack://app/./node_modules/date-fns/esm/setMinutes/index.js","webpack://app/./node_modules/date-fns/esm/getSeconds/index.js","webpack://app/./node_modules/date-fns/esm/setSeconds/index.js","webpack://app/./node_modules/date-fns/esm/isSameDay/index.js","webpack://app/./node_modules/date-fns/esm/isSameMonth/index.js","webpack://app/./node_modules/date-fns/esm/isSameYear/index.js","webpack://app/./node_modules/date-fns/esm/isSameHour/index.js","webpack://app/./node_modules/date-fns/esm/getYear/index.js","webpack://app/./node_modules/date-fns/esm/setYear/index.js","webpack://app/./node_modules/date-fns/esm/isEqual/index.js","webpack://app/./node_modules/date-fns/esm/isWithinInterval/index.js","webpack://app/./node_modules/date-fns/esm/setMonth/index.js","webpack://app/./node_modules/date-fns/esm/eachDayOfInterval/index.js","webpack://app/./node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","webpack://app/./node_modules/stylis/src/Utility.js","webpack://app/./node_modules/stylis/src/Tokenizer.js","webpack://app/./node_modules/stylis/src/Enum.js","webpack://app/./node_modules/stylis/src/Serializer.js","webpack://app/./node_modules/stylis/src/Parser.js","webpack://app/./node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","webpack://app/./node_modules/stylis/src/Middleware.js","webpack://app/./node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","webpack://app/./node_modules/@emotion/react/dist/emotion-element-c39617d8.browser.esm.js","webpack://app/./node_modules/@emotion/react/dist/emotion-react.browser.esm.js","webpack://app/./node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","webpack://app/./node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","webpack://app/./node_modules/@emotion/hash/dist/emotion-hash.esm.js","webpack://app/./node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","webpack://app/./node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","webpack://app/./node_modules/@mui/icons-material/ArrowDropDown.js","webpack://app/./node_modules/@mui/icons-material/Close.js","webpack://app/./node_modules/@mui/icons-material/MoreHoriz.js","webpack://app/./node_modules/@mui/icons-material/MyLocation.js","webpack://app/./node_modules/@mui/icons-material/RadioButtonChecked.js","webpack://app/./node_modules/@mui/icons-material/RadioButtonUnchecked.js","webpack://app/./node_modules/@mui/icons-material/esm/ChevronRight.js","webpack://app/./node_modules/@mui/icons-material/utils/createSvgIcon.js","webpack://app/./node_modules/@mui/lab/TabContext/TabContext.js","webpack://app/./node_modules/@mui/lab/TabList/TabList.js","webpack://app/./node_modules/@mui/lab/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack://app/./node_modules/@mui/lab/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack://app/./node_modules/@mui/lab/TabPanel/tabPanelClasses.js","webpack://app/./node_modules/@mui/lab/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","webpack://app/./node_modules/@mui/lab/TabPanel/TabPanel.js","webpack://app/./node_modules/@mui/lab/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack://app/./node_modules/@mui/material/AppBar/appBarClasses.js","webpack://app/./node_modules/@mui/material/AppBar/AppBar.js","webpack://app/./node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","webpack://app/./node_modules/@mui/material/ListSubheader/ListSubheader.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/Close.js","webpack://app/./node_modules/@mui/material/Autocomplete/autocompleteClasses.js","webpack://app/./node_modules/@mui/material/Autocomplete/Autocomplete.js","webpack://app/./node_modules/@mui/material/Backdrop/backdropClasses.js","webpack://app/./node_modules/@mui/material/Backdrop/Backdrop.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/usePreviousProps.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/BadgeUnstyled/badgeUnstyledClasses.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/BadgeUnstyled/BadgeUnstyled.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/BadgeUnstyled/useBadge.js","webpack://app/./node_modules/@mui/material/Badge/badgeClasses.js","webpack://app/./node_modules/@mui/material/Badge/Badge.js","webpack://app/./node_modules/@mui/system/esm/createBox.js","webpack://app/./node_modules/@mui/material/Box/Box.js","webpack://app/./node_modules/@mui/material/Button/buttonClasses.js","webpack://app/./node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","webpack://app/./node_modules/@mui/material/Button/Button.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/resolveProps.js","webpack://app/./node_modules/@mui/material/ButtonBase/Ripple.js","webpack://app/./node_modules/@mui/material/ButtonBase/touchRippleClasses.js","webpack://app/./node_modules/@mui/material/ButtonBase/TouchRipple.js","webpack://app/./node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","webpack://app/./node_modules/@mui/material/ButtonBase/ButtonBase.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/CheckBox.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","webpack://app/./node_modules/@mui/material/Checkbox/checkboxClasses.js","webpack://app/./node_modules/@mui/material/Checkbox/Checkbox.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/Cancel.js","webpack://app/./node_modules/@mui/material/Chip/chipClasses.js","webpack://app/./node_modules/@mui/material/Chip/Chip.js","webpack://app/./node_modules/@mui/material/CircularProgress/circularProgressClasses.js","webpack://app/./node_modules/@mui/material/CircularProgress/CircularProgress.js","webpack://app/./node_modules/@mui/material/Collapse/collapseClasses.js","webpack://app/./node_modules/@mui/material/Collapse/Collapse.js","webpack://app/./node_modules/@mui/system/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack://app/./node_modules/@mui/system/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack://app/./node_modules/@mui/system/esm/styled.js","webpack://app/./node_modules/@mui/system/esm/Container/createContainer.js","webpack://app/./node_modules/@mui/system/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack://app/./node_modules/@mui/material/Container/Container.js","webpack://app/./node_modules/@mui/material/CssBaseline/CssBaseline.js","webpack://app/./node_modules/@mui/material/Dialog/DialogContext.js","webpack://app/./node_modules/@mui/material/Dialog/Dialog.js","webpack://app/./node_modules/@mui/material/Dialog/dialogClasses.js","webpack://app/./node_modules/@mui/material/Divider/Divider.js","webpack://app/./node_modules/@mui/material/Divider/dividerClasses.js","webpack://app/./node_modules/@mui/material/Fade/Fade.js","webpack://app/./node_modules/@mui/material/FilledInput/filledInputClasses.js","webpack://app/./node_modules/@mui/material/FormControl/FormControlContext.js","webpack://app/./node_modules/@mui/material/FormControl/formControlState.js","webpack://app/./node_modules/@mui/material/FormControl/useFormControl.js","webpack://app/./node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","webpack://app/./node_modules/@mui/material/FormControlLabel/FormControlLabel.js","webpack://app/./node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","webpack://app/./node_modules/@mui/material/GlobalStyles/GlobalStyles.js","webpack://app/./node_modules/@mui/material/Grid/GridContext.js","webpack://app/./node_modules/@mui/material/Grid/gridClasses.js","webpack://app/./node_modules/@mui/material/Grid/Grid.js","webpack://app/./node_modules/@mui/material/Grow/Grow.js","webpack://app/./node_modules/@mui/material/Icon/iconClasses.js","webpack://app/./node_modules/@mui/material/Icon/Icon.js","webpack://app/./node_modules/@mui/material/IconButton/iconButtonClasses.js","webpack://app/./node_modules/@mui/material/IconButton/IconButton.js","webpack://app/./node_modules/@mui/material/Input/inputClasses.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js","webpack://app/./node_modules/@mui/material/InputBase/InputBase.js","webpack://app/./node_modules/@mui/material/InputBase/inputBaseClasses.js","webpack://app/./node_modules/@mui/material/InputBase/utils.js","webpack://app/./node_modules/@mui/material/LinearProgress/linearProgressClasses.js","webpack://app/./node_modules/@mui/material/LinearProgress/LinearProgress.js","webpack://app/./node_modules/@mui/material/List/ListContext.js","webpack://app/./node_modules/@mui/material/ListItemIcon/ListItemIcon.js","webpack://app/./node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","webpack://app/./node_modules/@mui/material/ListItemText/ListItemText.js","webpack://app/./node_modules/@mui/material/ListItemText/listItemTextClasses.js","webpack://app/./node_modules/@mui/material/MenuItem/menuItemClasses.js","webpack://app/./node_modules/@mui/material/MenuItem/MenuItem.js","webpack://app/./node_modules/@mui/material/List/listClasses.js","webpack://app/./node_modules/@mui/material/List/List.js","webpack://app/./node_modules/@mui/material/utils/getScrollbarSize.js","webpack://app/./node_modules/@mui/material/MenuList/MenuList.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/ModalUnstyled/ModalManager.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/TrapFocus/TrapFocus.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js","webpack://app/./node_modules/@mui/material/Modal/Modal.js","webpack://app/./node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","webpack://app/./node_modules/@mui/material/Paper/paperClasses.js","webpack://app/./node_modules/@mui/material/Paper/Paper.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/math.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/enums.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/createPopper.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/debounce.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/within.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/popper.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://app/./node_modules/@mui/material/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/PopperUnstyled/PopperUnstyled.js","webpack://app/./node_modules/@mui/material/Popper/Popper.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","webpack://app/./node_modules/@mui/material/Radio/RadioButtonIcon.js","webpack://app/./node_modules/@mui/material/Radio/radioClasses.js","webpack://app/./node_modules/@mui/material/Radio/Radio.js","webpack://app/./node_modules/@mui/material/RadioGroup/useRadioGroup.js","webpack://app/./node_modules/@mui/material/FormGroup/formGroupClasses.js","webpack://app/./node_modules/@mui/material/FormGroup/FormGroup.js","webpack://app/./node_modules/@mui/material/RadioGroup/RadioGroup.js","webpack://app/./node_modules/@mui/material/RadioGroup/RadioGroupContext.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/SliderUnstyled/sliderUnstyledClasses.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/SliderUnstyled/SliderValueLabelUnstyled.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/visuallyHidden.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/SliderUnstyled/useSlider.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/SliderUnstyled/SliderUnstyled.js","webpack://app/./node_modules/@mui/material/Slider/Slider.js","webpack://app/./node_modules/@mui/material/SnackbarContent/snackbarContentClasses.js","webpack://app/./node_modules/@mui/material/SnackbarContent/SnackbarContent.js","webpack://app/./node_modules/@mui/material/Snackbar/snackbarClasses.js","webpack://app/./node_modules/@mui/material/Snackbar/Snackbar.js","webpack://app/./node_modules/@mui/material/Tab/tabClasses.js","webpack://app/./node_modules/@mui/material/Tab/Tab.js","webpack://app/./node_modules/@mui/material/Table/tableClasses.js","webpack://app/./node_modules/@mui/material/Table/Table.js","webpack://app/./node_modules/@mui/material/Table/TableContext.js","webpack://app/./node_modules/@mui/material/Table/Tablelvl2Context.js","webpack://app/./node_modules/@mui/material/TableCell/tableCellClasses.js","webpack://app/./node_modules/@mui/material/TableCell/TableCell.js","webpack://app/./node_modules/@mui/material/TableContainer/tableContainerClasses.js","webpack://app/./node_modules/@mui/material/TableContainer/TableContainer.js","webpack://app/./node_modules/@mui/material/TableHead/tableHeadClasses.js","webpack://app/./node_modules/@mui/material/TableHead/TableHead.js","webpack://app/./node_modules/@mui/material/TableRow/tableRowClasses.js","webpack://app/./node_modules/@mui/material/TableRow/TableRow.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/scrollLeft.js","webpack://app/./node_modules/@mui/material/internal/animate.js","webpack://app/./node_modules/@mui/material/Tabs/ScrollbarSize.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js","webpack://app/./node_modules/@mui/material/TabScrollButton/tabScrollButtonClasses.js","webpack://app/./node_modules/@mui/material/TabScrollButton/TabScrollButton.js","webpack://app/./node_modules/@mui/material/Tabs/Tabs.js","webpack://app/./node_modules/@mui/material/Tabs/tabsClasses.js","webpack://app/./node_modules/@mui/material/Input/Input.js","webpack://app/./node_modules/@mui/material/FilledInput/FilledInput.js","webpack://app/./node_modules/@mui/material/OutlinedInput/NotchedOutline.js","webpack://app/./node_modules/@mui/material/OutlinedInput/OutlinedInput.js","webpack://app/./node_modules/@mui/material/FormLabel/formLabelClasses.js","webpack://app/./node_modules/@mui/material/FormLabel/FormLabel.js","webpack://app/./node_modules/@mui/material/InputLabel/inputLabelClasses.js","webpack://app/./node_modules/@mui/material/InputLabel/InputLabel.js","webpack://app/./node_modules/@mui/material/FormControl/formControlClasses.js","webpack://app/./node_modules/@mui/material/FormControl/FormControl.js","webpack://app/./node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","webpack://app/./node_modules/@mui/material/FormHelperText/FormHelperText.js","webpack://app/./node_modules/@mui/material/Popover/popoverClasses.js","webpack://app/./node_modules/@mui/material/Popover/Popover.js","webpack://app/./node_modules/@mui/material/Menu/menuClasses.js","webpack://app/./node_modules/@mui/material/Menu/Menu.js","webpack://app/./node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","webpack://app/./node_modules/@mui/material/NativeSelect/NativeSelectInput.js","webpack://app/./node_modules/@mui/material/Select/selectClasses.js","webpack://app/./node_modules/@mui/material/Select/SelectInput.js","webpack://app/./node_modules/@mui/material/Select/Select.js","webpack://app/./node_modules/@mui/material/TextField/textFieldClasses.js","webpack://app/./node_modules/@mui/material/TextField/TextField.js","webpack://app/./node_modules/@mui/material/ToggleButton/toggleButtonClasses.js","webpack://app/./node_modules/@mui/material/ToggleButton/ToggleButton.js","webpack://app/./node_modules/@mui/material/ToggleButtonGroup/isValueSelected.js","webpack://app/./node_modules/@mui/material/ToggleButtonGroup/toggleButtonGroupClasses.js","webpack://app/./node_modules/@mui/material/ToggleButtonGroup/ToggleButtonGroup.js","webpack://app/./node_modules/@mui/material/Toolbar/toolbarClasses.js","webpack://app/./node_modules/@mui/material/Toolbar/Toolbar.js","webpack://app/./node_modules/@mui/material/Tooltip/tooltipClasses.js","webpack://app/./node_modules/@mui/material/Tooltip/Tooltip.js","webpack://app/./node_modules/@mui/material/Typography/typographyClasses.js","webpack://app/./node_modules/@mui/material/Typography/Typography.js","webpack://app/./node_modules/@mui/material/internal/switchBaseClasses.js","webpack://app/./node_modules/@mui/material/internal/SwitchBase.js","webpack://app/./node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/AutocompleteUnstyled/useAutocomplete.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/ClickAwayListener/ClickAwayListener.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/Portal/Portal.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/utils/appendOwnerState.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/base/utils/isHostComponent.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/composeClasses/composeClasses.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/createChainedFunction.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/debounce.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/deepmerge.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/formatMuiErrorMessage.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/getScrollbarSize.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/ownerDocument.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/ownerWindow.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/setRef.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/useControlled.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/useEnhancedEffect.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/useEventCallback.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/useForkRef.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/useId.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/useIsFocusVisible.js","webpack://app/./node_modules/@mui/material/colors/common.js","webpack://app/./node_modules/@mui/material/colors/grey.js","webpack://app/./node_modules/@mui/material/colors/purple.js","webpack://app/./node_modules/@mui/material/colors/red.js","webpack://app/./node_modules/@mui/material/colors/orange.js","webpack://app/./node_modules/@mui/material/colors/blue.js","webpack://app/./node_modules/@mui/material/colors/lightBlue.js","webpack://app/./node_modules/@mui/material/colors/green.js","webpack://app/./node_modules/@mui/material/styles/createPalette.js","webpack://app/./node_modules/@mui/material/styles/createTypography.js","webpack://app/./node_modules/@mui/material/styles/shadows.js","webpack://app/./node_modules/@mui/material/styles/zIndex.js","webpack://app/./node_modules/@mui/material/styles/createTheme.js","webpack://app/./node_modules/@mui/material/styles/createMixins.js","webpack://app/./node_modules/@mui/material/styles/createTransitions.js","webpack://app/./node_modules/@mui/material/styles/defaultTheme.js","webpack://app/./node_modules/@mui/material/styles/styled.js","webpack://app/./node_modules/@mui/material/styles/useTheme.js","webpack://app/./node_modules/@mui/material/styles/useThemeProps.js","webpack://app/./node_modules/@mui/material/transitions/utils.js","webpack://app/./node_modules/@mui/material/useMediaQuery/useMediaQuery.js","webpack://app/./node_modules/@mui/material/utils/capitalize.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/capitalize.js","webpack://app/./node_modules/@mui/material/utils/createChainedFunction.js","webpack://app/./node_modules/@mui/material/SvgIcon/svgIconClasses.js","webpack://app/./node_modules/@mui/material/SvgIcon/SvgIcon.js","webpack://app/./node_modules/@mui/material/utils/createSvgIcon.js","webpack://app/./node_modules/@mui/material/utils/debounce.js","webpack://app/./node_modules/@mui/material/utils/deprecatedPropType.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/deprecatedPropType.js","webpack://app/./node_modules/@mui/material/utils/requirePropFactory.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/requirePropFactory.js","webpack://app/./node_modules/@mui/material/utils/setRef.js","webpack://app/./node_modules/@mui/material/utils/unsupportedProp.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/unsupportedProp.js","webpack://app/./node_modules/@mui/material/utils/index.js","webpack://app/./node_modules/@mui/material/utils/isMuiElement.js","webpack://app/./node_modules/@mui/material/node_modules/@mui/utils/esm/isMuiElement.js","webpack://app/./node_modules/@mui/material/utils/ownerDocument.js","webpack://app/./node_modules/@mui/material/utils/ownerWindow.js","webpack://app/./node_modules/@mui/material/utils/shouldSpreadAdditionalProps.js","webpack://app/./node_modules/@mui/material/utils/useControlled.js","webpack://app/./node_modules/@mui/material/utils/useEnhancedEffect.js","webpack://app/./node_modules/@mui/material/utils/useEventCallback.js","webpack://app/./node_modules/@mui/material/utils/useForkRef.js","webpack://app/./node_modules/@mui/material/utils/useId.js","webpack://app/./node_modules/@mui/material/utils/useIsFocusVisible.js","webpack://app/./node_modules/@mui/private-theming/ThemeProvider/nested.js","webpack://app/./node_modules/@mui/private-theming/useTheme/ThemeContext.js","webpack://app/./node_modules/@mui/private-theming/useTheme/useTheme.js","webpack://app/./node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","webpack://app/./node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","webpack://app/./node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","webpack://app/./node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","webpack://app/./node_modules/@mui/styled-engine/index.js","webpack://app/./node_modules/@mui/styles/createStyles/createStyles.js","webpack://app/./node_modules/is-in-browser/dist/module.js","webpack://app/./node_modules/jss/dist/jss.esm.js","webpack://app/./node_modules/@mui/styles/mergeClasses/mergeClasses.js","webpack://app/./node_modules/@mui/styles/makeStyles/multiKeyStore.js","webpack://app/./node_modules/@mui/styles/createGenerateClassName/createGenerateClassName.js","webpack://app/./node_modules/jss-plugin-rule-value-function/dist/jss-plugin-rule-value-function.esm.js","webpack://app/./node_modules/jss-plugin-global/dist/jss-plugin-global.esm.js","webpack://app/./node_modules/jss-plugin-nested/dist/jss-plugin-nested.esm.js","webpack://app/./node_modules/hyphenate-style-name/index.js","webpack://app/./node_modules/jss-plugin-camel-case/dist/jss-plugin-camel-case.esm.js","webpack://app/./node_modules/jss-plugin-default-unit/dist/jss-plugin-default-unit.esm.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://app/./node_modules/css-vendor/dist/css-vendor.esm.js","webpack://app/./node_modules/jss-plugin-vendor-prefixer/dist/jss-plugin-vendor-prefixer.esm.js","webpack://app/./node_modules/jss-plugin-props-sort/dist/jss-plugin-props-sort.esm.js","webpack://app/./node_modules/@mui/styles/StylesProvider/StylesProvider.js","webpack://app/./node_modules/@mui/styles/jssPreset/jssPreset.js","webpack://app/./node_modules/@mui/styles/makeStyles/indexCounter.js","webpack://app/./node_modules/@mui/styles/node_modules/@mui/utils/esm/deepmerge.js","webpack://app/./node_modules/@mui/styles/node_modules/@mui/utils/esm/capitalize.js","webpack://app/./node_modules/@mui/styles/node_modules/@mui/utils/esm/formatMuiErrorMessage.js","webpack://app/./node_modules/@mui/styles/propsToClassKey/propsToClassKey.js","webpack://app/./node_modules/@mui/styles/getStylesCreator/getStylesCreator.js","webpack://app/./node_modules/@mui/styles/getStylesCreator/noopTheme.js","webpack://app/./node_modules/@mui/styles/makeStyles/makeStyles.js","webpack://app/./node_modules/@mui/styles/withStyles/withStyles.js","webpack://app/./node_modules/@mui/styles/getThemeProps/getThemeProps.js","webpack://app/./node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","webpack://app/./node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","webpack://app/./node_modules/@mui/system/esm/breakpoints.js","webpack://app/./node_modules/@mui/system/esm/colorManipulator.js","webpack://app/./node_modules/@mui/system/esm/propsToClassKey.js","webpack://app/./node_modules/@mui/system/esm/createStyled.js","webpack://app/./node_modules/@mui/system/esm/createTheme/createBreakpoints.js","webpack://app/./node_modules/@mui/system/esm/createTheme/shape.js","webpack://app/./node_modules/@mui/system/esm/createTheme/createTheme.js","webpack://app/./node_modules/@mui/system/esm/createTheme/createSpacing.js","webpack://app/./node_modules/@mui/system/esm/compose.js","webpack://app/./node_modules/@mui/system/esm/borders.js","webpack://app/./node_modules/@mui/system/esm/display.js","webpack://app/./node_modules/@mui/system/esm/flexbox.js","webpack://app/./node_modules/@mui/system/esm/grid.js","webpack://app/./node_modules/@mui/system/esm/positions.js","webpack://app/./node_modules/@mui/system/esm/palette.js","webpack://app/./node_modules/@mui/system/esm/shadows.js","webpack://app/./node_modules/@mui/system/esm/sizing.js","webpack://app/./node_modules/@mui/system/esm/typography.js","webpack://app/./node_modules/@mui/system/esm/getThemeValue.js","webpack://app/./node_modules/@mui/system/esm/merge.js","webpack://app/./node_modules/@mui/system/esm/spacing.js","webpack://app/./node_modules/@mui/system/esm/memoize.js","webpack://app/./node_modules/@mui/system/esm/style.js","webpack://app/./node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","webpack://app/./node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","webpack://app/./node_modules/@mui/system/esm/useTheme.js","webpack://app/./node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","webpack://app/./node_modules/@mui/system/node_modules/@mui/utils/esm/resolveProps.js","webpack://app/./node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","webpack://app/./node_modules/@mui/system/esm/useThemeWithoutDefault.js","webpack://app/./node_modules/@mui/system/node_modules/@mui/utils/esm/capitalize.js","webpack://app/./node_modules/@mui/system/node_modules/@mui/utils/esm/deepmerge.js","webpack://app/./node_modules/@mui/system/node_modules/@mui/utils/esm/formatMuiErrorMessage.js","webpack://app/./node_modules/@mui/x-date-pickers/LocalizationProvider/LocalizationProvider.js","webpack://app/./node_modules/@mui/x-date-pickers/DatePicker/shared.js","webpack://app/./node_modules/@mui/x-date-pickers/DatePicker/DatePickerToolbar.js","webpack://app/./node_modules/@mui/x-date-pickers/MobileDatePicker/MobileDatePicker.js","webpack://app/./node_modules/@mui/x-date-pickers/DateTimePicker/shared.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/PickersToolbarText.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/PickersToolbarButton.js","webpack://app/./node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePickerTabs.js","webpack://app/./node_modules/@mui/x-date-pickers/DateTimePicker/DateTimePickerToolbar.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/validation/useTimeValidation.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/validation/useDateTimeValidation.js","webpack://app/./node_modules/@mui/x-date-pickers/MobileDateTimePicker/MobileDateTimePicker.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/useViews.js","webpack://app/./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useId.js","webpack://app/./node_modules/@mui/x-date-pickers/node_modules/@mui/utils/esm/useEnhancedEffect.js","webpack://app/./node_modules/@mui/x-date-pickers/ClockPicker/shared.js","webpack://app/./node_modules/@mui/x-date-pickers/ClockPicker/ClockPointer.js","webpack://app/./node_modules/@mui/x-date-pickers/ClockPicker/Clock.js","webpack://app/./node_modules/@mui/x-date-pickers/ClockPicker/ClockNumber.js","webpack://app/./node_modules/@mui/x-date-pickers/ClockPicker/ClockNumbers.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/PickersArrowSwitcher.js","webpack://app/./node_modules/@mui/x-date-pickers/ClockPicker/clockPickerClasses.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/PickerViewRoot/PickerViewRoot.js","webpack://app/./node_modules/@mui/x-date-pickers/ClockPicker/ClockPicker.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/date-helpers-hooks.js","webpack://app/./node_modules/@mui/x-date-pickers/MonthPicker/PickersMonth.js","webpack://app/./node_modules/@mui/x-date-pickers/MonthPicker/monthPickerClasses.js","webpack://app/./node_modules/@mui/x-date-pickers/MonthPicker/MonthPicker.js","webpack://app/./node_modules/@mui/x-date-pickers/CalendarPicker/useCalendarState.js","webpack://app/./node_modules/@mui/x-date-pickers/CalendarPicker/PickersFadeTransitionGroup.js","webpack://app/./node_modules/@mui/x-date-pickers/PickersDay/pickersDayClasses.js","webpack://app/./node_modules/@mui/x-date-pickers/PickersDay/PickersDay.js","webpack://app/./node_modules/dom-helpers/esm/removeClass.js","webpack://app/./node_modules/react-transition-group/esm/CSSTransition.js","webpack://app/./node_modules/dom-helpers/esm/addClass.js","webpack://app/./node_modules/dom-helpers/esm/hasClass.js","webpack://app/./node_modules/@mui/x-date-pickers/CalendarPicker/PickersSlideTransition.js","webpack://app/./node_modules/@mui/x-date-pickers/CalendarPicker/DayPicker.js","webpack://app/./node_modules/@mui/x-date-pickers/CalendarPicker/PickersCalendarHeader.js","webpack://app/./node_modules/@mui/x-date-pickers/YearPicker/PickersYear.js","webpack://app/./node_modules/@mui/x-date-pickers/YearPicker/yearPickerClasses.js","webpack://app/./node_modules/@mui/x-date-pickers/YearPicker/YearPicker.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/utils/defaultReduceAnimations.js","webpack://app/./node_modules/@mui/x-date-pickers/CalendarPicker/calendarPickerClasses.js","webpack://app/./node_modules/@mui/x-date-pickers/CalendarPicker/CalendarPicker.js","webpack://app/./node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","webpack://app/./node_modules/@mui/material/InputAdornment/InputAdornment.js","webpack://app/./node_modules/rifm/dist/rifm.esm.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/useMaskedInput.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/KeyboardDateInput.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/useIsLandscape.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/CalendarOrClockPicker/CalendarOrClockPicker.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/PickersToolbar.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/PureDateInput.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/icons/index.js","webpack://app/./node_modules/@mui/material/DialogActions/dialogActionsClasses.js","webpack://app/./node_modules/@mui/material/DialogActions/DialogActions.js","webpack://app/./node_modules/@mui/material/DialogContent/dialogContentClasses.js","webpack://app/./node_modules/@mui/material/DialogTitle/dialogTitleClasses.js","webpack://app/./node_modules/@mui/material/DialogContent/DialogContent.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/PickersModalDialog.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/wrappers/MobileWrapper.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/components/wrappers/WrapperVariantContext.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/constants/dimensions.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/usePickerState.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/useOpenState.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/useUtils.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/validation/useDateValidation.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/hooks/validation/useValidation.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/utils/date-utils.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/utils/text-field-helper.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/utils/time-utils.js","webpack://app/./node_modules/@mui/x-date-pickers/internals/utils/utils.js","webpack://app/./node_modules/@ontola/link-devtools/dist/package/LinkDevTools.js","webpack://app/./node_modules/@ontologies/as/index.js","webpack://app/./node_modules/@ontologies/core/dist-web/index.bundled.js","webpack://app/./node_modules/@ontologies/dcterms/index.js","webpack://app/./node_modules/@ontologies/foaf/index.js","webpack://app/./node_modules/@ontologies/rdf/index.js","webpack://app/./node_modules/@ontologies/rdfs/index.js","webpack://app/./node_modules/@ontologies/schema/index.js","webpack://app/./node_modules/@ontologies/shacl/index.js","webpack://app/./node_modules/@ontologies/xsd/index.js","webpack://app/./node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js","webpack://app/./node_modules/@rdfdev/actions/dist-web/index.js","webpack://app/./node_modules/@rdfdev/iri/dist-web/index.js","webpack://app/./node_modules/attr-accept/dist/es/index.js","webpack://app/./node_modules/autosize/dist/autosize.js","webpack://app/./node_modules/bail/index.js","webpack://app/./node_modules/can-namespace/can-namespace.js","webpack://app/./node_modules/can-ndjson-stream/can-ndjson-stream.js","webpack://app/./node_modules/clipboard-copy/index.js","webpack://app/./node_modules/clsx/dist/clsx.m.js","webpack://app/./node_modules/computed-style/dist/computedStyle.commonjs.js","webpack://app/./node_modules/date-fns/_lib/format/longFormatters/index.js","webpack://app/./node_modules/extend/index.js","webpack://app/./node_modules/fast-deep-equal/index.js","webpack://app/./node_modules/fontawesome/index.js","webpack://app/./node_modules/history/index.js","webpack://app/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://app/./node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","webpack://app/./node_modules/hoist-non-react-statics/node_modules/react-is/index.js","webpack://app/./node_modules/http-status-codes/index.js","webpack://app/./node_modules/invariant/browser.js","webpack://app/./node_modules/is-buffer/index.js","webpack://app/./node_modules/is-plain-obj/index.js","webpack://app/./node_modules/line-height/lib/line-height.js","webpack://app/./node_modules/@ontologies/ld/index.js","webpack://app/./node_modules/@ontologies/owl/index.js","webpack://app/./node_modules/hextuples/dist-web/index.js","webpack://app/./node_modules/n-quads-parser/dist-web/index.js","webpack://app/./node_modules/link-lib/dist-web/index.js","webpack://app/./node_modules/base64-arraybuffer/dist/base64-arraybuffer.es5.js","webpack://app/./node_modules/link-redux/dist-web/index.js","webpack://app/./node_modules/mdast-add-list-metadata/index.js","webpack://app/./node_modules/mdast-util-from-markdown/dist/index.js","webpack://app/./node_modules/mdast-util-from-markdown/index.js","webpack://app/./node_modules/mdast-util-to-string/index.js","webpack://app/./node_modules/memoize-one/dist/memoize-one.esm.js","webpack://app/./node_modules/micromark/dist/character/ascii-alpha.js","webpack://app/./node_modules/micromark/dist/character/ascii-alphanumeric.js","webpack://app/./node_modules/micromark/dist/character/ascii-atext.js","webpack://app/./node_modules/micromark/dist/character/ascii-control.js","webpack://app/./node_modules/micromark/dist/character/ascii-digit.js","webpack://app/./node_modules/micromark/dist/character/ascii-hex-digit.js","webpack://app/./node_modules/micromark/dist/character/ascii-punctuation.js","webpack://app/./node_modules/micromark/dist/character/markdown-line-ending-or-space.js","webpack://app/./node_modules/micromark/dist/character/markdown-line-ending.js","webpack://app/./node_modules/micromark/dist/character/markdown-space.js","webpack://app/./node_modules/micromark/dist/character/unicode-punctuation.js","webpack://app/./node_modules/micromark/dist/character/unicode-whitespace.js","webpack://app/./node_modules/micromark/dist/constant/assign.js","webpack://app/./node_modules/micromark/dist/constant/from-char-code.js","webpack://app/./node_modules/micromark/dist/constant/has-own-property.js","webpack://app/./node_modules/micromark/dist/constant/html-block-names.js","webpack://app/./node_modules/micromark/dist/constant/html-raw-names.js","webpack://app/./node_modules/micromark/dist/constant/splice.js","webpack://app/./node_modules/micromark/dist/constant/unicode-punctuation-regex.js","webpack://app/./node_modules/micromark/dist/constructs.js","webpack://app/./node_modules/micromark/dist/initialize/content.js","webpack://app/./node_modules/micromark/dist/initialize/document.js","webpack://app/./node_modules/micromark/dist/initialize/flow.js","webpack://app/./node_modules/micromark/dist/initialize/text.js","webpack://app/./node_modules/micromark/dist/parse.js","webpack://app/./node_modules/micromark/dist/postprocess.js","webpack://app/./node_modules/micromark/dist/preprocess.js","webpack://app/./node_modules/micromark/dist/tokenize/attention.js","webpack://app/./node_modules/micromark/dist/tokenize/autolink.js","webpack://app/./node_modules/micromark/dist/tokenize/block-quote.js","webpack://app/./node_modules/micromark/dist/tokenize/character-escape.js","webpack://app/./node_modules/micromark/dist/tokenize/character-reference.js","webpack://app/./node_modules/micromark/dist/tokenize/code-fenced.js","webpack://app/./node_modules/micromark/dist/tokenize/code-indented.js","webpack://app/./node_modules/micromark/dist/tokenize/code-text.js","webpack://app/./node_modules/micromark/dist/tokenize/content.js","webpack://app/./node_modules/micromark/dist/tokenize/definition.js","webpack://app/./node_modules/micromark/dist/tokenize/factory-destination.js","webpack://app/./node_modules/micromark/dist/tokenize/factory-label.js","webpack://app/./node_modules/micromark/dist/tokenize/factory-space.js","webpack://app/./node_modules/micromark/dist/tokenize/factory-title.js","webpack://app/./node_modules/micromark/dist/tokenize/factory-whitespace.js","webpack://app/./node_modules/micromark/dist/tokenize/hard-break-escape.js","webpack://app/./node_modules/micromark/dist/tokenize/heading-atx.js","webpack://app/./node_modules/micromark/dist/tokenize/html-flow.js","webpack://app/./node_modules/micromark/dist/tokenize/html-text.js","webpack://app/./node_modules/micromark/dist/tokenize/label-end.js","webpack://app/./node_modules/micromark/dist/tokenize/label-start-image.js","webpack://app/./node_modules/micromark/dist/tokenize/label-start-link.js","webpack://app/./node_modules/micromark/dist/tokenize/line-ending.js","webpack://app/./node_modules/micromark/dist/tokenize/list.js","webpack://app/./node_modules/micromark/dist/tokenize/partial-blank-line.js","webpack://app/./node_modules/micromark/dist/tokenize/setext-underline.js","webpack://app/./node_modules/micromark/dist/tokenize/thematic-break.js","webpack://app/./node_modules/micromark/dist/util/chunked-push.js","webpack://app/./node_modules/micromark/dist/util/chunked-splice.js","webpack://app/./node_modules/micromark/dist/util/classify-character.js","webpack://app/./node_modules/micromark/dist/util/combine-extensions.js","webpack://app/./node_modules/micromark/dist/util/create-tokenizer.js","webpack://app/./node_modules/micromark/dist/util/miniflat.js","webpack://app/./node_modules/micromark/dist/util/move-point.js","webpack://app/./node_modules/micromark/dist/util/normalize-identifier.js","webpack://app/./node_modules/micromark/dist/util/prefix-size.js","webpack://app/./node_modules/micromark/dist/util/regex-check.js","webpack://app/./node_modules/micromark/dist/util/resolve-all.js","webpack://app/./node_modules/micromark/dist/util/safe-from-int.js","webpack://app/./node_modules/micromark/dist/util/serialize-chunks.js","webpack://app/./node_modules/micromark/dist/util/shallow.js","webpack://app/./node_modules/micromark/dist/util/size-chunks.js","webpack://app/./node_modules/micromark/dist/util/slice-chunks.js","webpack://app/./node_modules/micromark/dist/util/subtokenize.js","webpack://app/./node_modules/ol-geocoder/dist/ol-geocoder.js","webpack://app/./node_modules/parse-entities/decode-entity.browser.js","webpack://app/./node_modules/pct-encode/index.js","webpack://app/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://app/./node_modules/prop-types/index.js","webpack://app/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://app/./node_modules/rbush/rbush.min.js","webpack://app/./node_modules/react-autosize-textarea/lib/TextareaAutosize.js","webpack://app/./node_modules/react-autosize-textarea/lib/index.js","webpack://app/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://app/./node_modules/react-dom/index.js","webpack://app/./node_modules/tslib/tslib.es6.js","webpack://app/./node_modules/file-selector/dist/es5/file.js","webpack://app/./node_modules/file-selector/dist/es5/file-selector.js","webpack://app/./node_modules/react-dropzone/dist/es/utils/index.js","webpack://app/./node_modules/react-dropzone/dist/es/index.js","webpack://app/./node_modules/react-easy-emoji/index.js","webpack://app/./node_modules/react-easy-emoji/lib/makeTwemojiRenderer.js","webpack://app/./node_modules/react-easy-emoji/lib/replaceEmoji.js","webpack://app/./node_modules/react-fast-compare/index.js","webpack://app/./node_modules/final-form/dist/final-form.es.js","webpack://app/./node_modules/react-final-form/dist/react-final-form.es.js","webpack://app/./node_modules/react-fontawesome/lib/index.js","webpack://app/./node_modules/react-helmet-async/lib/index.module.js","webpack://app/./node_modules/react-is/cjs/react-is.production.min.js","webpack://app/./node_modules/react-is/index.js","webpack://app/./node_modules/react-markdown/lib/ast-to-react.js","webpack://app/./node_modules/react-markdown/lib/get-definitions.js","webpack://app/./node_modules/react-markdown/lib/plugins/disallow-node.js","webpack://app/./node_modules/react-markdown/lib/plugins/naive-html.js","webpack://app/./node_modules/react-markdown/lib/react-markdown.js","webpack://app/./node_modules/react-markdown/lib/renderers.js","webpack://app/./node_modules/react-markdown/lib/symbols.js","webpack://app/./node_modules/react-markdown/lib/uri-transformer.js","webpack://app/./node_modules/react-markdown/lib/wrap-table-rows.js","webpack://app/./node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","webpack://app/./node_modules/react-markdown/node_modules/react-is/index.js","webpack://app/./node_modules/react-router-dom/index.js","webpack://app/./node_modules/react-router/index.js","webpack://app/./node_modules/react-tiny-virtual-list/build/react-tiny-virtual-list.es.js","webpack://app/./node_modules/react-transition-group/esm/config.js","webpack://app/./node_modules/react-transition-group/esm/Transition.js","webpack://app/./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://app/./node_modules/react-transition-group/esm/TransitionGroup.js","webpack://app/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://app/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://app/./node_modules/react/jsx-runtime.js","webpack://app/./node_modules/remark-parse/index.js","webpack://app/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://app/./node_modules/scheduler/index.js","webpack://app/./node_modules/shallowequal/index.js","webpack://app/./node_modules/string-replace-to-array/string-replace-to-array.js","webpack://app/./node_modules/trough/index.js","webpack://app/./node_modules/trough/wrap.js","webpack://app/./node_modules/unified/index.js","webpack://app/./node_modules/unist-util-is/convert.js","webpack://app/./node_modules/unist-util-stringify-position/index.js","webpack://app/./node_modules/unist-util-visit-parents/index.js","webpack://app/./node_modules/unist-util-visit/index.js","webpack://app/./node_modules/unist-util-visit/node_modules/unist-util-visit-parents/color.browser.js","webpack://app/./node_modules/unist-util-visit/node_modules/unist-util-visit-parents/index.js","webpack://app/./node_modules/uri-template/index.js","webpack://app/./node_modules/uri-template/lib/classes.js","webpack://app/./node_modules/uri-template/lib/encoders.js","webpack://app/./node_modules/use-debounce/lib/cache.js","webpack://app/./node_modules/use-debounce/lib/callback.js","webpack://app/./node_modules/use-debounce/lib/index.js","webpack://app/./node_modules/uuid/index.js","webpack://app/./node_modules/uuid/lib/bytesToUuid.js","webpack://app/./node_modules/uuid/lib/rng-browser.js","webpack://app/./node_modules/uuid/v1.js","webpack://app/./node_modules/uuid/v4.js","webpack://app/./node_modules/vfile-message/index.js","webpack://app/./node_modules/vfile/index.js","webpack://app/./node_modules/vfile/lib/core.js","webpack://app/./node_modules/vfile/lib/index.js","webpack://app/./node_modules/vfile/lib/minpath.browser.js","webpack://app/./node_modules/vfile/lib/minproc.browser.js","webpack://app/./node_modules/xtend/immutable.js","webpack://app/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://app/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://app/./node_modules/ol/AssertionError.js","webpack://app/./node_modules/ol/Collection.js","webpack://app/./node_modules/ol/CollectionEventType.js","webpack://app/./node_modules/ol/Disposable.js","webpack://app/./node_modules/ol/Feature.js","webpack://app/./node_modules/ol/Geolocation.js","webpack://app/./node_modules/ol/Image.js","webpack://app/./node_modules/ol/ImageState.js","webpack://app/./node_modules/ol/ImageTile.js","webpack://app/./node_modules/ol/renderer/Map.js","webpack://app/./node_modules/ol/renderer/Composite.js","webpack://app/./node_modules/ol/layer/Group.js","webpack://app/./node_modules/ol/MapEvent.js","webpack://app/./node_modules/ol/MapBrowserEvent.js","webpack://app/./node_modules/ol/pointer/EventType.js","webpack://app/./node_modules/ol/MapBrowserEventHandler.js","webpack://app/./node_modules/ol/MapProperty.js","webpack://app/./node_modules/ol/structs/PriorityQueue.js","webpack://app/./node_modules/ol/TileQueue.js","webpack://app/./node_modules/ol/interaction/DoubleClickZoom.js","webpack://app/./node_modules/ol/interaction/Pointer.js","webpack://app/./node_modules/ol/interaction/DragPan.js","webpack://app/./node_modules/ol/interaction/DragRotate.js","webpack://app/./node_modules/ol/render/Box.js","webpack://app/./node_modules/ol/interaction/DragBox.js","webpack://app/./node_modules/ol/interaction/DragZoom.js","webpack://app/./node_modules/ol/events/Key.js","webpack://app/./node_modules/ol/interaction/KeyboardPan.js","webpack://app/./node_modules/ol/interaction/KeyboardZoom.js","webpack://app/./node_modules/ol/Kinetic.js","webpack://app/./node_modules/ol/interaction/MouseWheelZoom.js","webpack://app/./node_modules/ol/interaction/PinchRotate.js","webpack://app/./node_modules/ol/interaction/PinchZoom.js","webpack://app/./node_modules/ol/Map.js","webpack://app/./node_modules/ol/interaction/defaults.js","webpack://app/./node_modules/ol/MapBrowserEventType.js","webpack://app/./node_modules/ol/MapEventType.js","webpack://app/./node_modules/ol/Object.js","webpack://app/./node_modules/ol/ObjectEventType.js","webpack://app/./node_modules/ol/Observable.js","webpack://app/./node_modules/ol/Overlay.js","webpack://app/./node_modules/ol/Tile.js","webpack://app/./node_modules/ol/TileRange.js","webpack://app/./node_modules/ol/TileState.js","webpack://app/./node_modules/ol/ViewProperty.js","webpack://app/./node_modules/ol/centerconstraint.js","webpack://app/./node_modules/ol/resolutionconstraint.js","webpack://app/./node_modules/ol/View.js","webpack://app/./node_modules/ol/ViewHint.js","webpack://app/./node_modules/ol/array.js","webpack://app/./node_modules/ol/asserts.js","webpack://app/./node_modules/ol/color.js","webpack://app/./node_modules/ol/colorlike.js","webpack://app/./node_modules/ol/console.js","webpack://app/./node_modules/ol/control/Control.js","webpack://app/./node_modules/ol/control/Attribution.js","webpack://app/./node_modules/ol/control/Rotate.js","webpack://app/./node_modules/ol/control/Zoom.js","webpack://app/./node_modules/ol/control/defaults.js","webpack://app/./node_modules/ol/coordinate.js","webpack://app/./node_modules/ol/css.js","webpack://app/./node_modules/ol/dom.js","webpack://app/./node_modules/ol/easing.js","webpack://app/./node_modules/ol/events.js","webpack://app/./node_modules/ol/events/Event.js","webpack://app/./node_modules/ol/events/EventType.js","webpack://app/./node_modules/ol/events/Target.js","webpack://app/./node_modules/ol/events/condition.js","webpack://app/./node_modules/ol/extent.js","webpack://app/./node_modules/ol/extent/Relationship.js","webpack://app/./node_modules/ol/functions.js","webpack://app/./node_modules/ol/geom/Circle.js","webpack://app/./node_modules/ol/geom/Geometry.js","webpack://app/./node_modules/ol/geom/Point.js","webpack://app/./node_modules/ol/geom/LinearRing.js","webpack://app/./node_modules/ol/geom/Polygon.js","webpack://app/./node_modules/ol/geom/SimpleGeometry.js","webpack://app/./node_modules/ol/geom/flat/area.js","webpack://app/./node_modules/ol/geom/flat/closest.js","webpack://app/./node_modules/ol/geom/flat/contains.js","webpack://app/./node_modules/ol/geom/flat/deflate.js","webpack://app/./node_modules/ol/geom/flat/inflate.js","webpack://app/./node_modules/ol/geom/flat/interiorpoint.js","webpack://app/./node_modules/ol/geom/flat/intersectsextent.js","webpack://app/./node_modules/ol/geom/flat/length.js","webpack://app/./node_modules/ol/geom/flat/reverse.js","webpack://app/./node_modules/ol/geom/flat/orient.js","webpack://app/./node_modules/ol/geom/flat/segments.js","webpack://app/./node_modules/ol/geom/flat/simplify.js","webpack://app/./node_modules/ol/geom/flat/transform.js","webpack://app/./node_modules/ol/has.js","webpack://app/./node_modules/ol/interaction/Property.js","webpack://app/./node_modules/ol/interaction/Interaction.js","webpack://app/./node_modules/ol/interaction/Select.js","webpack://app/./node_modules/ol/layer/Base.js","webpack://app/./node_modules/ol/layer/Layer.js","webpack://app/./node_modules/ol/layer/Property.js","webpack://app/./node_modules/ol/layer/TileProperty.js","webpack://app/./node_modules/ol/layer/BaseTile.js","webpack://app/./node_modules/ol/renderer/canvas/TileLayer.js","webpack://app/./node_modules/ol/layer/Tile.js","webpack://app/./node_modules/ol/style/Text.js","webpack://app/./node_modules/ol/style/flat.js","webpack://app/./node_modules/ol/layer/BaseVector.js","webpack://app/./node_modules/ol/render/canvas/Instruction.js","webpack://app/./node_modules/ol/render/canvas/Builder.js","webpack://app/./node_modules/ol/render/canvas/ImageBuilder.js","webpack://app/./node_modules/ol/render/canvas/LineStringBuilder.js","webpack://app/./node_modules/ol/render/canvas/PolygonBuilder.js","webpack://app/./node_modules/ol/geom/flat/linechunk.js","webpack://app/./node_modules/ol/geom/flat/straightchunk.js","webpack://app/./node_modules/ol/render/canvas/TextBuilder.js","webpack://app/./node_modules/ol/render/canvas/BuilderGroup.js","webpack://app/./node_modules/ol/geom/flat/textpath.js","webpack://app/./node_modules/ol/render/canvas/Executor.js","webpack://app/./node_modules/ol/render/canvas/ExecutorGroup.js","webpack://app/./node_modules/ol/render/canvas/hitdetect.js","webpack://app/./node_modules/ol/renderer/vector.js","webpack://app/./node_modules/ol/renderer/canvas/VectorLayer.js","webpack://app/./node_modules/ol/layer/Vector.js","webpack://app/./node_modules/ol/math.js","webpack://app/./node_modules/ol/obj.js","webpack://app/./node_modules/ol/proj/Units.js","webpack://app/./node_modules/ol/proj/Projection.js","webpack://app/./node_modules/ol/proj/epsg3857.js","webpack://app/./node_modules/ol/proj/epsg4326.js","webpack://app/./node_modules/ol/proj/projections.js","webpack://app/./node_modules/ol/proj/transforms.js","webpack://app/./node_modules/ol/proj.js","webpack://app/./node_modules/ol/render.js","webpack://app/./node_modules/ol/render/Event.js","webpack://app/./node_modules/ol/render/EventType.js","webpack://app/./node_modules/ol/render/VectorContext.js","webpack://app/./node_modules/ol/render/canvas.js","webpack://app/./node_modules/ol/render/canvas/Immediate.js","webpack://app/./node_modules/ol/renderer/Layer.js","webpack://app/./node_modules/ol/renderer/canvas/Layer.js","webpack://app/./node_modules/ol/reproj/Triangulation.js","webpack://app/./node_modules/ol/reproj.js","webpack://app/./node_modules/ol/reproj/Tile.js","webpack://app/./node_modules/ol/reproj/common.js","webpack://app/./node_modules/ol/rotationconstraint.js","webpack://app/./node_modules/ol/size.js","webpack://app/./node_modules/ol/source/Cluster.js","webpack://app/./node_modules/ol/source/Source.js","webpack://app/./node_modules/ol/structs/RBush.js","webpack://app/./node_modules/ol/source/VectorEventType.js","webpack://app/./node_modules/ol/loadingstrategy.js","webpack://app/./node_modules/ol/featureloader.js","webpack://app/./node_modules/ol/source/Vector.js","webpack://app/./node_modules/ol/structs/LRUCache.js","webpack://app/./node_modules/ol/tilecoord.js","webpack://app/./node_modules/ol/TileCache.js","webpack://app/./node_modules/ol/source/TileEventType.js","webpack://app/./node_modules/ol/tilegrid/TileGrid.js","webpack://app/./node_modules/ol/tilegrid.js","webpack://app/./node_modules/ol/source/Tile.js","webpack://app/./node_modules/ol/tileurlfunction.js","webpack://app/./node_modules/ol/source/UrlTile.js","webpack://app/./node_modules/ol/source/TileImage.js","webpack://app/./node_modules/ol/source/XYZ.js","webpack://app/./node_modules/ol/sphere.js","webpack://app/./node_modules/ol/style/Circle.js","webpack://app/./node_modules/ol/style/Fill.js","webpack://app/./node_modules/ol/style/IconImage.js","webpack://app/./node_modules/ol/style/Icon.js","webpack://app/./node_modules/ol/style/IconImageCache.js","webpack://app/./node_modules/ol/style/Image.js","webpack://app/./node_modules/ol/style/RegularShape.js","webpack://app/./node_modules/ol/style/Stroke.js","webpack://app/./node_modules/ol/style/Style.js","webpack://app/./node_modules/ol/tilegrid/common.js","webpack://app/./node_modules/ol/transform.js","webpack://app/./node_modules/ol/util.js"],"sourcesContent":["export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n var dayOfMonth = date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport default function addYears(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * )\n * //=> 2\n */\nexport default function differenceInCalendarYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() - dateRight.getFullYear();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result;\n\n // Check for the difference of less than month\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n // Check for cases of one full calendar month\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n result = sign * (difference - Number(isLastMonthNotFull));\n }\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInYear = 365.2425;\n\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInMinute = 60000;\n\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInHour = 3600000;\n\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\nexport var millisecondsInSecond = 1000;\n\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\nexport var minTime = -maxTime;\n\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var minutesInHour = 60;\n\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInQuarter = 3;\n\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var monthsInYear = 12;\n\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var quartersInYear = 4;\n\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInHour = 3600;\n\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMinute = 60;\n\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInDay = secondsInHour * 24;\n\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInWeek = secondsInDay * 7;\n\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInYear = secondsInDay * daysInYear;\n\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInMonth = secondsInYear / 12;\n\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\nexport var secondsInQuarter = secondsInMonth * 3;","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport default function endOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n date.setFullYear(year + 1, 0, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfHour\n * @category Hour Helpers\n * @summary Return the start of an hour for the given date.\n *\n * @description\n * Return the start of an hour for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an hour\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an hour for 2 September 2014 11:55:00:\n * const result = startOfHour(new Date(2014, 8, 2, 11, 55))\n * //=> Tue Sep 02 2014 11:00:00\n */\nexport default function startOfHour(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMinutes(0, 0, 0);\n return date;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","export default function _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 try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","import _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar TIMEZONE_UNIT_PRIORITY = 10;\nexport var Setter = /*#__PURE__*/function () {\n function Setter() {\n _classCallCheck(this, Setter);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", 0);\n }\n _createClass(Setter, [{\n key: \"validate\",\n value: function validate(_utcDate, _options) {\n return true;\n }\n }]);\n return Setter;\n}();\nexport var ValueSetter = /*#__PURE__*/function (_Setter) {\n _inherits(ValueSetter, _Setter);\n var _super = _createSuper(ValueSetter);\n function ValueSetter(value, validateValue, setValue, priority, subPriority) {\n var _this;\n _classCallCheck(this, ValueSetter);\n _this = _super.call(this);\n _this.value = value;\n _this.validateValue = validateValue;\n _this.setValue = setValue;\n _this.priority = priority;\n if (subPriority) {\n _this.subPriority = subPriority;\n }\n return _this;\n }\n _createClass(ValueSetter, [{\n key: \"validate\",\n value: function validate(utcDate, options) {\n return this.validateValue(utcDate, this.value, options);\n }\n }, {\n key: \"set\",\n value: function set(utcDate, flags, options) {\n return this.setValue(utcDate, flags, this.value, options);\n }\n }]);\n return ValueSetter;\n}(Setter);\nexport var DateToSystemTimezoneSetter = /*#__PURE__*/function (_Setter2) {\n _inherits(DateToSystemTimezoneSetter, _Setter2);\n var _super2 = _createSuper(DateToSystemTimezoneSetter);\n function DateToSystemTimezoneSetter() {\n var _this2;\n _classCallCheck(this, DateToSystemTimezoneSetter);\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n _this2 = _super2.call.apply(_super2, [this].concat(args));\n _defineProperty(_assertThisInitialized(_this2), \"priority\", TIMEZONE_UNIT_PRIORITY);\n _defineProperty(_assertThisInitialized(_this2), \"subPriority\", -1);\n return _this2;\n }\n _createClass(DateToSystemTimezoneSetter, [{\n key: \"set\",\n value: function set(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n }\n }]);\n return DateToSystemTimezoneSetter;\n}(Setter);","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport { ValueSetter } from \"./Setter.js\";\nexport var Parser = /*#__PURE__*/function () {\n function Parser() {\n _classCallCheck(this, Parser);\n _defineProperty(this, \"incompatibleTokens\", void 0);\n _defineProperty(this, \"priority\", void 0);\n _defineProperty(this, \"subPriority\", void 0);\n }\n _createClass(Parser, [{\n key: \"run\",\n value: function run(dateString, token, match, options) {\n var result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n return {\n setter: new ValueSetter(result.value, this.validate, this.set, this.priority, this.subPriority),\n rest: result.rest\n };\n }\n }, {\n key: \"validate\",\n value: function validate(_utcDate, _value, _options) {\n return true;\n }\n }]);\n return Parser;\n}();","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 { Parser } from \"../Parser.js\";\nexport var EraParser = /*#__PURE__*/function (_Parser) {\n _inherits(EraParser, _Parser);\n var _super = _createSuper(EraParser);\n function EraParser() {\n var _this;\n _classCallCheck(this, EraParser);\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), \"priority\", 140);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['R', 'u', 't', 'T']);\n return _this;\n }\n _createClass(EraParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n // A, B\n case 'GGGGG':\n return match.era(dateString, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(dateString, {\n width: 'wide'\n }) || match.era(dateString, {\n width: 'abbreviated'\n }) || match.era(dateString, {\n width: 'narrow'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return EraParser;\n}(Parser);","export var numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nexport var timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};","import { millisecondsInHour, millisecondsInMinute, millisecondsInSecond } from \"../../constants/index.js\";\nimport { numericPatterns } from \"./constants.js\";\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest\n };\n}\nexport function parseNumericPattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseTimezonePattern(pattern, dateString) {\n var matchResult = dateString.match(pattern);\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: dateString.slice(1)\n };\n }\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length)\n };\n}\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), dateString);\n }\n}\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case 'morning':\n return 4;\n case 'evening':\n return 17;\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n return isCommonEra ? result : 1 - result;\n}\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}","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 { Parser } from \"../Parser.js\";\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport var YearParser = /*#__PURE__*/function (_Parser) {\n _inherits(YearParser, _Parser);\n var _super = _createSuper(YearParser);\n function YearParser() {\n var _this;\n _classCallCheck(this, YearParser);\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), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(YearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n switch (token) {\n case 'y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n var currentYear = date.getUTCFullYear();\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return YearParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { parseNDigits, normalizeTwoDigitYear, mapValue } from \"../utils.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\n// Local week-numbering year\nexport var LocalWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekYearParser, _Parser);\n var _super = _createSuper(LocalWeekYearParser);\n function LocalWeekYearParser() {\n var _this;\n _classCallCheck(this, LocalWeekYearParser);\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), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n switch (token) {\n case 'Y':\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case 'Yo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'year'\n }), valueCallback);\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n }]);\n return LocalWeekYearParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week-numbering year\nexport var ISOWeekYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekYearParser, _Parser);\n var _super = _createSuper(ISOWeekYearParser);\n function ISOWeekYearParser() {\n var _this;\n _classCallCheck(this, ISOWeekYearParser);\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), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'R') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n }\n }]);\n return ISOWeekYearParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { parseNDigitsSigned } from \"../utils.js\";\nexport var ExtendedYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(ExtendedYearParser, _Parser);\n var _super = _createSuper(ExtendedYearParser);\n function ExtendedYearParser() {\n var _this;\n _classCallCheck(this, ExtendedYearParser);\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), \"priority\", 130);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ExtendedYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n if (token === 'u') {\n return parseNDigitsSigned(4, dateString);\n }\n return parseNDigitsSigned(token.length, dateString);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ExtendedYearParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var QuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(QuarterParser, _Parser);\n var _super = _createSuper(QuarterParser);\n function QuarterParser() {\n var _this;\n _classCallCheck(this, QuarterParser);\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), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(QuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return QuarterParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { parseNDigits } from \"../utils.js\";\nexport var StandAloneQuarterParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneQuarterParser, _Parser);\n var _super = _createSuper(StandAloneQuarterParser);\n function StandAloneQuarterParser() {\n var _this;\n _classCallCheck(this, StandAloneQuarterParser);\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), \"priority\", 120);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneQuarterParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(dateString, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneQuarterParser;\n}(Parser);","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 { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nexport var MonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(MonthParser, _Parser);\n var _super = _createSuper(MonthParser);\n function MonthParser() {\n var _this;\n _classCallCheck(this, MonthParser);\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), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n _defineProperty(_assertThisInitialized(_this), \"priority\", 110);\n return _this;\n }\n _createClass(MonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'MM':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return MonthParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, mapValue } from \"../utils.js\";\nexport var StandAloneMonthParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneMonthParser, _Parser);\n var _super = _createSuper(StandAloneMonthParser);\n function StandAloneMonthParser() {\n var _this;\n _classCallCheck(this, StandAloneMonthParser);\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), \"priority\", 110);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneMonthParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n return value - 1;\n };\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return mapValue(parseNumericPattern(numericPatterns.month, dateString), valueCallback);\n // 01, 02, ..., 12\n case 'LL':\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'month'\n }), valueCallback);\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneMonthParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\"; // Local week of year\nexport var LocalWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalWeekParser, _Parser);\n var _super = _createSuper(LocalWeekParser);\n function LocalWeekParser() {\n var _this;\n _classCallCheck(this, LocalWeekParser);\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), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']);\n return _this;\n }\n _createClass(LocalWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'wo':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n }\n }]);\n return LocalWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\"; // ISO week of year\nexport var ISOWeekParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOWeekParser, _Parser);\n var _super = _createSuper(ISOWeekParser);\n function ISOWeekParser() {\n var _this;\n _classCallCheck(this, ISOWeekParser);\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), \"priority\", 100);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISOWeekParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, dateString);\n case 'Io':\n return match.ordinalNumber(dateString, {\n unit: 'week'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value));\n }\n }]);\n return ISOWeekParser;\n}(Parser);","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","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 { isLeapYearIndex, parseNDigits, parseNumericPattern } from \"../utils.js\";\nimport { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// Day of the month\nexport var DateParser = /*#__PURE__*/function (_Parser) {\n _inherits(DateParser, _Parser);\n var _super = _createSuper(DateParser);\n function DateParser() {\n var _this;\n _classCallCheck(this, DateParser);\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), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subPriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DateParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, dateString);\n case 'do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DateParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits, isLeapYearIndex } from \"../utils.js\";\nexport var DayOfYearParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayOfYearParser, _Parser);\n var _super = _createSuper(DayOfYearParser);\n function DayOfYearParser() {\n var _this;\n _classCallCheck(this, DayOfYearParser);\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), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"subpriority\", 1);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayOfYearParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case 'Do':\n return match.ordinalNumber(dateString, {\n unit: 'date'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(date, value) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayOfYearParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function setUTCDay(dirtyDate, dirtyDay, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","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 { Parser } from \"../Parser.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Day of week\nexport var DayParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayParser, _Parser);\n var _super = _createSuper(DayParser);\n function DayParser() {\n var _this;\n _classCallCheck(this, DayParser);\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), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['D', 'i', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(DayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return DayParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Local day of week\nexport var LocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(LocalDayParser, _Parser);\n var _super = _createSuper(LocalDayParser);\n function LocalDayParser() {\n var _this;\n _classCallCheck(this, LocalDayParser);\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), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']);\n return _this;\n }\n _createClass(LocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'eo':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'eee':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return LocalDayParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\"; // Stand-alone local day of week\nexport var StandAloneLocalDayParser = /*#__PURE__*/function (_Parser) {\n _inherits(StandAloneLocalDayParser, _Parser);\n var _super = _createSuper(StandAloneLocalDayParser);\n function StandAloneLocalDayParser() {\n var _this;\n _classCallCheck(this, StandAloneLocalDayParser);\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), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']);\n return _this;\n }\n _createClass(StandAloneLocalDayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match, options) {\n var valueCallback = function valueCallback(value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case 'co':\n return mapValue(match.ordinalNumber(dateString, {\n unit: 'day'\n }), valueCallback);\n // Tue\n case 'ccc':\n return match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return match.day(dateString, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'short',\n context: 'standalone'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return StandAloneLocalDayParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\"; // ISO day of week\nexport var ISODayParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISODayParser, _Parser);\n var _super = _createSuper(ISODayParser);\n function ISODayParser() {\n var _this;\n _classCallCheck(this, ISODayParser);\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), \"priority\", 90);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']);\n return _this;\n }\n _createClass(ISODayParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n var valueCallback = function valueCallback(value) {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case 'io':\n return match.ordinalNumber(dateString, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return mapValue(match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // T\n case 'iiiii':\n return mapValue(match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tu\n case 'iiiiii':\n return mapValue(match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n // Tuesday\n case 'iiii':\n default:\n return mapValue(match.day(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'short',\n context: 'formatting'\n }) || match.day(dateString, {\n width: 'narrow',\n context: 'formatting'\n }), valueCallback);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date = setUTCISODay(date, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n }]);\n return ISODayParser;\n}(Parser);","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n if (day % 7 === 0) {\n day = day - 7;\n }\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","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 { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMParser, _Parser);\n var _super = _createSuper(AMPMParser);\n function AMPMParser() {\n var _this;\n _classCallCheck(this, AMPMParser);\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), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['b', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaaa':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\";\nexport var AMPMMidnightParser = /*#__PURE__*/function (_Parser) {\n _inherits(AMPMMidnightParser, _Parser);\n var _super = _createSuper(AMPMMidnightParser);\n function AMPMMidnightParser() {\n var _this;\n _classCallCheck(this, AMPMMidnightParser);\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), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'B', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(AMPMMidnightParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbbb':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return AMPMMidnightParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { dayPeriodEnumToHours } from \"../utils.js\"; // in the morning, in the afternoon, in the evening, at night\nexport var DayPeriodParser = /*#__PURE__*/function (_Parser) {\n _inherits(DayPeriodParser, _Parser);\n var _super = _createSuper(DayPeriodParser);\n function DayPeriodParser() {\n var _this;\n _classCallCheck(this, DayPeriodParser);\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), \"priority\", 80);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 't', 'T']);\n return _this;\n }\n _createClass(DayPeriodParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBBB':\n return match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return match.dayPeriod(dateString, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(dateString, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n }]);\n return DayPeriodParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1to12Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1to12Parser, _Parser);\n var _super = _createSuper(Hour1to12Parser);\n function Hour1to12Parser() {\n var _this;\n _classCallCheck(this, Hour1to12Parser);\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), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['H', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour1to12Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case 'ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour1to12Parser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0to23Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0to23Parser, _Parser);\n var _super = _createSuper(Hour0to23Parser);\n function Hour0to23Parser() {\n var _this;\n _classCallCheck(this, Hour0to23Parser);\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), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'K', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0to23Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case 'Ho':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n }\n }]);\n return Hour0to23Parser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour0To11Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour0To11Parser, _Parser);\n var _super = _createSuper(Hour0To11Parser);\n function Hour0To11Parser() {\n var _this;\n _classCallCheck(this, Hour0To11Parser);\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), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['h', 'H', 'k', 't', 'T']);\n return _this;\n }\n _createClass(Hour0To11Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case 'Ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date;\n }\n }]);\n return Hour0To11Parser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var Hour1To24Parser = /*#__PURE__*/function (_Parser) {\n _inherits(Hour1To24Parser, _Parser);\n var _super = _createSuper(Hour1To24Parser);\n function Hour1To24Parser() {\n var _this;\n _classCallCheck(this, Hour1To24Parser);\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), \"priority\", 70);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['a', 'b', 'h', 'H', 'K', 't', 'T']);\n return _this;\n }\n _createClass(Hour1To24Parser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case 'ko':\n return match.ordinalNumber(dateString, {\n unit: 'hour'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n }\n }]);\n return Hour1To24Parser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var MinuteParser = /*#__PURE__*/function (_Parser) {\n _inherits(MinuteParser, _Parser);\n var _super = _createSuper(MinuteParser);\n function MinuteParser() {\n var _this;\n _classCallCheck(this, MinuteParser);\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), \"priority\", 60);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(MinuteParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, dateString);\n case 'mo':\n return match.ordinalNumber(dateString, {\n unit: 'minute'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n }\n }]);\n return MinuteParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { parseNumericPattern, parseNDigits } from \"../utils.js\";\nexport var SecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(SecondParser, _Parser);\n var _super = _createSuper(SecondParser);\n function SecondParser() {\n var _this;\n _classCallCheck(this, SecondParser);\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), \"priority\", 50);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(SecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token, match) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, dateString);\n case 'so':\n return match.ordinalNumber(dateString, {\n unit: 'second'\n });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n }, {\n key: \"validate\",\n value: function validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCSeconds(value, 0);\n return date;\n }\n }]);\n return SecondParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { mapValue, parseNDigits } from \"../utils.js\";\nexport var FractionOfSecondParser = /*#__PURE__*/function (_Parser) {\n _inherits(FractionOfSecondParser, _Parser);\n var _super = _createSuper(FractionOfSecondParser);\n function FractionOfSecondParser() {\n var _this;\n _classCallCheck(this, FractionOfSecondParser);\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), \"priority\", 30);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T']);\n return _this;\n }\n _createClass(FractionOfSecondParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n var valueCallback = function valueCallback(value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }, {\n key: \"set\",\n value: function set(date, _flags, value) {\n date.setUTCMilliseconds(value);\n return date;\n }\n }]);\n return FractionOfSecondParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601. +00:00 is `'Z'`)\nexport var ISOTimezoneWithZParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneWithZParser, _Parser);\n var _super = _createSuper(ISOTimezoneWithZParser);\n function ISOTimezoneWithZParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneWithZParser);\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), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'x']);\n return _this;\n }\n _createClass(ISOTimezoneWithZParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneWithZParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { parseTimezonePattern } from \"../utils.js\"; // Timezone (ISO-8601)\nexport var ISOTimezoneParser = /*#__PURE__*/function (_Parser) {\n _inherits(ISOTimezoneParser, _Parser);\n var _super = _createSuper(ISOTimezoneParser);\n function ISOTimezoneParser() {\n var _this;\n _classCallCheck(this, ISOTimezoneParser);\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), \"priority\", 10);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", ['t', 'T', 'X']);\n return _this;\n }\n _createClass(ISOTimezoneParser, [{\n key: \"parse\",\n value: function parse(dateString, token) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, dateString);\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, dateString);\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, dateString);\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n }, {\n key: \"set\",\n value: function set(date, flags, value) {\n if (flags.timestampIsSet) {\n return date;\n }\n return new Date(date.getTime() - value);\n }\n }]);\n return ISOTimezoneParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampSecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampSecondsParser, _Parser);\n var _super = _createSuper(TimestampSecondsParser);\n function TimestampSecondsParser() {\n var _this;\n _classCallCheck(this, TimestampSecondsParser);\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), \"priority\", 40);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampSecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampSecondsParser;\n}(Parser);","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 { Parser } from \"../Parser.js\";\nimport { parseAnyDigitsSigned } from \"../utils.js\";\nexport var TimestampMillisecondsParser = /*#__PURE__*/function (_Parser) {\n _inherits(TimestampMillisecondsParser, _Parser);\n var _super = _createSuper(TimestampMillisecondsParser);\n function TimestampMillisecondsParser() {\n var _this;\n _classCallCheck(this, TimestampMillisecondsParser);\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), \"priority\", 20);\n _defineProperty(_assertThisInitialized(_this), \"incompatibleTokens\", '*');\n return _this;\n }\n _createClass(TimestampMillisecondsParser, [{\n key: \"parse\",\n value: function parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n }, {\n key: \"set\",\n value: function set(_date, _flags, value) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n }\n }]);\n return TimestampMillisecondsParser;\n}(Parser);","import { EraParser } from \"./EraParser.js\";\nimport { YearParser } from \"./YearParser.js\";\nimport { LocalWeekYearParser } from \"./LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./ExtendedYearParser.js\";\nimport { QuarterParser } from \"./QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./MonthParser.js\";\nimport { StandAloneMonthParser } from \"./StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./ISOWeekParser.js\";\nimport { DateParser } from \"./DateParser.js\";\nimport { DayOfYearParser } from \"./DayOfYearParser.js\";\nimport { DayParser } from \"./DayParser.js\";\nimport { LocalDayParser } from \"./LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./ISODayParser.js\";\nimport { AMPMParser } from \"./AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./Hour1To24Parser.js\";\nimport { MinuteParser } from \"./MinuteParser.js\";\nimport { SecondParser } from \"./SecondParser.js\";\nimport { FractionOfSecondParser } from \"./FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./TimestampMillisecondsParser.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport var parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser()\n};","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _createForOfIteratorHelper from \"@babel/runtime/helpers/esm/createForOfIteratorHelper\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { DateToSystemTimezoneSetter } from \"./_lib/Setter.js\";\nimport { parsers } from \"./_lib/parsers/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [new DateToSystemTimezoneSetter()];\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n var _iterator = _createForOfIteratorHelper(tokens),\n _step;\n try {\n var _loop = function _loop() {\n var token = _step.value;\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = usedTokens.find(function (usedToken) {\n return incompatibleTokens.includes(usedToken.token) || usedToken.token === firstCharacter;\n });\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length > 0) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.run(dateString, token, locale.match, subFnOptions);\n if (!parseResult) {\n return {\n v: new Date(NaN)\n };\n }\n setters.push(parseResult.setter);\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return {\n v: new Date(NaN)\n };\n }\n }\n };\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _ret = _loop();\n if (_typeof(_ret) === \"object\") return _ret.v;\n }\n\n // Check if the remaining input contains something other than whitespace\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n var _iterator2 = _createForOfIteratorHelper(uniquePrioritySetters),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var setter = _step2.value;\n if (!setter.validate(utcDate, subFnOptions)) {\n return new Date(NaN);\n }\n var result = setter.set(utcDate, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n utcDate = result[0];\n assign(flags, result[1]);\n // Result is date\n } else {\n utcDate = result;\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n return utcDate;\n}\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport default function startOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var cleanDate = toDate(dirtyDate);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function parseISO(argument, options) {\n var _options$additionalDi;\n requiredArgs(1, arguments);\n var additionalDigits = toInteger((_options$additionalDi = options === null || options === void 0 ? void 0 : options.additionalDigits) !== null && _options$additionalDi !== void 0 ? _options$additionalDi : 2);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n var dateStrings = splitDateString(argument);\n var date;\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time);\n // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n return dateStrings;\n}\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import addDays from 'date-fns/addDays';\nimport addSeconds from 'date-fns/addSeconds';\nimport addMinutes from 'date-fns/addMinutes';\nimport addHours from 'date-fns/addHours';\nimport addWeeks from 'date-fns/addWeeks';\nimport addMonths from 'date-fns/addMonths';\nimport addYears from 'date-fns/addYears';\nimport differenceInYears from 'date-fns/differenceInYears';\nimport differenceInQuarters from 'date-fns/differenceInQuarters';\nimport differenceInMonths from 'date-fns/differenceInMonths';\nimport differenceInWeeks from 'date-fns/differenceInWeeks';\nimport differenceInDays from 'date-fns/differenceInDays';\nimport differenceInHours from 'date-fns/differenceInHours';\nimport differenceInMinutes from 'date-fns/differenceInMinutes';\nimport differenceInSeconds from 'date-fns/differenceInSeconds';\nimport differenceInMilliseconds from 'date-fns/differenceInMilliseconds';\nimport eachDayOfInterval from 'date-fns/eachDayOfInterval';\nimport endOfDay from 'date-fns/endOfDay';\nimport endOfWeek from 'date-fns/endOfWeek';\nimport endOfYear from 'date-fns/endOfYear';\nimport format from 'date-fns/format';\nimport getHours from 'date-fns/getHours';\nimport getSeconds from 'date-fns/getSeconds';\nimport getYear from 'date-fns/getYear';\nimport isAfter from 'date-fns/isAfter';\nimport isBefore from 'date-fns/isBefore';\nimport isEqual from 'date-fns/isEqual';\nimport isSameDay from 'date-fns/isSameDay';\nimport isSameYear from 'date-fns/isSameYear';\nimport isSameMonth from 'date-fns/isSameMonth';\nimport isSameHour from 'date-fns/isSameHour';\nimport isValid from 'date-fns/isValid';\nimport dateFnsParse from 'date-fns/parse';\nimport setHours from 'date-fns/setHours';\nimport setMinutes from 'date-fns/setMinutes';\nimport setMonth from 'date-fns/setMonth';\nimport getDay from 'date-fns/getDay';\nimport getDaysInMonth from 'date-fns/getDaysInMonth';\nimport setSeconds from 'date-fns/setSeconds';\nimport setYear from 'date-fns/setYear';\nimport startOfDay from 'date-fns/startOfDay';\nimport startOfMonth from 'date-fns/startOfMonth';\nimport endOfMonth from 'date-fns/endOfMonth';\nimport startOfWeek from 'date-fns/startOfWeek';\nimport startOfYear from 'date-fns/startOfYear';\nimport parseISO from 'date-fns/parseISO';\nimport formatISO from 'date-fns/formatISO';\nimport isWithinInterval from 'date-fns/isWithinInterval';\nimport longFormatters from 'date-fns/_lib/format/longFormatters';\nimport defaultLocale from 'date-fns/locale/en-US';\n\nvar defaultFormats = {\n dayOfMonth: \"d\",\n fullDate: \"PP\",\n fullDateWithWeekday: \"PPPP\",\n fullDateTime: \"PP p\",\n fullDateTime12h: \"PP hh:mm aaa\",\n fullDateTime24h: \"PP HH:mm\",\n fullTime: \"p\",\n fullTime12h: \"hh:mm aaa\",\n fullTime24h: \"HH:mm\",\n hours12h: \"hh\",\n hours24h: \"HH\",\n keyboardDate: \"P\",\n keyboardDateTime: \"P p\",\n keyboardDateTime12h: \"P hh:mm aaa\",\n keyboardDateTime24h: \"P HH:mm\",\n minutes: \"mm\",\n month: \"LLLL\",\n monthAndDate: \"MMMM d\",\n monthAndYear: \"LLLL yyyy\",\n monthShort: \"MMM\",\n weekday: \"EEEE\",\n weekdayShort: \"EEE\",\n normalDate: \"d MMMM\",\n normalDateWithWeekday: \"EEE, MMM d\",\n seconds: \"ss\",\n shortDate: \"MMM d\",\n year: \"yyyy\",\n};\nvar DateFnsUtils = /** @class */ (function () {\n function DateFnsUtils(_a) {\n var _this = this;\n var _b = _a === void 0 ? {} : _a, locale = _b.locale, formats = _b.formats;\n this.lib = \"date-fns\";\n // Note: date-fns input types are more lenient than this adapter, so we need to expose our more\n // strict signature and delegate to the more lenient signature. Otherwise, we have downstream type errors upon usage.\n this.is12HourCycleInCurrentLocale = function () {\n if (_this.locale) {\n return /a/.test(_this.locale.formatLong.time());\n }\n // By default date-fns is using en-US locale with am/pm enabled\n return true;\n };\n this.getFormatHelperText = function (format) {\n // @see https://github.com/date-fns/date-fns/blob/master/src/format/index.js#L31\n var longFormatRegexp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n var locale = _this.locale || defaultLocale;\n return format\n .match(longFormatRegexp)\n .map(function (token) {\n var firstCharacter = token[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(token, locale.formatLong, {});\n }\n return token;\n })\n .join(\"\")\n .replace(/(aaa|aa|a)/g, \"(a|p)m\")\n .toLocaleLowerCase();\n };\n this.parseISO = function (isoString) {\n return parseISO(isoString);\n };\n this.toISO = function (value) {\n return formatISO(value, { format: \"extended\" });\n };\n this.getCurrentLocaleCode = function () {\n var _a;\n return ((_a = _this.locale) === null || _a === void 0 ? void 0 : _a.code) || \"en-US\";\n };\n this.addSeconds = function (value, count) {\n return addSeconds(value, count);\n };\n this.addMinutes = function (value, count) {\n return addMinutes(value, count);\n };\n this.addHours = function (value, count) {\n return addHours(value, count);\n };\n this.addDays = function (value, count) {\n return addDays(value, count);\n };\n this.addWeeks = function (value, count) {\n return addWeeks(value, count);\n };\n this.addMonths = function (value, count) {\n return addMonths(value, count);\n };\n this.isValid = function (value) {\n return isValid(_this.date(value));\n };\n this.getDiff = function (value, comparing, unit) {\n switch (unit) {\n case \"years\":\n return differenceInYears(value, _this.date(comparing));\n case \"quarters\":\n return differenceInQuarters(value, _this.date(comparing));\n case \"months\":\n return differenceInMonths(value, _this.date(comparing));\n case \"weeks\":\n return differenceInWeeks(value, _this.date(comparing));\n case \"days\":\n return differenceInDays(value, _this.date(comparing));\n case \"hours\":\n return differenceInHours(value, _this.date(comparing));\n case \"minutes\":\n return differenceInMinutes(value, _this.date(comparing));\n case \"seconds\":\n return differenceInSeconds(value, _this.date(comparing));\n default: {\n return differenceInMilliseconds(value, _this.date(comparing));\n }\n }\n };\n this.isAfter = function (value, comparing) {\n return isAfter(value, comparing);\n };\n this.isBefore = function (value, comparing) {\n return isBefore(value, comparing);\n };\n this.startOfDay = function (value) {\n return startOfDay(value);\n };\n this.endOfDay = function (value) {\n return endOfDay(value);\n };\n this.getHours = function (value) {\n return getHours(value);\n };\n this.setHours = function (value, count) {\n return setHours(value, count);\n };\n this.setMinutes = function (value, count) {\n return setMinutes(value, count);\n };\n this.getSeconds = function (value) {\n return getSeconds(value);\n };\n this.setSeconds = function (value, count) {\n return setSeconds(value, count);\n };\n this.isSameDay = function (value, comparing) {\n return isSameDay(value, comparing);\n };\n this.isSameMonth = function (value, comparing) {\n return isSameMonth(value, comparing);\n };\n this.isSameYear = function (value, comparing) {\n return isSameYear(value, comparing);\n };\n this.isSameHour = function (value, comparing) {\n return isSameHour(value, comparing);\n };\n this.startOfMonth = function (value) {\n return startOfMonth(value);\n };\n this.endOfMonth = function (value) {\n return endOfMonth(value);\n };\n this.startOfWeek = function (value) {\n return startOfWeek(value, { locale: _this.locale });\n };\n this.endOfWeek = function (value) {\n return endOfWeek(value, { locale: _this.locale });\n };\n this.getYear = function (value) {\n return getYear(value);\n };\n this.setYear = function (value, count) {\n return setYear(value, count);\n };\n this.date = function (value) {\n if (typeof value === \"undefined\") {\n return new Date();\n }\n if (value === null) {\n return null;\n }\n return new Date(value);\n };\n this.toJsDate = function (value) {\n return value;\n };\n this.parse = function (value, formatString) {\n if (value === \"\") {\n return null;\n }\n return dateFnsParse(value, formatString, new Date(), { locale: _this.locale });\n };\n this.format = function (date, formatKey) {\n return _this.formatByString(date, _this.formats[formatKey]);\n };\n this.formatByString = function (date, formatString) {\n return format(date, formatString, { locale: _this.locale });\n };\n this.isEqual = function (date, comparing) {\n if (date === null && comparing === null) {\n return true;\n }\n return isEqual(date, comparing);\n };\n this.isNull = function (date) {\n return date === null;\n };\n this.isAfterDay = function (date, value) {\n return isAfter(date, endOfDay(value));\n };\n this.isBeforeDay = function (date, value) {\n return isBefore(date, startOfDay(value));\n };\n this.isBeforeYear = function (date, value) {\n return isBefore(date, startOfYear(value));\n };\n this.isAfterYear = function (date, value) {\n return isAfter(date, endOfYear(value));\n };\n this.isWithinRange = function (date, _a) {\n var start = _a[0], end = _a[1];\n return isWithinInterval(date, { start: start, end: end });\n };\n this.formatNumber = function (numberToFormat) {\n return numberToFormat;\n };\n this.getMinutes = function (date) {\n return date.getMinutes();\n };\n this.getMonth = function (date) {\n return date.getMonth();\n };\n this.getDaysInMonth = function (date) {\n return getDaysInMonth(date);\n };\n this.setMonth = function (date, count) {\n return setMonth(date, count);\n };\n this.getMeridiemText = function (ampm) {\n return ampm === \"am\" ? \"AM\" : \"PM\";\n };\n this.getNextMonth = function (date) {\n return addMonths(date, 1);\n };\n this.getPreviousMonth = function (date) {\n return addMonths(date, -1);\n };\n this.getMonthArray = function (date) {\n var firstMonth = startOfYear(date);\n var monthArray = [firstMonth];\n while (monthArray.length < 12) {\n var prevMonth = monthArray[monthArray.length - 1];\n monthArray.push(_this.getNextMonth(prevMonth));\n }\n return monthArray;\n };\n this.mergeDateAndTime = function (date, time) {\n return _this.setSeconds(_this.setMinutes(_this.setHours(date, _this.getHours(time)), _this.getMinutes(time)), _this.getSeconds(time));\n };\n this.getWeekdays = function () {\n var now = new Date();\n return eachDayOfInterval({\n start: startOfWeek(now, { locale: _this.locale }),\n end: endOfWeek(now, { locale: _this.locale }),\n }).map(function (day) { return _this.formatByString(day, \"EEEEEE\"); });\n };\n this.getWeekArray = function (date) {\n var start = startOfWeek(startOfMonth(date), { locale: _this.locale });\n var end = endOfWeek(endOfMonth(date), { locale: _this.locale });\n var count = 0;\n var current = start;\n var nestedWeeks = [];\n var lastDay = null;\n while (isBefore(current, end)) {\n var weekNumber = Math.floor(count / 7);\n nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];\n var day = getDay(current);\n if (lastDay !== day) {\n lastDay = day;\n nestedWeeks[weekNumber].push(current);\n count += 1;\n }\n current = addDays(current, 1);\n }\n return nestedWeeks;\n };\n this.getYearRange = function (start, end) {\n var startDate = startOfYear(start);\n var endDate = endOfYear(end);\n var years = [];\n var current = startDate;\n while (isBefore(current, endDate)) {\n years.push(current);\n current = addYears(current, 1);\n }\n return years;\n };\n this.locale = locale;\n this.formats = Object.assign({}, defaultFormats, formats);\n }\n return DateFnsUtils;\n}());\n\nexport { DateFnsUtils as default };\n","import toDate from \"../toDate/index.js\";\nimport addLeadingZeros from \"../_lib/addLeadingZeros/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatISO\n * @category Common Helpers\n * @summary Format the date according to the ISO 8601 standard (https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a003169814.htm).\n *\n * @description\n * Return the formatted date string in ISO 8601 format. Options may be passed to control the parts and notations of the date.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {'extended'|'basic'} [options.format='extended'] - if 'basic', hide delimiters between date and time values.\n * @param {'complete'|'date'|'time'} [options.representation='complete'] - format date, time with local time zone, or both.\n * @returns {String} the formatted date string (in local time zone)\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.format` must be 'extended' or 'basic'\n * @throws {RangeError} `options.representation` must be 'date', 'time' or 'complete'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52))\n * //=> '2019-09-18T19:00:52Z'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601, short format (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { format: 'basic' })\n * //=> '20190918T190052'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, date only:\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'date' })\n * //=> '2019-09-18'\n *\n * @example\n * // Represent 18 September 2019 in ISO 8601 format, time only (local time zone is UTC):\n * const result = formatISO(new Date(2019, 8, 18, 19, 0, 52), { representation: 'time' })\n * //=> '19:00:52Z'\n */\nexport default function formatISO(date, options) {\n var _options$format, _options$representati;\n requiredArgs(1, arguments);\n var originalDate = toDate(date);\n if (isNaN(originalDate.getTime())) {\n throw new RangeError('Invalid time value');\n }\n var format = String((_options$format = options === null || options === void 0 ? void 0 : options.format) !== null && _options$format !== void 0 ? _options$format : 'extended');\n var representation = String((_options$representati = options === null || options === void 0 ? void 0 : options.representation) !== null && _options$representati !== void 0 ? _options$representati : 'complete');\n if (format !== 'extended' && format !== 'basic') {\n throw new RangeError(\"format must be 'extended' or 'basic'\");\n }\n if (representation !== 'date' && representation !== 'time' && representation !== 'complete') {\n throw new RangeError(\"representation must be 'date', 'time', or 'complete'\");\n }\n var result = '';\n var tzOffset = '';\n var dateDelimiter = format === 'extended' ? '-' : '';\n var timeDelimiter = format === 'extended' ? ':' : '';\n\n // Representation is either 'date' or 'complete'\n if (representation !== 'time') {\n var day = addLeadingZeros(originalDate.getDate(), 2);\n var month = addLeadingZeros(originalDate.getMonth() + 1, 2);\n var year = addLeadingZeros(originalDate.getFullYear(), 4);\n\n // yyyyMMdd or yyyy-MM-dd.\n result = \"\".concat(year).concat(dateDelimiter).concat(month).concat(dateDelimiter).concat(day);\n }\n\n // Representation is either 'time' or 'complete'\n if (representation !== 'date') {\n // Add the timezone.\n var offset = originalDate.getTimezoneOffset();\n if (offset !== 0) {\n var absoluteOffset = Math.abs(offset);\n var hourOffset = addLeadingZeros(Math.floor(absoluteOffset / 60), 2);\n var minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);\n // If less than 0, the sign is +, because it is ahead of time.\n var sign = offset < 0 ? '+' : '-';\n tzOffset = \"\".concat(sign).concat(hourOffset, \":\").concat(minuteOffset);\n } else {\n tzOffset = 'Z';\n }\n var hour = addLeadingZeros(originalDate.getHours(), 2);\n var minute = addLeadingZeros(originalDate.getMinutes(), 2);\n var second = addLeadingZeros(originalDate.getSeconds(), 2);\n\n // If there's also date, separate it with time with 'T'\n var separator = result === '' ? '' : 'T';\n\n // Creates a time string consisting of hour, minute, and second, separated by delimiters, if defined.\n var time = [hour, minute, second].join(timeDelimiter);\n\n // HHmmss or HH:mm:ss.\n result = \"\".concat(result).concat(separator).concat(time).concat(tzOffset);\n }\n return result;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarYears from \"../differenceInCalendarYears/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full years\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport default function differenceInYears(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarYears(dateLeft, dateRight));\n\n // Set both dates to a valid leap year for accurate comparison when dealing\n // with leap days\n dateLeft.setFullYear(1584);\n dateRight.setFullYear(1584);\n\n // Math.abs(diff in full years - diff in calendar years) === 1 if last calendar year is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastYearNotFull = compareAsc(dateLeft, dateRight) === -sign;\n var result = sign * (difference - Number(isLastYearNotFull));\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import differenceInMonths from \"../differenceInMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full quarters\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport default function differenceInQuarters(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMonths(dateLeft, dateRight) / 3;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInDays from \"../differenceInDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of full weeks\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport default function differenceInWeeks(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInDays(dateLeft, dateRight) / 7;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { millisecondsInHour } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of hours\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport default function differenceInHours(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInHour;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport default function getSeconds(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var seconds = date.getSeconds();\n return seconds;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * const result = isSameYear(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n */\nexport default function isSameYear(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear();\n}","import startOfHour from \"../startOfHour/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameHour\n * @category Hour Helpers\n * @summary Are the given dates in the same hour (and same day)?\n *\n * @description\n * Are the given dates in the same hour (and same day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same hour (and same day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 4 September 06:30:00 in the same hour?\n * const result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 6, 30))\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:00:00 and 5 September 06:00:00 in the same hour?\n * const result = isSameHour(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 5, 6, 0))\n * //=> false\n */\nexport default function isSameHour(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfHour = startOfHour(dirtyDateLeft);\n var dateRightStartOfHour = startOfHour(dirtyDateRight);\n return dateLeftStartOfHour.getTime() === dateRightStartOfHour.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyLeftDate);\n var dateRight = toDate(dirtyRightDate);\n return dateLeft.getTime() === dateRight.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval? (Including start and end.)\n *\n * @param {Date|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(new Date(2014, 0, 3), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(new Date(2014, 0, 10), {\n * start: new Date(2014, 0, 1),\n * end: new Date(2014, 0, 7)\n * })\n * //=> false\n *\n * @example\n * // For date equal to interval start:\n * isWithinInterval(date, { start, end: date }) // => true\n *\n * @example\n * // For date equal to interval end:\n * isWithinInterval(date, { start: date, end }) // => true\n */\nexport default function isWithinInterval(dirtyDate, interval) {\n requiredArgs(2, arguments);\n var time = toDate(dirtyDate).getTime();\n var startTime = toDate(interval.start).getTime();\n var endTime = toDate(interval.end).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n return time >= startTime && time <= endTime;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @param {Interval} interval - the interval. See [Interval]{@link https://date-fns.org/docs/Interval}\n * @param {Object} [options] - an object with options.\n * @param {Number} [options.step=1] - the step to increment by. The value should be more than 1.\n * @returns {Date[]} the array with starts of days from the day of the interval start to the day of the interval end\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.step` must be a number greater than 1\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport default function eachDayOfInterval(dirtyInterval, options) {\n var _options$step;\n requiredArgs(1, arguments);\n var interval = dirtyInterval || {};\n var startDate = toDate(interval.start);\n var endDate = toDate(interval.end);\n var endTime = endDate.getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startDate.getTime() <= endTime)) {\n throw new RangeError('Invalid interval');\n }\n var dates = [];\n var currentDate = startDate;\n currentDate.setHours(0, 0, 0, 0);\n var step = Number((_options$step = options === null || options === void 0 ? void 0 : options.step) !== null && _options$step !== void 0 ? _options$step : 1);\n if (step < 1 || isNaN(step)) throw new RangeError('`options.step` must be a number greater than 1');\n while (currentDate.getTime() <= endTime) {\n dates.push(toDate(currentDate));\n currentDate.setDate(currentDate.getDate() + step);\n currentDate.setHours(0, 0, 0, 0);\n }\n return dates;\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-c39617d8.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-c39617d8.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.1\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.2\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.0\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser$1) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\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 serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreHoriz');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm8.94 3c-.46-4.17-3.77-7.48-7.94-7.94V1h-2v2.06C6.83 3.52 3.52 6.83 3.06 11H1v2h2.06c.46 4.17 3.77 7.48 7.94 7.94V23h2v-2.06c4.17-.46 7.48-3.77 7.94-7.94H23v-2h-2.06zM12 19c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z\"\n}), 'MyLocation');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonChecked');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');\n\nexports.default = _default;","import createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"\n}), 'ChevronRight');","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\n\nvar _utils = require(\"@mui/material/utils\");","import * as React from 'react';\nimport PropTypes from 'prop-types';\n/**\n * @type {React.Context<{ idPrefix: string; value: string } | null>}\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Context = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n Context.displayName = 'TabContext';\n}\n\nfunction useUniquePrefix() {\n const [id, setId] = React.useState(null);\n React.useEffect(() => {\n setId(`mui-p-${Math.round(Math.random() * 1e5)}`);\n }, []);\n return id;\n}\n\nexport default function TabContext(props) {\n const {\n children,\n value\n } = props;\n const idPrefix = useUniquePrefix();\n const context = React.useMemo(() => {\n return {\n idPrefix,\n value\n };\n }, [idPrefix, value]);\n return /*#__PURE__*/_jsx(Context.Provider, {\n value: context,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? TabContext.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * The value of the currently selected `Tab`.\n */\n value: PropTypes.string.isRequired\n} : void 0;\n/**\n * @returns {unknown}\n */\n\nexport function useTabContext() {\n return React.useContext(Context);\n}\nexport function getPanelId(context, value) {\n const {\n idPrefix\n } = context;\n\n if (idPrefix === null) {\n return null;\n }\n\n return `${context.idPrefix}-P-${value}`;\n}\nexport function getTabId(context, value) {\n const {\n idPrefix\n } = context;\n\n if (idPrefix === null) {\n return null;\n }\n\n return `${context.idPrefix}-T-${value}`;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport Tabs from '@mui/material/Tabs';\nimport { useTabContext, getTabId, getPanelId } from '../TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst TabList = /*#__PURE__*/React.forwardRef(function TabList(props, ref) {\n const {\n children: childrenProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const context = useTabContext();\n\n if (context === null) {\n throw new TypeError('No TabContext provided');\n }\n\n const children = React.Children.map(childrenProp, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n\n return /*#__PURE__*/React.cloneElement(child, {\n // SOMEDAY: `Tabs` will set those themselves\n 'aria-controls': getPanelId(context, child.props.value),\n id: getTabId(context, child.props.value)\n });\n });\n return /*#__PURE__*/_jsx(Tabs, _extends({}, other, {\n ref: ref,\n value: context.value,\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabList.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * A list of `` elements.\n */\n children: PropTypes.node\n} : void 0;\nexport default TabList;","const defaultGenerator = componentName => componentName;\n\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n\n generate(componentName) {\n return generate(componentName);\n },\n\n reset() {\n generate = defaultGenerator;\n }\n\n };\n};\n\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from '../ClassNameGenerator';\nconst globalStateClassesMapping = {\n active: 'Mui-active',\n checked: 'Mui-checked',\n completed: 'Mui-completed',\n disabled: 'Mui-disabled',\n error: 'Mui-error',\n expanded: 'Mui-expanded',\n focused: 'Mui-focused',\n focusVisible: 'Mui-focusVisible',\n required: 'Mui-required',\n selected: 'Mui-selected'\n};\nexport default function generateUtilityClass(componentName, slot) {\n const globalStateClass = globalStateClassesMapping[slot];\n return globalStateClass || `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTabPanelUtilityClass(slot) {\n return generateUtilityClass('MuiTabPanel', slot);\n}\nconst tabPanelClasses = generateUtilityClasses('MuiTabPanel', ['root']);\nexport default tabPanelClasses;","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots) {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot);\n });\n return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { getTabPanelUtilityClass } from './tabPanelClasses';\nimport { getPanelId, getTabId, useTabContext } from '../TabContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTabPanelUtilityClass, classes);\n};\n\nconst TabPanelRoot = styled('div', {\n name: 'MuiTabPanel',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n padding: theme.spacing(3)\n}));\nconst TabPanel = /*#__PURE__*/React.forwardRef(function TabPanel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTabPanel'\n });\n\n const {\n children,\n className,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props);\n\n const classes = useUtilityClasses(ownerState);\n const context = useTabContext();\n\n if (context === null) {\n throw new TypeError('No TabContext provided');\n }\n\n const id = getPanelId(context, value);\n const tabId = getTabId(context, value);\n return /*#__PURE__*/_jsx(TabPanelRoot, _extends({\n \"aria-labelledby\": tabId,\n className: clsx(classes.root, className),\n hidden: value !== context.value,\n id: id,\n ref: ref,\n role: \"tabpanel\",\n ownerState: ownerState\n }, other, {\n children: value === context.value && children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TabPanel.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The `value` of the corresponding `Tab`. Must use the index of the `Tab` when\n * no `value` was passed to `Tab`.\n */\n value: PropTypes.string.isRequired\n} : void 0;\nexport default TabPanel;","export default function composeClasses(slots, getUtilityClass, classes) {\n const output = {};\n Object.keys(slots).forEach( // `Objet.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n\n acc.push(getUtilityClass(key));\n }\n\n return acc;\n }, []).join(' ');\n });\n return output;\n}","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAppBarUtilityClass(slot) {\n return generateUtilityClass('MuiAppBar', slot);\n}\nconst appBarClasses = generateUtilityClasses('MuiAppBar', ['root', 'positionFixed', 'positionAbsolute', 'positionSticky', 'positionStatic', 'positionRelative', 'colorDefault', 'colorPrimary', 'colorSecondary', 'colorInherit', 'colorTransparent']);\nexport default appBarClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"enableColorOnDark\", \"position\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nimport { getAppBarUtilityClass } from './appBarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n color,\n position,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, `position${capitalize(position)}`]\n };\n return composeClasses(slots, getAppBarUtilityClass, classes);\n};\n\nconst AppBarRoot = styled(Paper, {\n name: 'MuiAppBar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n const backgroundColorDefault = theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[900];\n return _extends({\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n boxSizing: 'border-box',\n // Prevent padding issue with the Modal and fixed positioned AppBar.\n flexShrink: 0\n }, ownerState.position === 'fixed' && {\n position: 'fixed',\n zIndex: theme.zIndex.appBar,\n top: 0,\n left: 'auto',\n right: 0,\n '@media print': {\n // Prevent the app bar to be visible on each printed page.\n position: 'absolute'\n }\n }, ownerState.position === 'absolute' && {\n position: 'absolute',\n zIndex: theme.zIndex.appBar,\n top: 0,\n left: 'auto',\n right: 0\n }, ownerState.position === 'sticky' && {\n // ⚠️ sticky is not supported by IE11.\n position: 'sticky',\n zIndex: theme.zIndex.appBar,\n top: 0,\n left: 'auto',\n right: 0\n }, ownerState.position === 'static' && {\n position: 'static'\n }, ownerState.position === 'relative' && {\n position: 'relative'\n }, ownerState.color === 'default' && {\n backgroundColor: backgroundColorDefault,\n color: theme.palette.getContrastText(backgroundColorDefault)\n }, ownerState.color && ownerState.color !== 'default' && ownerState.color !== 'inherit' && ownerState.color !== 'transparent' && {\n backgroundColor: theme.palette[ownerState.color].main,\n color: theme.palette[ownerState.color].contrastText\n }, ownerState.color === 'inherit' && {\n color: 'inherit'\n }, theme.palette.mode === 'dark' && !ownerState.enableColorOnDark && {\n backgroundColor: null,\n color: null\n }, ownerState.color === 'transparent' && _extends({\n backgroundColor: 'transparent',\n color: 'inherit'\n }, theme.palette.mode === 'dark' && {\n backgroundImage: 'none'\n }));\n});\nconst AppBar = /*#__PURE__*/React.forwardRef(function AppBar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAppBar'\n });\n\n const {\n className,\n color = 'primary',\n enableColorOnDark = false,\n position = 'fixed'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n position,\n enableColorOnDark\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(AppBarRoot, _extends({\n square: true,\n component: \"header\",\n ownerState: ownerState,\n elevation: 4,\n className: clsx(classes.root, className, position === 'fixed' && 'mui-fixed'),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AppBar.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary', 'transparent']), PropTypes.string]),\n\n /**\n * If true, the `color` prop is applied in dark mode.\n * @default false\n */\n enableColorOnDark: PropTypes.bool,\n\n /**\n * The positioning type. The behavior of the different options is described\n * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).\n * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.\n * @default 'fixed'\n */\n position: PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky']),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AppBar;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getListSubheaderUtilityClass(slot) {\n return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disableGutters,\n inset,\n disableSticky\n } = ownerState;\n const slots = {\n root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n };\n return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\n\nconst ListSubheaderRoot = styled('li', {\n name: 'MuiListSubheader',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n boxSizing: 'border-box',\n lineHeight: '48px',\n listStyle: 'none',\n color: (theme.vars || theme).palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n color: 'inherit'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.inset && {\n paddingLeft: 72\n}, !ownerState.disableSticky && {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListSubheader'\n });\n\n const {\n className,\n color = 'default',\n component = 'li',\n disableGutters = false,\n disableSticky = false,\n inset = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n component,\n disableGutters,\n disableSticky,\n inset\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'default'\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, the List Subheader will not have gutters.\n * @default false\n */\n disableGutters: PropTypes.bool,\n\n /**\n * If `true`, the List Subheader will not stick to the top during scroll.\n * @default false\n */\n disableSticky: PropTypes.bool,\n\n /**\n * If `true`, the List Subheader is indented.\n * @default false\n */\n inset: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getAutocompleteUtilityClass(slot) {\n return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar _ClearIcon, _ArrowDropDownIcon;\n\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, useAutocomplete, createFilterOptions } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePortal,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n popupOpen,\n size\n } = ownerState;\n const slots = {\n root: ['root', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n inputRoot: ['inputRoot'],\n input: ['input', inputFocused && 'inputFocused'],\n tag: ['tag', `tagSize${capitalize(size)}`],\n endAdornment: ['endAdornment'],\n clearIndicator: ['clearIndicator'],\n popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n popper: ['popper', disablePortal && 'popperDisablePortal'],\n paper: ['paper'],\n listbox: ['listbox'],\n loading: ['loading'],\n noOptions: ['noOptions'],\n option: ['option'],\n groupLabel: ['groupLabel'],\n groupUl: ['groupUl']\n };\n return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\n\nconst AutocompleteRoot = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n size\n } = ownerState;\n return [{\n [`& .${autocompleteClasses.tag}`]: styles.tag\n }, {\n [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n }, {\n [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n }, {\n [`& .${autocompleteClasses.input}`]: styles.input\n }, {\n [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n }\n})(({\n ownerState\n}) => _extends({\n [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n },\n\n /* Avoid double tap issue on iOS */\n '@media (pointer: fine)': {\n [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n }\n }\n}, ownerState.fullWidth && {\n width: '100%'\n}, {\n [`& .${autocompleteClasses.tag}`]: _extends({\n margin: 3,\n maxWidth: 'calc(100% - 6px)'\n }, ownerState.size === 'small' && {\n margin: 2,\n maxWidth: 'calc(100% - 4px)'\n }),\n [`& .${autocompleteClasses.inputRoot}`]: {\n flexWrap: 'wrap',\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4\n },\n [`& .${autocompleteClasses.input}`]: {\n width: 0,\n minWidth: 30\n }\n },\n [`& .${inputClasses.root}`]: {\n paddingBottom: 1,\n '& .MuiInput-input': {\n padding: '4px 4px 4px 0px'\n }\n },\n [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${inputClasses.input}`]: {\n padding: '2px 4px 3px 0'\n }\n },\n [`& .${outlinedInputClasses.root}`]: {\n padding: 9,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${autocompleteClasses.input}`]: {\n padding: '7.5px 4px 7.5px 6px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n padding: 6,\n [`& .${autocompleteClasses.input}`]: {\n padding: '2.5px 4px 2.5px 6px'\n }\n },\n [`& .${filledInputClasses.root}`]: {\n paddingTop: 19,\n paddingLeft: 8,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${filledInputClasses.input}`]: {\n padding: '7px 4px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n paddingBottom: 1,\n [`& .${filledInputClasses.input}`]: {\n padding: '2.5px 4px'\n }\n },\n [`& .${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 8\n },\n [`& .${autocompleteClasses.input}`]: _extends({\n flexGrow: 1,\n textOverflow: 'ellipsis',\n opacity: 0\n }, ownerState.inputFocused && {\n opacity: 1\n })\n}));\nconst AutocompleteEndAdornment = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'EndAdornment',\n overridesResolver: (props, styles) => styles.endAdornment\n})({\n // We use a position absolute to support wrapping tags.\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 14px)' // Center vertically\n\n});\nconst AutocompleteClearIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'ClearIndicator',\n overridesResolver: (props, styles) => styles.clearIndicator\n})({\n marginRight: -2,\n padding: 4,\n visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'PopupIndicator',\n overridesResolver: ({\n ownerState\n }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})(({\n ownerState\n}) => _extends({\n padding: 2,\n marginRight: -2\n}, ownerState.popupOpen && {\n transform: 'rotate(180deg)'\n}));\nconst AutocompletePopper = styled(Popper, {\n name: 'MuiAutocomplete',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${autocompleteClasses.option}`]: styles.option\n }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.modal\n}, ownerState.disablePortal && {\n position: 'absolute'\n}));\nconst AutocompletePaper = styled(Paper, {\n name: 'MuiAutocomplete',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => _extends({}, theme.typography.body1, {\n overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Loading',\n overridesResolver: (props, styles) => styles.loading\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'NoOptions',\n overridesResolver: (props, styles) => styles.noOptions\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Listbox',\n overridesResolver: (props, styles) => styles.listbox\n})(({\n theme\n}) => ({\n listStyle: 'none',\n margin: 0,\n padding: '8px 0',\n maxHeight: '40vh',\n overflow: 'auto',\n [`& .${autocompleteClasses.option}`]: {\n minHeight: 48,\n display: 'flex',\n overflow: 'hidden',\n justifyContent: 'flex-start',\n alignItems: 'center',\n cursor: 'pointer',\n paddingTop: 6,\n boxSizing: 'border-box',\n outline: '0',\n WebkitTapHighlightColor: 'transparent',\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16,\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n },\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&[aria-disabled=\"true\"]': {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette.action.selected\n }\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }\n }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n name: 'MuiAutocomplete',\n slot: 'GroupLabel',\n overridesResolver: (props, styles) => styles.groupLabel\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n name: 'MuiAutocomplete',\n slot: 'GroupUl',\n overridesResolver: (props, styles) => styles.groupUl\n})({\n padding: 0,\n [`& .${autocompleteClasses.option}`]: {\n paddingLeft: 24\n }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n var _componentsProps$clea, _componentsProps$pape;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAutocomplete'\n });\n /* eslint-disable @typescript-eslint/no-unused-vars */\n\n const {\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n ChipProps,\n className,\n clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n fontSize: \"small\"\n })),\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n clearText = 'Clear',\n closeText = 'Close',\n componentsProps = {},\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled = false,\n disabledItemsFocusable = false,\n disableListWrap = false,\n disablePortal = false,\n filterSelectedOptions = false,\n forcePopupIcon = 'auto',\n freeSolo = false,\n fullWidth = false,\n getLimitTagsText = more => `+${more}`,\n getOptionLabel = option => {\n var _option$label;\n\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n includeInputInList = false,\n limitTags = -1,\n ListboxComponent = 'ul',\n ListboxProps,\n loading = false,\n loadingText = 'Loading…',\n multiple = false,\n noOptionsText = 'No options',\n openOnFocus = false,\n openText = 'Open',\n PaperComponent = Paper,\n PopperComponent = Popper,\n popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n readOnly = false,\n renderGroup: renderGroupProp,\n renderInput,\n renderOption: renderOptionProp,\n renderTags,\n selectOnFocus = !props.freeSolo,\n size = 'medium'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n /* eslint-enable @typescript-eslint/no-unused-vars */\n\n\n const {\n getRootProps,\n getInputProps,\n getInputLabelProps,\n getPopupIndicatorProps,\n getClearProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n value,\n dirty,\n id,\n popupOpen,\n focused,\n focusedTag,\n anchorEl,\n setAnchorEl,\n inputValue,\n groupedOptions\n } = useAutocomplete(_extends({}, props, {\n componentName: 'Autocomplete'\n }));\n const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false; // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n\n const ownerState = _extends({}, props, {\n disablePortal,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused: focusedTag === -1,\n popupOpen,\n size\n });\n\n const classes = useUtilityClasses(ownerState);\n let startAdornment;\n\n if (multiple && value.length > 0) {\n const getCustomizedTagProps = params => _extends({\n className: clsx(classes.tag),\n disabled\n }, getTagProps(params));\n\n if (renderTags) {\n startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n } else {\n startAdornment = value.map((option, index) => /*#__PURE__*/_jsx(Chip, _extends({\n label: getOptionLabel(option),\n size: size\n }, getCustomizedTagProps({\n index\n }), ChipProps)));\n }\n }\n\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n const more = startAdornment.length - limitTags;\n\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n className: classes.tag,\n children: getLimitTagsText(more)\n }, startAdornment.length));\n }\n }\n\n const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n className: classes.groupLabel,\n ownerState: ownerState,\n component: \"div\",\n children: params.group\n }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n className: classes.groupUl,\n ownerState: ownerState,\n children: params.children\n })]\n }, params.key);\n\n const renderGroup = renderGroupProp || defaultRenderGroup;\n\n const defaultRenderOption = (props2, option) => /*#__PURE__*/_jsx(\"li\", _extends({}, props2, {\n children: getOptionLabel(option)\n }));\n\n const renderOption = renderOptionProp || defaultRenderOption;\n\n const renderListOption = (option, index) => {\n const optionProps = getOptionProps({\n option,\n index\n });\n return renderOption(_extends({}, optionProps, {\n className: classes.option\n }), option, {\n selected: optionProps['aria-selected'],\n inputValue\n });\n };\n\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, getRootProps(other), {\n children: renderInput({\n id,\n disabled,\n fullWidth: true,\n size: size === 'small' ? 'small' : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: _extends({\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment\n }, (hasClearIcon || hasPopupIcon) && {\n endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n className: classes.endAdornment,\n ownerState: ownerState,\n children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n ownerState: ownerState\n }, componentsProps.clearIndicator, {\n className: clsx(classes.clearIndicator, (_componentsProps$clea = componentsProps.clearIndicator) == null ? void 0 : _componentsProps$clea.className),\n children: clearIcon\n })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n className: clsx(classes.popupIndicator),\n ownerState: ownerState,\n children: popupIcon\n })) : null]\n })\n }),\n inputProps: _extends({\n className: clsx(classes.input),\n disabled,\n readOnly\n }, getInputProps())\n })\n })), popupOpen && anchorEl ? /*#__PURE__*/_jsx(AutocompletePopper, {\n as: PopperComponent,\n className: clsx(classes.popper),\n disablePortal: disablePortal,\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n ownerState: ownerState,\n role: \"presentation\",\n anchorEl: anchorEl,\n open: true,\n children: /*#__PURE__*/_jsxs(AutocompletePaper, _extends({\n ownerState: ownerState,\n as: PaperComponent\n }, componentsProps.paper, {\n className: clsx(classes.paper, (_componentsProps$pape = componentsProps.paper) == null ? void 0 : _componentsProps$pape.className),\n children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/_jsx(AutocompleteLoading, {\n className: classes.loading,\n ownerState: ownerState,\n children: loadingText\n }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n className: classes.noOptions,\n ownerState: ownerState,\n role: \"presentation\",\n onMouseDown: event => {\n // Prevent input blur when interacting with the \"no options\" content\n event.preventDefault();\n },\n children: noOptionsText\n }) : null, groupedOptions.length > 0 ? /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n as: ListboxComponent,\n className: classes.listbox,\n ownerState: ownerState\n }, getListboxProps(), ListboxProps, {\n children: groupedOptions.map((option, index) => {\n if (groupBy) {\n return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n });\n }\n\n return renderListOption(option, index);\n })\n })) : null]\n }))\n }) : null]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, the portion of the selected suggestion that has not been typed by the user,\n * known as the completion string, appears inline after the input cursor in the textbox.\n * The inline completion string is visually highlighted and has a selected state.\n * @default false\n */\n autoComplete: PropTypes.bool,\n\n /**\n * If `true`, the first option is automatically highlighted.\n * @default false\n */\n autoHighlight: PropTypes.bool,\n\n /**\n * If `true`, the selected option becomes the value of the input\n * when the Autocomplete loses focus unless the user chooses\n * a different option or changes the character string in the input.\n * @default false\n */\n autoSelect: PropTypes.bool,\n\n /**\n * Control if the input should be blurred when an option is selected:\n *\n * - `false` the input is not blurred.\n * - `true` the input is always blurred.\n * - `touch` the input is blurred after a touch event.\n * - `mouse` the input is blurred after a mouse event.\n * @default false\n */\n blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n\n /**\n * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n */\n ChipProps: PropTypes.object,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The icon to display in place of the default clear icon.\n * @default \n */\n clearIcon: PropTypes.node,\n\n /**\n * If `true`, the input's text is cleared on blur if no value is selected.\n *\n * Set to `true` if you want to help the user enter a new value.\n * Set to `false` if you want to help the user resume their search.\n * @default !props.freeSolo\n */\n clearOnBlur: PropTypes.bool,\n\n /**\n * If `true`, clear all values when the user presses escape and the popup is closed.\n * @default false\n */\n clearOnEscape: PropTypes.bool,\n\n /**\n * Override the default text for the *clear* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Clear'\n */\n clearText: PropTypes.string,\n\n /**\n * Override the default text for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object\n }),\n\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n }\n\n return null;\n }),\n\n /**\n * If `true`, the input can't be cleared.\n * @default false\n */\n disableClearable: PropTypes.bool,\n\n /**\n * If `true`, the popup won't close when a value is selected.\n * @default false\n */\n disableCloseOnSelect: PropTypes.bool,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n\n /**\n * If `true`, the list box in the popup will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n\n /**\n * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n\n /**\n * A function that determines the filtered options to be rendered on search.\n *\n * @param {T[]} options The options to render.\n * @param {object} state The state of the component.\n * @returns {T[]}\n */\n filterOptions: PropTypes.func,\n\n /**\n * If `true`, hide the selected options from the list box.\n * @default false\n */\n filterSelectedOptions: PropTypes.bool,\n\n /**\n * Force the visibility display of the popup icon.\n * @default 'auto'\n */\n forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n\n /**\n * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n * @default false\n */\n freeSolo: PropTypes.bool,\n\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The label to display when the tags are truncated (`limitTags`).\n *\n * @param {number} more The number of truncated tags.\n * @returns {ReactNode}\n * @default (more) => `+${more}`\n */\n getLimitTagsText: PropTypes.func,\n\n /**\n * Used to determine the disabled state for a given option.\n *\n * @param {T} option The option to test.\n * @returns {boolean}\n */\n getOptionDisabled: PropTypes.func,\n\n /**\n * Used to determine the string value for a given option.\n * It's used to fill the input (and the list box options if `renderOption` is not provided).\n *\n * If used in free solo mode, it must accept both the type of the options and a string.\n *\n * @param {T} option\n * @returns {string}\n * @default (option) => option.label ?? option\n */\n getOptionLabel: PropTypes.func,\n\n /**\n * If provided, the options will be grouped under the returned string.\n * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n *\n * @param {T} options The options to group.\n * @returns {string}\n */\n groupBy: PropTypes.func,\n\n /**\n * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n * It should move focus to the first option and last option, respectively.\n * @default !props.freeSolo\n */\n handleHomeEndKeys: PropTypes.bool,\n\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide an id it will fall back to a randomly generated one.\n */\n id: PropTypes.string,\n\n /**\n * If `true`, the highlight can move to the input.\n * @default false\n */\n includeInputInList: PropTypes.bool,\n\n /**\n * The input value.\n */\n inputValue: PropTypes.string,\n\n /**\n * Used to determine if the option represents the given value.\n * Uses strict equality by default.\n * ⚠️ Both arguments need to be handled, an option can only match with one value.\n *\n * @param {T} option The option to test.\n * @param {T} value The value to test against.\n * @returns {boolean}\n */\n isOptionEqualToValue: PropTypes.func,\n\n /**\n * The maximum number of tags that will be visible when not focused.\n * Set `-1` to disable the limit.\n * @default -1\n */\n limitTags: integerPropType,\n\n /**\n * The component used to render the listbox.\n * @default 'ul'\n */\n ListboxComponent: PropTypes.elementType,\n\n /**\n * Props applied to the Listbox element.\n */\n ListboxProps: PropTypes.object,\n\n /**\n * If `true`, the component is in a loading state.\n * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, e.g. `options` are empty).\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Text to display when in a loading state.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Loading…'\n */\n loadingText: PropTypes.node,\n\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n\n /**\n * Text to display when there are no options.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'No options'\n */\n noOptionsText: PropTypes.node,\n\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {T|T[]} value The new value of the component.\n * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n * @param {string} [details]\n */\n onChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n */\n onClose: PropTypes.func,\n\n /**\n * Callback fired when the highlight option changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {T} option The highlighted option.\n * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`.\n */\n onHighlightChange: PropTypes.func,\n\n /**\n * Callback fired when the input value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} value The new value of the text input.\n * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n */\n onInputChange: PropTypes.func,\n\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n\n /**\n * If `true`, the popup will open on input focus.\n * @default false\n */\n openOnFocus: PropTypes.bool,\n\n /**\n * Override the default text for the *open popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Open'\n */\n openText: PropTypes.string,\n\n /**\n * Array of options.\n */\n options: PropTypes.array.isRequired,\n\n /**\n * The component used to render the body of the popup.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n\n /**\n * The component used to position the popup.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n\n /**\n * The icon to display in place of the default popup icon.\n * @default \n */\n popupIcon: PropTypes.node,\n\n /**\n * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Render the group.\n *\n * @param {AutocompleteRenderGroupParams} params The group to render.\n * @returns {ReactNode}\n */\n renderGroup: PropTypes.func,\n\n /**\n * Render the input.\n *\n * @param {object} params\n * @returns {ReactNode}\n */\n renderInput: PropTypes.func.isRequired,\n\n /**\n * Render the option, use `getOptionLabel` by default.\n *\n * @param {object} props The props to apply on the li element.\n * @param {T} option The option to render.\n * @param {object} state The state of the component.\n * @returns {ReactNode}\n */\n renderOption: PropTypes.func,\n\n /**\n * Render the selected value.\n *\n * @param {T[]} value The `value` provided to the component.\n * @param {function} getTagProps A tag props getter.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderTags: PropTypes.func,\n\n /**\n * If `true`, the input's text is selected on focus.\n * It helps the user clear the selected value.\n * @default !props.freeSolo\n */\n selectOnFocus: PropTypes.bool,\n\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The value of the autocomplete.\n *\n * The value must have reference equality with the option in order to be selected.\n * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n */\n value: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n }\n\n return null;\n })\n} : void 0;\nexport default Autocomplete;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getBackdropUtilityClass(slot) {\n return generateUtilityClass('MuiBackdrop', slot);\n}\nconst backdropClasses = generateUtilityClasses('MuiBackdrop', ['root', 'invisible']);\nexport default backdropClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"component\", \"components\", \"componentsProps\", \"className\", \"invisible\", \"open\", \"transitionDuration\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Fade from '../Fade';\nimport { getBackdropUtilityClass } from './backdropClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n invisible\n } = ownerState;\n const slots = {\n root: ['root', invisible && 'invisible']\n };\n return composeClasses(slots, getBackdropUtilityClass, classes);\n};\n\nconst BackdropRoot = styled('div', {\n name: 'MuiBackdrop',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.invisible && styles.invisible];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n}, ownerState.invisible && {\n backgroundColor: 'transparent'\n}));\nconst Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(inProps, ref) {\n var _components$Root, _componentsProps$root;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiBackdrop'\n });\n\n const {\n children,\n component = 'div',\n components = {},\n componentsProps = {},\n className,\n invisible = false,\n open,\n transitionDuration,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Fade\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n component,\n invisible\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: open,\n timeout: transitionDuration\n }, other, {\n children: /*#__PURE__*/_jsx(BackdropRoot, {\n \"aria-hidden\": true,\n as: (_components$Root = components.Root) != null ? _components$Root : component,\n className: clsx(classes.root, className),\n ownerState: _extends({}, ownerState, (_componentsProps$root = componentsProps.root) == null ? void 0 : _componentsProps$root.ownerState),\n classes: classes,\n ref: ref,\n children: children\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The components used for each slot inside the Backdrop.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside the Backdrop.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.object\n }),\n\n /**\n * If `true`, the backdrop is invisible.\n * It can be used when rendering a popover or a custom select component.\n * @default false\n */\n invisible: PropTypes.bool,\n\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Backdrop;","import * as React from 'react';\n\nconst usePreviousProps = value => {\n const ref = React.useRef({});\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\n\nexport default usePreviousProps;","import generateUtilityClasses from '../generateUtilityClasses';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBadgeUnstyledUtilityClass(slot) {\n return generateUtilityClass('BaseBadge', slot);\n}\nconst badgeUnstyledClasses = generateUtilityClasses('BaseBadge', ['root', 'badge', 'invisible']);\nexport default badgeUnstyledClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"badgeContent\", \"component\", \"children\", \"className\", \"components\", \"componentsProps\", \"invisible\", \"max\", \"showZero\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '../composeClasses';\nimport appendOwnerState from '../utils/appendOwnerState';\nimport useBadge from './useBadge';\nimport { getBadgeUnstyledUtilityClass } from './badgeUnstyledClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n invisible\n } = ownerState;\n const slots = {\n root: ['root'],\n badge: ['badge', invisible && 'invisible']\n };\n return composeClasses(slots, getBadgeUnstyledUtilityClass, undefined);\n};\n\nconst BadgeUnstyled = /*#__PURE__*/React.forwardRef(function BadgeUnstyled(props, ref) {\n const {\n component,\n children,\n className,\n components = {},\n componentsProps = {},\n max: maxProp = 99,\n showZero = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const {\n badgeContent,\n max,\n displayValue,\n invisible\n } = useBadge(_extends({}, props, {\n max: maxProp\n }));\n\n const ownerState = _extends({}, props, {\n badgeContent,\n invisible,\n max,\n showZero\n });\n\n const classes = useUtilityClasses(ownerState);\n const Root = component || components.Root || 'span';\n const rootProps = appendOwnerState(Root, _extends({}, other, componentsProps.root), ownerState);\n const Badge = components.Badge || 'span';\n const badgeProps = appendOwnerState(Badge, componentsProps.badge, ownerState);\n return /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {\n ref: ref\n }, other, {\n className: clsx(classes.root, rootProps.className, className),\n children: [children, /*#__PURE__*/_jsx(Badge, _extends({}, badgeProps, {\n className: clsx(classes.badge, badgeProps.className),\n children: displayValue\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? BadgeUnstyled.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content rendered within the badge.\n */\n badgeContent: PropTypes.node,\n\n /**\n * The badge will be added relative to this node.\n */\n children: PropTypes.node,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The components used for each slot inside the Badge.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Badge: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside the Badge.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n badge: PropTypes.object,\n root: PropTypes.object\n }),\n\n /**\n * If `true`, the badge is invisible.\n * @default false\n */\n invisible: PropTypes.bool,\n\n /**\n * Max count to show.\n * @default 99\n */\n max: PropTypes.number,\n\n /**\n * Controls whether the badge is hidden when `badgeContent` is zero.\n * @default false\n */\n showZero: PropTypes.bool\n} : void 0;\nexport default BadgeUnstyled;","import { usePreviousProps } from '@mui/utils';\nexport default function useBadge(props) {\n const {\n badgeContent: badgeContentProp,\n invisible: invisibleProp = false,\n max: maxProp = 99,\n showZero = false\n } = props;\n const prevProps = usePreviousProps({\n badgeContent: badgeContentProp,\n max: maxProp\n });\n let invisible = invisibleProp;\n\n if (invisibleProp === false && badgeContentProp === 0 && !showZero) {\n invisible = true;\n }\n\n const {\n badgeContent,\n max = maxProp\n } = invisible ? prevProps : props;\n const displayValue = badgeContent && Number(badgeContent) > max ? `${max}+` : badgeContent;\n return {\n badgeContent,\n invisible,\n max,\n displayValue\n };\n}","import generateUtilityClasses from '@mui/base/generateUtilityClasses';\nimport generateUtilityClass from '@mui/base/generateUtilityClass';\nexport function getBadgeUtilityClass(slot) {\n return generateUtilityClass('MuiBadge', slot);\n}\nconst badgeClasses = generateUtilityClasses('MuiBadge', ['root', 'badge', 'dot', 'standard', 'anchorOriginTopRight', 'anchorOriginBottomRight', 'anchorOriginTopLeft', 'anchorOriginBottomLeft', 'invisible', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'overlapRectangular', 'overlapCircular', // TODO: v6 remove the overlap value from these class keys\n'anchorOriginTopLeftCircular', 'anchorOriginTopLeftRectangular', 'anchorOriginTopRightCircular', 'anchorOriginTopRightRectangular', 'anchorOriginBottomLeftCircular', 'anchorOriginBottomLeftRectangular', 'anchorOriginBottomRightCircular', 'anchorOriginBottomRightRectangular']);\nexport default badgeClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"anchorOrigin\", \"className\", \"component\", \"components\", \"componentsProps\", \"overlap\", \"color\", \"invisible\", \"max\", \"badgeContent\", \"showZero\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { usePreviousProps } from '@mui/utils';\nimport composeClasses from '@mui/base/composeClasses';\nimport BadgeUnstyled from '@mui/base/BadgeUnstyled';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport shouldSpreadAdditionalProps from '../utils/shouldSpreadAdditionalProps';\nimport capitalize from '../utils/capitalize';\nimport badgeClasses, { getBadgeUtilityClass } from './badgeClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RADIUS_STANDARD = 10;\nconst RADIUS_DOT = 4;\n\nconst useUtilityClasses = ownerState => {\n const {\n color,\n anchorOrigin,\n invisible,\n overlap,\n variant,\n classes = {}\n } = ownerState;\n const slots = {\n root: ['root'],\n badge: ['badge', variant, invisible && 'invisible', `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize(anchorOrigin.vertical)}${capitalize(anchorOrigin.horizontal)}${capitalize(overlap)}`, `overlap${capitalize(overlap)}`, color !== 'default' && `color${capitalize(color)}`]\n };\n return composeClasses(slots, getBadgeUtilityClass, classes);\n};\n\nconst BadgeRoot = styled('span', {\n name: 'MuiBadge',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n position: 'relative',\n display: 'inline-flex',\n // For correct alignment with the text.\n verticalAlign: 'middle',\n flexShrink: 0\n});\nconst BadgeBadge = styled('span', {\n name: 'MuiBadge',\n slot: 'Badge',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.badge, styles[ownerState.variant], styles[`anchorOrigin${capitalize(ownerState.anchorOrigin.vertical)}${capitalize(ownerState.anchorOrigin.horizontal)}${capitalize(ownerState.overlap)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.invisible && styles.invisible];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignContent: 'center',\n alignItems: 'center',\n position: 'absolute',\n boxSizing: 'border-box',\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(12),\n minWidth: RADIUS_STANDARD * 2,\n lineHeight: 1,\n padding: '0 6px',\n height: RADIUS_STANDARD * 2,\n borderRadius: RADIUS_STANDARD,\n zIndex: 1,\n // Render the badge on top of potential ripples.\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.enteringScreen\n })\n}, ownerState.color !== 'default' && {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n color: (theme.vars || theme).palette[ownerState.color].contrastText\n}, ownerState.variant === 'dot' && {\n borderRadius: RADIUS_DOT,\n height: RADIUS_DOT * 2,\n minWidth: RADIUS_DOT * 2,\n padding: 0\n}, ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular' && {\n top: 0,\n right: 0,\n transform: 'scale(1) translate(50%, -50%)',\n transformOrigin: '100% 0%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(50%, -50%)'\n }\n}, ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'rectangular' && {\n bottom: 0,\n right: 0,\n transform: 'scale(1) translate(50%, 50%)',\n transformOrigin: '100% 100%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(50%, 50%)'\n }\n}, ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular' && {\n top: 0,\n left: 0,\n transform: 'scale(1) translate(-50%, -50%)',\n transformOrigin: '0% 0%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(-50%, -50%)'\n }\n}, ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'rectangular' && {\n bottom: 0,\n left: 0,\n transform: 'scale(1) translate(-50%, 50%)',\n transformOrigin: '0% 100%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(-50%, 50%)'\n }\n}, ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular' && {\n top: '14%',\n right: '14%',\n transform: 'scale(1) translate(50%, -50%)',\n transformOrigin: '100% 0%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(50%, -50%)'\n }\n}, ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'right' && ownerState.overlap === 'circular' && {\n bottom: '14%',\n right: '14%',\n transform: 'scale(1) translate(50%, 50%)',\n transformOrigin: '100% 100%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(50%, 50%)'\n }\n}, ownerState.anchorOrigin.vertical === 'top' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular' && {\n top: '14%',\n left: '14%',\n transform: 'scale(1) translate(-50%, -50%)',\n transformOrigin: '0% 0%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(-50%, -50%)'\n }\n}, ownerState.anchorOrigin.vertical === 'bottom' && ownerState.anchorOrigin.horizontal === 'left' && ownerState.overlap === 'circular' && {\n bottom: '14%',\n left: '14%',\n transform: 'scale(1) translate(-50%, 50%)',\n transformOrigin: '0% 100%',\n [`&.${badgeClasses.invisible}`]: {\n transform: 'scale(0) translate(-50%, 50%)'\n }\n}, ownerState.invisible && {\n transition: theme.transitions.create('transform', {\n easing: theme.transitions.easing.easeInOut,\n duration: theme.transitions.duration.leavingScreen\n })\n}));\nconst Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {\n var _componentsProps$root, _componentsProps$root2, _componentsProps$badg, _componentsProps$badg2;\n\n const props = useThemeProps({\n props: inProps,\n name: 'MuiBadge'\n });\n\n const {\n anchorOrigin: anchorOriginProp = {\n vertical: 'top',\n horizontal: 'right'\n },\n className,\n component = 'span',\n components = {},\n componentsProps = {},\n overlap: overlapProp = 'rectangular',\n color: colorProp = 'default',\n invisible: invisibleProp = false,\n max,\n badgeContent: badgeContentProp,\n showZero = false,\n variant: variantProp = 'standard'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const prevProps = usePreviousProps({\n anchorOrigin: anchorOriginProp,\n color: colorProp,\n overlap: overlapProp,\n variant: variantProp\n });\n let invisible = invisibleProp;\n\n if (invisibleProp === false && (badgeContentProp === 0 && !showZero || badgeContentProp == null && variantProp !== 'dot')) {\n invisible = true;\n }\n\n const {\n color = colorProp,\n overlap = overlapProp,\n anchorOrigin = anchorOriginProp,\n variant = variantProp\n } = invisible ? prevProps : props;\n\n const ownerState = _extends({}, props, {\n anchorOrigin,\n invisible,\n color,\n overlap,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n let displayValue;\n\n if (variant !== 'dot') {\n displayValue = badgeContentProp && Number(badgeContentProp) > max ? `${max}+` : badgeContentProp;\n }\n\n return /*#__PURE__*/_jsx(BadgeUnstyled, _extends({\n invisible: invisibleProp,\n badgeContent: displayValue,\n showZero: showZero,\n max: max\n }, other, {\n components: _extends({\n Root: BadgeRoot,\n Badge: BadgeBadge\n }, components),\n className: clsx(className, classes.root, (_componentsProps$root = componentsProps.root) == null ? void 0 : _componentsProps$root.className),\n componentsProps: {\n root: _extends({}, componentsProps.root, shouldSpreadAdditionalProps(components.Root) && {\n as: component,\n ownerState: _extends({}, (_componentsProps$root2 = componentsProps.root) == null ? void 0 : _componentsProps$root2.ownerState, {\n anchorOrigin,\n color,\n overlap,\n variant\n })\n }),\n badge: _extends({}, componentsProps.badge, {\n className: clsx(classes.badge, (_componentsProps$badg = componentsProps.badge) == null ? void 0 : _componentsProps$badg.className)\n }, shouldSpreadAdditionalProps(components.Badge) && {\n ownerState: _extends({}, (_componentsProps$badg2 = componentsProps.badge) == null ? void 0 : _componentsProps$badg2.ownerState, {\n anchorOrigin,\n color,\n overlap,\n variant\n })\n })\n },\n ref: ref\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Badge.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The anchor of the badge.\n * @default {\n * vertical: 'top',\n * horizontal: 'right',\n * }\n */\n anchorOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOf(['left', 'right']).isRequired,\n vertical: PropTypes.oneOf(['bottom', 'top']).isRequired\n }),\n\n /**\n * The content rendered within the badge.\n */\n badgeContent: PropTypes.node,\n\n /**\n * The badge will be added relative to this node.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'default'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The components used for each slot inside the Badge.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Badge: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n\n /**\n * The props used for each slot inside the Badge.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n badge: PropTypes.object,\n root: PropTypes.object\n }),\n\n /**\n * If `true`, the badge is invisible.\n * @default false\n */\n invisible: PropTypes.bool,\n\n /**\n * Max count to show.\n * @default 99\n */\n max: PropTypes.number,\n\n /**\n * Wrapped shape the badge should overlap.\n * @default 'rectangular'\n */\n overlap: PropTypes.oneOf(['circular', 'rectangular']),\n\n /**\n * Controls whether the badge is hidden when `badgeContent` is zero.\n * @default false\n */\n showZero: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The variant to use.\n * @default 'standard'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['dot', 'standard']), PropTypes.string])\n} : void 0;\nexport default Badge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport defaultStyleFunctionSx, { extendSxProp } from './styleFunctionSx';\nimport useTheme from './useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName,\n styleFunctionSx = defaultStyleFunctionSx\n } = options;\n const BoxRoot = styled('div')(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n\n const _extendSxProp = extendSxProp(inProps),\n {\n className,\n component = 'div'\n } = _extendSxProp,\n other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded);\n\n return /*#__PURE__*/_jsx(BoxRoot, _extends({\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: theme\n }, other));\n });\n return Box;\n}","import { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '../className';\nimport { createTheme } from '../styles';\nconst defaultTheme = createTheme();\nconst Box = createBox({\n defaultTheme,\n defaultClassName: 'MuiBox-root',\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * @ignore\n */\n children: PropTypes.node,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getButtonUtilityClass(slot) {\n return generateUtilityClass('MuiButton', slot);\n}\nconst buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);\nexport default buttonClasses;","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = /*#__PURE__*/React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ButtonGroupContext.displayName = 'ButtonGroupContext';\n}\n\nexport default ButtonGroupContext;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"color\", \"component\", \"className\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { internal_resolveProps as resolveProps } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport buttonClasses, { getButtonUtilityClass } from './buttonClasses';\nimport ButtonGroupContext from '../ButtonGroup/ButtonGroupContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n color,\n disableElevation,\n fullWidth,\n size,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, `${variant}${capitalize(color)}`, `size${capitalize(size)}`, `${variant}Size${capitalize(size)}`, color === 'inherit' && 'colorInherit', disableElevation && 'disableElevation', fullWidth && 'fullWidth'],\n label: ['label'],\n startIcon: ['startIcon', `iconSize${capitalize(size)}`],\n endIcon: ['endIcon', `iconSize${capitalize(size)}`]\n };\n const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\nconst commonIconStyles = ownerState => _extends({}, ownerState.size === 'small' && {\n '& > *:nth-of-type(1)': {\n fontSize: 18\n }\n}, ownerState.size === 'medium' && {\n '& > *:nth-of-type(1)': {\n fontSize: 20\n }\n}, ownerState.size === 'large' && {\n '& > *:nth-of-type(1)': {\n fontSize: 22\n }\n});\n\nconst ButtonRoot = styled(ButtonBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color)}`], styles[`size${capitalize(ownerState.size)}`], styles[`${ownerState.variant}Size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.disableElevation && styles.disableElevation, ownerState.fullWidth && styles.fullWidth];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$palette$getCon, _theme$palette;\n\n return _extends({}, theme.typography.button, {\n minWidth: 64,\n padding: '6px 16px',\n borderRadius: (theme.vars || theme).shape.borderRadius,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n duration: theme.transitions.duration.short\n }),\n '&:hover': _extends({\n textDecoration: 'none',\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n border: `1px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'contained' && {\n backgroundColor: (theme.vars || theme).palette.grey.A100,\n boxShadow: (theme.vars || theme).shadows[4],\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n boxShadow: (theme.vars || theme).shadows[2],\n backgroundColor: (theme.vars || theme).palette.grey[300]\n }\n }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n }\n }),\n '&:active': _extends({}, ownerState.variant === 'contained' && {\n boxShadow: (theme.vars || theme).shadows[8]\n }),\n [`&.${buttonClasses.focusVisible}`]: _extends({}, ownerState.variant === 'contained' && {\n boxShadow: (theme.vars || theme).shadows[6]\n }),\n [`&.${buttonClasses.disabled}`]: _extends({\n color: (theme.vars || theme).palette.action.disabled\n }, ownerState.variant === 'outlined' && {\n border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n }, ownerState.variant === 'outlined' && ownerState.color === 'secondary' && {\n border: `1px solid ${(theme.vars || theme).palette.action.disabled}`\n }, ownerState.variant === 'contained' && {\n color: (theme.vars || theme).palette.action.disabled,\n boxShadow: (theme.vars || theme).shadows[0],\n backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n })\n }, ownerState.variant === 'text' && {\n padding: '6px 8px'\n }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].main\n }, ownerState.variant === 'outlined' && {\n padding: '5px 15px',\n border: '1px solid currentColor'\n }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].main,\n border: theme.vars ? `1px solid rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : `1px solid ${alpha(theme.palette[ownerState.color].main, 0.5)}`\n }, ownerState.variant === 'contained' && {\n color: theme.vars ? // this is safe because grey does not change between default light/dark mode\n theme.vars.palette.text.primary : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),\n backgroundColor: (theme.vars || theme).palette.grey[300],\n boxShadow: (theme.vars || theme).shadows[2]\n }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].contrastText,\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n }, ownerState.color === 'inherit' && {\n color: 'inherit',\n borderColor: 'currentColor'\n }, ownerState.size === 'small' && ownerState.variant === 'text' && {\n padding: '4px 5px',\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && ownerState.variant === 'text' && {\n padding: '8px 11px',\n fontSize: theme.typography.pxToRem(15)\n }, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n padding: '3px 9px',\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && ownerState.variant === 'outlined' && {\n padding: '7px 21px',\n fontSize: theme.typography.pxToRem(15)\n }, ownerState.size === 'small' && ownerState.variant === 'contained' && {\n padding: '4px 10px',\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && ownerState.variant === 'contained' && {\n padding: '8px 22px',\n fontSize: theme.typography.pxToRem(15)\n }, ownerState.fullWidth && {\n width: '100%'\n });\n}, ({\n ownerState\n}) => ownerState.disableElevation && {\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none'\n },\n [`&.${buttonClasses.focusVisible}`]: {\n boxShadow: 'none'\n },\n '&:active': {\n boxShadow: 'none'\n },\n [`&.${buttonClasses.disabled}`]: {\n boxShadow: 'none'\n }\n});\nconst ButtonStartIcon = styled('span', {\n name: 'MuiButton',\n slot: 'StartIcon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.startIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inherit',\n marginRight: 8,\n marginLeft: -4\n}, ownerState.size === 'small' && {\n marginLeft: -2\n}, commonIconStyles(ownerState)));\nconst ButtonEndIcon = styled('span', {\n name: 'MuiButton',\n slot: 'EndIcon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.endIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inherit',\n marginRight: -4,\n marginLeft: 8\n}, ownerState.size === 'small' && {\n marginRight: -2\n}, commonIconStyles(ownerState)));\nconst Button = /*#__PURE__*/React.forwardRef(function Button(inProps, ref) {\n // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n const contextProps = React.useContext(ButtonGroupContext);\n const resolvedProps = resolveProps(contextProps, inProps);\n const props = useThemeProps({\n props: resolvedProps,\n name: 'MuiButton'\n });\n\n const {\n children,\n color = 'primary',\n component = 'button',\n className,\n disabled = false,\n disableElevation = false,\n disableFocusRipple = false,\n endIcon: endIconProp,\n focusVisibleClassName,\n fullWidth = false,\n size = 'medium',\n startIcon: startIconProp,\n type,\n variant = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n disableElevation,\n disableFocusRipple,\n fullWidth,\n size,\n type,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n\n const startIcon = startIconProp && /*#__PURE__*/_jsx(ButtonStartIcon, {\n className: classes.startIcon,\n ownerState: ownerState,\n children: startIconProp\n });\n\n const endIcon = endIconProp && /*#__PURE__*/_jsx(ButtonEndIcon, {\n className: classes.endIcon,\n ownerState: ownerState,\n children: endIconProp\n });\n\n return /*#__PURE__*/_jsxs(ButtonRoot, _extends({\n ownerState: ownerState,\n className: clsx(className, contextProps.className),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ref: ref,\n type: type\n }, other, {\n classes: classes,\n children: [startIcon, children, endIcon]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning']), PropTypes.string]),\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true`, no elevation is used.\n * @default false\n */\n disableElevation: PropTypes.bool,\n\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n\n /**\n * Element placed after the children.\n */\n endIcon: PropTypes.node,\n\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * If `true`, the button will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n\n /**\n * The URL to link to when the button is clicked.\n * If defined, an `a` element will be used as the root node.\n */\n href: PropTypes.string,\n\n /**\n * The size of the component.\n * `small` is equivalent to the dense button styling.\n * @default 'medium'\n */\n size: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n\n /**\n * Element placed before the children.\n */\n startIcon: PropTypes.node,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n\n /**\n * The variant to use.\n * @default 'text'\n */\n variant: PropTypes\n /* @typescript-to-proptypes-ignore */\n .oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Button;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n\n Object.keys(defaultProps).forEach(propName => {\n if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\n\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\n\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`));\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n}); // This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\n\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})(_t4 || (_t4 = _`\n opacity: 0;\n position: absolute;\n\n &.${0} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n &.${0} {\n animation-duration: ${0}ms;\n }\n\n & .${0} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${0} {\n opacity: 0;\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n & .${0} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${0};\n animation-duration: 2500ms;\n animation-timing-function: ${0};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n theme\n}) => theme.transitions.easing.easeInOut);\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\n\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n\n const {\n center: centerProp = false,\n classes = {},\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]); // Used to filter out mouse emulated events on mobile.\n\n const ignoringMouseDown = React.useRef(false); // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n\n const startTimer = React.useRef(null); // This is the hook called once the previous timeout is ready.\n\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n React.useEffect(() => {\n return () => {\n clearTimeout(startTimer.current);\n };\n }, []);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n\n } = options;\n\n if (event.type === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n\n if (event.type === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n }; // Get the size of the ripple\n\n let rippleX;\n let rippleY;\n let rippleSize;\n\n if (center || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3); // For some reason the animation is broken on Mobile Chrome if the size is even.\n\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n } // Touche devices\n\n\n if (event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }; // Delay the execution of the ripple effect.\n\n\n startTimer.current = setTimeout(() => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n clearTimeout(startTimer.current); // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n\n if (event.type === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(() => {\n stop(event, cb);\n });\n return;\n }\n\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n className: clsx(classes.root, touchRippleClasses.root, className),\n ref: container\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@mui/utils';\nimport composeClasses from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n\n return composedClasses;\n};\n\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n\n },\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\n\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const [mountedState, setMountedState] = React.useState(false);\n React.useEffect(() => {\n setMountedState(true);\n }, []);\n const enableTouchRipple = mountedState && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple && mountedState) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, mountedState]);\n\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n\n const ignore = skipRippleAction;\n\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n\n return true;\n });\n }\n\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n\n handleFocusVisible(event);\n\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n\n if (onFocus) {\n onFocus(event);\n }\n });\n\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n\n\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n } // Keyboard accessibility for non interactive elements\n\n\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a \n * \n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","export default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"reduceAnimations\", \"slideDirection\", \"transKey\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersSlideTransition', ['root', 'slideEnter-left', 'slideEnter-right', 'slideEnterActive', 'slideEnterActive', 'slideExit', 'slideExitActiveLeft-left', 'slideExitActiveLeft-right']);\nexport const slideAnimationDuration = 350;\nconst PickersSlideTransitionRoot = styled(TransitionGroup)(({\n theme\n}) => {\n const slideTransition = theme.transitions.create('transform', {\n duration: slideAnimationDuration,\n easing: 'cubic-bezier(0.35, 0.8, 0.4, 1)'\n });\n return {\n display: 'block',\n position: 'relative',\n overflowX: 'hidden',\n '& > *': {\n position: 'absolute',\n top: 0,\n right: 0,\n left: 0\n },\n [`& .${classes['slideEnter-left']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n zIndex: 1\n },\n [`& .${classes['slideEnter-right']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n zIndex: 1\n },\n [`& .${classes.slideEnterActive}`]: {\n transform: 'translate(0%)',\n transition: slideTransition\n },\n [`& .${classes.slideExit}`]: {\n transform: 'translate(0%)'\n },\n [`& .${classes['slideExitActiveLeft-left']}`]: {\n willChange: 'transform',\n transform: 'translate(-100%)',\n transition: slideTransition,\n zIndex: 0\n },\n [`& .${classes['slideExitActiveLeft-right']}`]: {\n willChange: 'transform',\n transform: 'translate(100%)',\n transition: slideTransition,\n zIndex: 0\n }\n };\n});\n/**\n * @ignore - do not document.\n */\n\nexport const PickersSlideTransition = _ref => {\n let {\n children,\n className,\n reduceAnimations,\n slideDirection,\n transKey\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n if (reduceAnimations) {\n return /*#__PURE__*/_jsx(\"div\", {\n className: clsx(classes.root, className),\n children: children\n });\n }\n\n const transitionClasses = {\n exit: classes.slideExit,\n enterActive: classes.slideEnterActive,\n enter: classes[`slideEnter-${slideDirection}`],\n exitActive: classes[`slideExitActiveLeft-${slideDirection}`]\n };\n return /*#__PURE__*/_jsx(PickersSlideTransitionRoot, {\n className: clsx(classes.root, className),\n childFactory: element => /*#__PURE__*/React.cloneElement(element, {\n classNames: transitionClasses\n }),\n children: /*#__PURE__*/_jsx(CSSTransition, _extends({\n mountOnEnter: true,\n unmountOnExit: true,\n timeout: slideAnimationDuration,\n classNames: transitionClasses\n }, other, {\n children: children\n }), transKey)\n });\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\nimport { PickersDay } from '../PickersDay/PickersDay';\nimport { useUtils, useNow } from '../internals/hooks/useUtils';\nimport { DAY_SIZE, DAY_MARGIN } from '../internals/constants/dimensions';\nimport { PickersSlideTransition } from './PickersSlideTransition';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst weeksContainerHeight = (DAY_SIZE + DAY_MARGIN * 4) * 6;\nconst PickersCalendarDayHeader = styled('div')({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center'\n});\nconst PickersCalendarWeekDayLabel = styled(Typography)(({\n theme\n}) => ({\n width: 36,\n height: 40,\n margin: '0 2px',\n textAlign: 'center',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: theme.palette.text.secondary\n}));\nconst PickersCalendarLoadingContainer = styled('div')({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarSlideTransition = styled(PickersSlideTransition)({\n minHeight: weeksContainerHeight\n});\nconst PickersCalendarWeekContainer = styled('div')({\n overflow: 'hidden'\n});\nconst PickersCalendarWeek = styled('div')({\n margin: `${DAY_MARGIN}px 0`,\n display: 'flex',\n justifyContent: 'center'\n});\n/**\n * @ignore - do not document.\n */\n\nexport function DayPicker(props) {\n const {\n allowSameDateSelection,\n autoFocus,\n onFocusedDayChange: changeFocusedDay,\n className,\n currentMonth,\n date,\n disabled,\n disableHighlightToday,\n focusedDay,\n isDateDisabled,\n isMonthSwitchingAnimating,\n loading,\n onChange,\n onMonthSwitchingAnimationEnd,\n readOnly,\n reduceAnimations,\n renderDay,\n renderLoading = () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n }),\n showDaysOutsideCurrentMonth,\n slideDirection,\n TransitionProps\n } = props;\n const now = useNow();\n const utils = useUtils();\n const handleDaySelect = React.useCallback((day, isFinish = 'finish') => {\n if (readOnly) {\n return;\n } // TODO possibly buggy line figure out and add tests\n\n\n const finalDate = Array.isArray(date) ? day : utils.mergeDateAndTime(day, date || now);\n onChange(finalDate, isFinish);\n }, [date, now, onChange, readOnly, utils]);\n const currentMonthNumber = utils.getMonth(currentMonth);\n const selectedDates = (Array.isArray(date) ? date : [date]).filter(Boolean).map(selectedDateItem => selectedDateItem && utils.startOfDay(selectedDateItem)); // need a new ref whenever the `key` of the transition changes: http://reactcommunity.org/react-transition-group/transition/#Transition-prop-nodeRef.\n\n const transitionKey = currentMonthNumber; // eslint-disable-next-line react-hooks/exhaustive-deps\n\n const slideNodeRef = React.useMemo(() => /*#__PURE__*/React.createRef(), [transitionKey]);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(PickersCalendarDayHeader, {\n children: utils.getWeekdays().map((day, i) => /*#__PURE__*/_jsx(PickersCalendarWeekDayLabel, {\n \"aria-hidden\": true,\n variant: \"caption\",\n children: day.charAt(0).toUpperCase()\n }, day + i.toString()))\n }), loading ? /*#__PURE__*/_jsx(PickersCalendarLoadingContainer, {\n children: renderLoading()\n }) : /*#__PURE__*/_jsx(PickersCalendarSlideTransition, _extends({\n transKey: transitionKey,\n onExited: onMonthSwitchingAnimationEnd,\n reduceAnimations: reduceAnimations,\n slideDirection: slideDirection,\n className: className\n }, TransitionProps, {\n nodeRef: slideNodeRef,\n children: /*#__PURE__*/_jsx(PickersCalendarWeekContainer, {\n ref: slideNodeRef,\n role: \"grid\",\n children: utils.getWeekArray(currentMonth).map(week => /*#__PURE__*/_jsx(PickersCalendarWeek, {\n role: \"row\",\n children: week.map(day => {\n const pickersDayProps = {\n key: day == null ? void 0 : day.toString(),\n day,\n isAnimating: isMonthSwitchingAnimating,\n disabled: disabled || isDateDisabled(day),\n allowSameDateSelection,\n autoFocus: autoFocus && focusedDay !== null && utils.isSameDay(day, focusedDay),\n today: utils.isSameDay(day, now),\n outsideCurrentMonth: utils.getMonth(day) !== currentMonthNumber,\n selected: selectedDates.some(selectedDate => selectedDate && utils.isSameDay(selectedDate, day)),\n disableHighlightToday,\n showDaysOutsideCurrentMonth,\n onDayFocus: changeFocusedDay,\n onDaySelect: handleDaySelect\n };\n return renderDay ? renderDay(day, selectedDates, pickersDayProps) : /*#__PURE__*/_jsx(\"div\", {\n role: \"cell\",\n children: /*#__PURE__*/_jsx(PickersDay, _extends({}, pickersDayProps))\n }, pickersDayProps.key);\n })\n }, `week-${week[0]}`))\n })\n }))]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Fade from '@mui/material/Fade';\nimport { styled } from '@mui/material/styles';\nimport IconButton from '@mui/material/IconButton';\nimport { useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { ArrowDropDown } from '../internals/components/icons';\nimport { PickersArrowSwitcher } from '../internals/components/PickersArrowSwitcher';\nimport { usePreviousMonthDisabled, useNextMonthDisabled } from '../internals/hooks/date-helpers-hooks';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersCalendarHeaderRoot = styled('div')({\n display: 'flex',\n alignItems: 'center',\n marginTop: 16,\n marginBottom: 8,\n paddingLeft: 24,\n paddingRight: 12,\n // prevent jumping in safari\n maxHeight: 30,\n minHeight: 30\n});\nconst PickersCalendarHeaderLabel = styled('div')(({\n theme\n}) => _extends({\n display: 'flex',\n maxHeight: 30,\n overflow: 'hidden',\n alignItems: 'center',\n cursor: 'pointer',\n marginRight: 'auto'\n}, theme.typography.body1, {\n fontWeight: theme.typography.fontWeightMedium\n}));\nconst PickersCalendarHeaderLabelItem = styled('div')({\n marginRight: 6\n});\nconst PickersCalendarHeaderSwitchViewButton = styled(IconButton)({\n marginRight: 'auto'\n});\nconst PickersCalendarHeaderSwitchView = styled(ArrowDropDown)(({\n theme,\n ownerState\n}) => _extends({\n willChange: 'transform',\n transition: theme.transitions.create('transform'),\n transform: 'rotate(0deg)'\n}, ownerState.openView === 'year' && {\n transform: 'rotate(180deg)'\n}));\n\nfunction getSwitchingViewAriaText(view) {\n return view === 'year' ? 'year view is open, switch to calendar view' : 'calendar view is open, switch to year view';\n}\n/**\n * @ignore - do not document.\n */\n\n\nexport function PickersCalendarHeader(props) {\n const {\n components = {},\n componentsProps = {},\n currentMonth: month,\n disabled,\n disableFuture,\n disablePast,\n getViewSwitchingButtonText = getSwitchingViewAriaText,\n leftArrowButtonText = 'Previous month',\n maxDate,\n minDate,\n onMonthChange,\n onViewChange,\n openView: currentView,\n reduceAnimations,\n rightArrowButtonText = 'Next month',\n views\n } = props;\n const utils = useUtils();\n const switchViewButtonProps = componentsProps.switchViewButton || {};\n\n const selectNextMonth = () => onMonthChange(utils.getNextMonth(month), 'left');\n\n const selectPreviousMonth = () => onMonthChange(utils.getPreviousMonth(month), 'right');\n\n const isNextMonthDisabled = useNextMonthDisabled(month, {\n disableFuture: disableFuture || disabled,\n maxDate\n });\n const isPreviousMonthDisabled = usePreviousMonthDisabled(month, {\n disablePast: disablePast || disabled,\n minDate\n });\n\n const handleToggleView = () => {\n if (views.length === 1 || !onViewChange || disabled) {\n return;\n }\n\n if (views.length === 2) {\n onViewChange(views.find(view => view !== currentView) || views[0]);\n } else {\n // switching only between first 2\n const nextIndexToOpen = views.indexOf(currentView) !== 0 ? 0 : 1;\n onViewChange(views[nextIndexToOpen]);\n }\n }; // No need to display more information\n\n\n if (views.length === 1 && views[0] === 'year') {\n return null;\n }\n\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersCalendarHeaderRoot, {\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsxs(PickersCalendarHeaderLabel, {\n role: \"presentation\",\n onClick: handleToggleView,\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(PickersFadeTransitionGroup, {\n reduceAnimations: reduceAnimations,\n transKey: utils.format(month, 'month'),\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabelItem, {\n \"aria-live\": \"polite\",\n ownerState: ownerState,\n children: utils.format(month, 'month')\n })\n }), /*#__PURE__*/_jsx(PickersFadeTransitionGroup, {\n reduceAnimations: reduceAnimations,\n transKey: utils.format(month, 'year'),\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderLabelItem, {\n \"aria-live\": \"polite\",\n ownerState: ownerState,\n children: utils.format(month, 'year')\n })\n }), views.length > 1 && !disabled && /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchViewButton, _extends({\n size: \"small\",\n as: components.SwitchViewButton,\n \"aria-label\": getViewSwitchingButtonText(currentView)\n }, switchViewButtonProps, {\n children: /*#__PURE__*/_jsx(PickersCalendarHeaderSwitchView, {\n as: components.SwitchViewIcon,\n ownerState: ownerState\n })\n }))]\n }), /*#__PURE__*/_jsx(Fade, {\n in: currentView === 'day',\n children: /*#__PURE__*/_jsx(PickersArrowSwitcher, {\n leftArrowButtonText: leftArrowButtonText,\n rightArrowButtonText: rightArrowButtonText,\n components: components,\n componentsProps: componentsProps,\n onLeftClick: selectPreviousMonth,\n onRightClick: selectNextMonth,\n isLeftDisabled: isPreviousMonthDisabled,\n isRightDisabled: isNextMonthDisabled\n })\n })]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport { useForkRef, capitalize } from '@mui/material/utils';\nimport { alpha, styled } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses, generateUtilityClass, generateUtilityClasses } from '@mui/material';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getPickersYearUtilityClass(slot) {\n return generateUtilityClass('PrivatePickersYear', slot);\n}\nexport const pickersYearClasses = generateUtilityClasses('PrivatePickersYear', ['root', 'modeMobile', 'modeDesktop', 'yearButton', 'disabled', 'selected']);\n\nconst useUtilityClasses = ownerState => {\n const {\n wrapperVariant,\n disabled,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', wrapperVariant && `mode${capitalize(wrapperVariant)}`],\n yearButton: ['yearButton', disabled && 'disabled', selected && 'selected']\n };\n return composeClasses(slots, getPickersYearUtilityClass, classes);\n};\n\nconst PickersYearRoot = styled('div')(({\n ownerState\n}) => _extends({\n flexBasis: '33.3%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n}, (ownerState == null ? void 0 : ownerState.wrapperVariant) === 'desktop' && {\n flexBasis: '25%'\n}));\nconst PickersYearButton = styled('button')(({\n theme\n}) => _extends({\n color: 'unset',\n backgroundColor: 'transparent',\n border: 0,\n outline: 0\n}, theme.typography.subtitle1, {\n margin: '8px 0',\n height: 36,\n width: 72,\n borderRadius: 18,\n cursor: 'pointer',\n '&:focus, &:hover': {\n backgroundColor: alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n },\n [`&.${pickersYearClasses.disabled}`]: {\n color: theme.palette.text.secondary\n },\n [`&.${pickersYearClasses.selected}`]: {\n color: theme.palette.primary.contrastText,\n backgroundColor: theme.palette.primary.main,\n '&:focus, &:hover': {\n backgroundColor: theme.palette.primary.dark\n }\n }\n}));\n/**\n * @ignore - internal component.\n */\n\nexport const PickersYear = /*#__PURE__*/React.forwardRef(function PickersYear(props, forwardedRef) {\n const {\n autoFocus,\n className,\n children,\n disabled,\n onClick,\n onKeyDown,\n selected,\n value\n } = props;\n const ref = React.useRef(null);\n const refHandle = useForkRef(ref, forwardedRef);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n\n const ownerState = _extends({}, props, {\n wrapperVariant\n });\n\n const classes = useUtilityClasses(ownerState); // TODO: Can we just forward this to the button?\n\n React.useEffect(() => {\n if (autoFocus) {\n // `ref.current` being `null` would be a bug in MUIu\n ref.current.focus();\n }\n }, [autoFocus]);\n return /*#__PURE__*/_jsx(PickersYearRoot, {\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: /*#__PURE__*/_jsx(PickersYearButton, {\n ref: refHandle,\n disabled: disabled,\n type: \"button\",\n tabIndex: selected ? 0 : -1,\n onClick: event => onClick(event, value),\n onKeyDown: event => onKeyDown(event, value),\n className: classes.yearButton,\n ownerState: ownerState,\n children: children\n })\n });\n});","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport function getYearPickerUtilityClass(slot) {\n return generateUtilityClass('MuiYearPicker', slot);\n}\nexport const yearPickerClasses = generateUtilityClasses('MuiYearPicker', ['root']);","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTheme, styled, useThemeProps as useThemProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport clsx from 'clsx';\nimport { PickersYear } from './PickersYear';\nimport { useUtils, useNow } from '../internals/hooks/useUtils';\nimport { findClosestEnabledDate } from '../internals/utils/date-utils';\nimport { WrapperVariantContext } from '../internals/components/wrappers/WrapperVariantContext';\nimport { getYearPickerUtilityClass } from './yearPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getYearPickerUtilityClass, classes);\n};\n\nconst YearPickerRoot = styled('div', {\n name: 'MuiYearPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflowY: 'auto',\n height: '100%',\n margin: '0 4px'\n});\nexport const YearPicker = /*#__PURE__*/React.forwardRef(function YearPicker(inProps, ref) {\n const props = useThemProps({\n props: inProps,\n name: 'MuiYearPicker'\n });\n const {\n autoFocus,\n className,\n date,\n disabled,\n disableFuture,\n disablePast,\n isDateDisabled,\n maxDate,\n minDate,\n onChange,\n onFocusedDayChange,\n onYearChange,\n readOnly,\n shouldDisableYear\n } = props;\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const now = useNow();\n const theme = useTheme();\n const utils = useUtils();\n const selectedDate = date || now;\n const currentYear = utils.getYear(selectedDate);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const selectedYearRef = React.useRef(null);\n const [focusedYear, setFocusedYear] = React.useState(currentYear);\n\n const handleYearSelection = (event, year, isFinish = 'finish') => {\n if (readOnly) {\n return;\n }\n\n const submitDate = newDate => {\n onChange(newDate, isFinish);\n\n if (onFocusedDayChange) {\n onFocusedDayChange(newDate || now);\n }\n\n if (onYearChange) {\n onYearChange(newDate);\n }\n };\n\n const newDate = utils.setYear(selectedDate, year);\n\n if (isDateDisabled(newDate)) {\n const closestEnabledDate = findClosestEnabledDate({\n utils,\n date: newDate,\n minDate,\n maxDate,\n disablePast: Boolean(disablePast),\n disableFuture: Boolean(disableFuture),\n shouldDisableDate: isDateDisabled\n });\n submitDate(closestEnabledDate || now);\n } else {\n submitDate(newDate);\n }\n };\n\n const focusYear = React.useCallback(year => {\n if (!isDateDisabled(utils.setYear(selectedDate, year))) {\n setFocusedYear(year);\n }\n }, [selectedDate, isDateDisabled, utils]);\n const yearsInRow = wrapperVariant === 'desktop' ? 4 : 3;\n\n const handleKeyDown = (event, year) => {\n switch (event.key) {\n case 'ArrowUp':\n focusYear(year - yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n focusYear(year + yearsInRow);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n focusYear(year + (theme.direction === 'ltr' ? -1 : 1));\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n focusYear(year + (theme.direction === 'ltr' ? 1 : -1));\n event.preventDefault();\n break;\n\n default:\n break;\n }\n };\n\n return /*#__PURE__*/_jsx(YearPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: utils.getYearRange(minDate, maxDate).map(year => {\n const yearNumber = utils.getYear(year);\n const selected = yearNumber === currentYear;\n return /*#__PURE__*/_jsx(PickersYear, {\n selected: selected,\n value: yearNumber,\n onClick: handleYearSelection,\n onKeyDown: handleKeyDown,\n autoFocus: autoFocus && yearNumber === focusedYear,\n ref: selected ? selectedYearRef : undefined,\n disabled: disabled || disablePast && utils.isBeforeYear(year, now) || disableFuture && utils.isAfterYear(year, now) || shouldDisableYear && shouldDisableYear(year),\n children: utils.format(year, 'year')\n }, utils.format(year, 'year'));\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? YearPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n date: PropTypes.any,\n disabled: PropTypes.bool,\n disableFuture: PropTypes.bool,\n disablePast: PropTypes.bool,\n isDateDisabled: PropTypes.func.isRequired,\n maxDate: PropTypes.any.isRequired,\n minDate: PropTypes.any.isRequired,\n onChange: PropTypes.func.isRequired,\n onFocusedDayChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n readOnly: PropTypes.bool,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @param {TDate} year The year to test.\n * @returns {boolean} Return `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func\n} : void 0;","export const defaultReduceAnimations = typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent);","import { generateUtilityClass, generateUtilityClasses } from '@mui/material';\nexport const getCalendarPickerUtilityClass = slot => generateUtilityClass('MuiCalendarPicker', slot);\nexport const calendarPickerClasses = generateUtilityClasses('MuiCalendarPicker', ['root', 'viewTransitionContainer']);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"autoFocus\", \"onViewChange\", \"date\", \"disableFuture\", \"disablePast\", \"defaultCalendarMonth\", \"loading\", \"maxDate\", \"minDate\", \"onChange\", \"onMonthChange\", \"reduceAnimations\", \"renderLoading\", \"shouldDisableDate\", \"shouldDisableYear\", \"view\", \"views\", \"openTo\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/material';\nimport { MonthPicker } from '../MonthPicker/MonthPicker';\nimport { useCalendarState } from './useCalendarState';\nimport { useDefaultDates, useUtils } from '../internals/hooks/useUtils';\nimport { PickersFadeTransitionGroup } from './PickersFadeTransitionGroup';\nimport { DayPicker } from './DayPicker';\nimport { useViews } from '../internals/hooks/useViews';\nimport { PickersCalendarHeader } from './PickersCalendarHeader';\nimport { YearPicker } from '../YearPicker/YearPicker';\nimport { findClosestEnabledDate } from '../internals/utils/date-utils';\nimport { PickerViewRoot } from '../internals/components/PickerViewRoot';\nimport { defaultReduceAnimations } from '../internals/utils/defaultReduceAnimations';\nimport { getCalendarPickerUtilityClass } from './calendarPickerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n viewTransitionContainer: ['viewTransitionContainer']\n };\n return composeClasses(slots, getCalendarPickerUtilityClass, classes);\n};\n\nconst CalendarPickerRoot = styled(PickerViewRoot, {\n name: 'MuiCalendarPicker',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column'\n});\nconst CalendarPickerViewTransitionContainer = styled(PickersFadeTransitionGroup, {\n name: 'MuiCalendarPicker',\n slot: 'ViewTransitionContainer',\n overridesResolver: (props, styles) => styles.viewTransitionContainer\n})({\n overflowY: 'auto'\n});\n\n/**\n *\n * Demos:\n *\n * - [Date Picker](https://mui.com/components/x/react-date-pickers/date-picker/)\n *\n * API:\n *\n * - [CalendarPicker API](https://mui.com/api/calendar-picker/)\n */\nconst CalendarPicker = /*#__PURE__*/React.forwardRef(function CalendarPicker(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCalendarPicker'\n });\n\n const {\n autoFocus,\n onViewChange,\n date,\n disableFuture = false,\n disablePast = false,\n defaultCalendarMonth,\n loading = false,\n maxDate: maxDateProp,\n minDate: minDateProp,\n onChange,\n onMonthChange,\n reduceAnimations = defaultReduceAnimations,\n renderLoading = () => /*#__PURE__*/_jsx(\"span\", {\n children: \"...\"\n }),\n shouldDisableDate,\n shouldDisableYear,\n view,\n views = ['year', 'day'],\n openTo = 'day',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const minDate = minDateProp != null ? minDateProp : defaultDates.minDate;\n const maxDate = maxDateProp != null ? maxDateProp : defaultDates.maxDate;\n const {\n openView,\n setOpenView\n } = useViews({\n view,\n views,\n openTo,\n onChange,\n onViewChange\n });\n const {\n calendarState,\n changeFocusedDay,\n changeMonth,\n isDateDisabled,\n handleChangeMonth,\n onMonthSwitchingAnimationEnd\n } = useCalendarState({\n date,\n defaultCalendarMonth,\n reduceAnimations,\n onMonthChange,\n minDate,\n maxDate,\n shouldDisableDate,\n disablePast,\n disableFuture\n });\n React.useEffect(() => {\n if (date && isDateDisabled(date)) {\n const closestEnabledDate = findClosestEnabledDate({\n utils,\n date,\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n shouldDisableDate: isDateDisabled\n });\n onChange(closestEnabledDate, 'partial');\n } // This call is too expensive to run it on each prop change.\n // So just ensure that we are not rendering disabled as selected on mount.\n\n }, []); // eslint-disable-line\n\n React.useEffect(() => {\n if (date) {\n changeMonth(date);\n }\n }, [date]); // eslint-disable-line\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const monthPickerProps = {\n className,\n date,\n disabled: other.disabled,\n disablePast,\n disableFuture,\n onChange,\n minDate,\n maxDate,\n onMonthChange,\n readOnly: other.readOnly\n };\n return /*#__PURE__*/_jsxs(CalendarPickerRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(PickersCalendarHeader, _extends({}, other, {\n views: views,\n openView: openView,\n currentMonth: calendarState.currentMonth,\n onViewChange: setOpenView,\n onMonthChange: (newMonth, direction) => handleChangeMonth({\n newMonth,\n direction\n }),\n minDate: minDate,\n maxDate: maxDate,\n disablePast: disablePast,\n disableFuture: disableFuture,\n reduceAnimations: reduceAnimations\n })), /*#__PURE__*/_jsx(CalendarPickerViewTransitionContainer, {\n reduceAnimations: reduceAnimations,\n className: classes.viewTransitionContainer,\n transKey: openView,\n ownerState: ownerState,\n children: /*#__PURE__*/_jsxs(\"div\", {\n children: [openView === 'year' && /*#__PURE__*/_jsx(YearPicker, _extends({}, other, {\n autoFocus: autoFocus,\n date: date,\n onChange: onChange,\n minDate: minDate,\n maxDate: maxDate,\n disableFuture: disableFuture,\n disablePast: disablePast,\n isDateDisabled: isDateDisabled,\n shouldDisableYear: shouldDisableYear,\n onFocusedDayChange: changeFocusedDay\n })), openView === 'month' && /*#__PURE__*/_jsx(MonthPicker, _extends({}, monthPickerProps)), openView === 'day' && /*#__PURE__*/_jsx(DayPicker, _extends({}, other, calendarState, {\n autoFocus: autoFocus,\n onMonthSwitchingAnimationEnd: onMonthSwitchingAnimationEnd,\n onFocusedDayChange: changeFocusedDay,\n reduceAnimations: reduceAnimations,\n date: date,\n onChange: onChange,\n isDateDisabled: isDateDisabled,\n loading: loading,\n renderLoading: renderLoading\n }))]\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? CalendarPicker.propTypes = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * If `true`, `onChange` is fired on click even if the same date is selected.\n * @default false\n */\n allowSameDateSelection: PropTypes.bool,\n autoFocus: PropTypes.bool,\n classes: PropTypes.object,\n className: PropTypes.string,\n\n /**\n * The components used for each slot.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.object,\n\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.object,\n date: PropTypes.any,\n\n /**\n * Default calendar month displayed when `value={null}`.\n */\n defaultCalendarMonth: PropTypes.any,\n\n /**\n * If `true`, the picker and text field are disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * @default false\n */\n disableFuture: PropTypes.bool,\n\n /**\n * If `true`, todays date is rendering without highlighting with circle.\n * @default false\n */\n disableHighlightToday: PropTypes.bool,\n\n /**\n * @default false\n */\n disablePast: PropTypes.bool,\n\n /**\n * Get aria-label text for switching between views button.\n * @param {CalendarPickerView} currentView The view from which we want to get the button text.\n * @returns {string} The label of the view.\n */\n getViewSwitchingButtonText: PropTypes.func,\n\n /**\n * Left arrow icon aria-label text.\n */\n leftArrowButtonText: PropTypes.string,\n\n /**\n * If `true` renders `LoadingComponent` in calendar instead of calendar view.\n * Can be used to preload information and show it in calendar.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Max selectable date. @DateIOType\n */\n maxDate: PropTypes.any,\n\n /**\n * Min selectable date. @DateIOType\n */\n minDate: PropTypes.any,\n\n /**\n * Callback fired on date change\n */\n onChange: PropTypes.func.isRequired,\n\n /**\n * Callback firing on month change. @DateIOType\n * @param {TDate} month The new month.\n */\n onMonthChange: PropTypes.func,\n\n /**\n * Callback fired on view change.\n * @param {CalendarPickerView} view The new view.\n */\n onViewChange: PropTypes.func,\n\n /**\n * Callback firing on year change @DateIOType.\n * @param {TDate} year The new year.\n */\n onYearChange: PropTypes.func,\n\n /**\n * Initially open view.\n * @default 'day'\n */\n openTo: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Make picker read only.\n * @default false\n */\n readOnly: PropTypes.bool,\n\n /**\n * Disable heavy animations.\n * @default typeof navigator !== 'undefined' && /(android)/i.test(navigator.userAgent)\n */\n reduceAnimations: PropTypes.bool,\n\n /**\n * Custom renderer for day. Check the [PickersDay](https://mui.com/api/pickers-day/) component.\n * @param {TDate} day The day to render.\n * @param {Array} selectedDates The dates currently selected.\n * @param {PickersDayProps} pickersDayProps The props of the day to render.\n * @returns {JSX.Element} The element representing the day.\n */\n renderDay: PropTypes.func,\n\n /**\n * Component displaying when passed `loading` true.\n * @returns {React.ReactNode} The node to render when loading.\n * @default () => ...\n */\n renderLoading: PropTypes.func,\n\n /**\n * Right arrow icon aria-label text.\n */\n rightArrowButtonText: PropTypes.string,\n\n /**\n * Disable specific date. @DateIOType\n * @param {TDate} day The date to check.\n * @returns {boolean} If `true` the day will be disabled.\n */\n shouldDisableDate: PropTypes.func,\n\n /**\n * Disable specific years dynamically.\n * Works like `shouldDisableDate` but for year selection view @DateIOType.\n * @param {TDate} year The year to test.\n * @returns {boolean} Return `true` if the year should be disabled.\n */\n shouldDisableYear: PropTypes.func,\n\n /**\n * If `true`, days that have `outsideCurrentMonth={true}` are displayed.\n * @default false\n */\n showDaysOutsideCurrentMonth: PropTypes.bool,\n\n /**\n * Controlled open view.\n */\n view: PropTypes.oneOf(['day', 'month', 'year']),\n\n /**\n * Views for calendar picker.\n * @default ['year', 'day']\n */\n views: PropTypes.arrayOf(PropTypes.oneOf(['day', 'month', 'year']).isRequired)\n} : void 0;\nexport { CalendarPicker };","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getInputAdornmentUtilityClass(slot) {\n return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n\nvar _span;\n\nconst _excluded = [\"children\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport Typography from '../Typography';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from './inputAdornmentClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePointerEvents,\n hiddenLabel,\n position,\n size,\n variant\n } = ownerState;\n const slots = {\n root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n };\n return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\n\nconst InputAdornmentRoot = styled('div', {\n name: 'MuiInputAdornment',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n height: '0.01em',\n // Fix IE11 flexbox alignment. To remove at some point.\n maxHeight: '2em',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n color: (theme.vars || theme).palette.action.active\n}, ownerState.variant === 'filled' && {\n // Styles applied to the root element if `variant=\"filled\"`.\n [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n marginTop: 16\n }\n}, ownerState.position === 'start' && {\n // Styles applied to the root element if `position=\"start\"`.\n marginRight: 8\n}, ownerState.position === 'end' && {\n // Styles applied to the root element if `position=\"end\"`.\n marginLeft: 8\n}, ownerState.disablePointerEvents === true && {\n // Styles applied to the root element if `disablePointerEvents={true}`.\n pointerEvents: 'none'\n}));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputAdornment'\n });\n\n const {\n children,\n className,\n component = 'div',\n disablePointerEvents = false,\n disableTypography = false,\n position,\n variant: variantProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const muiFormControl = useFormControl() || {};\n let variant = variantProp;\n\n if (variantProp && muiFormControl.variant) {\n if (process.env.NODE_ENV !== 'production') {\n if (variantProp === muiFormControl.variant) {\n console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n }\n }\n }\n\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n\n const ownerState = _extends({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents,\n position,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(InputAdornmentRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n children: children\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [position === 'start' ?\n /* notranslate needed while Google Translate will not fix zero-width space issue */\n _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : null, children]\n })\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component, normally an `IconButton` or string.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Disable pointer events on the root.\n * This allows for the content of the adornment to focus the `input` on click.\n * @default false\n */\n disablePointerEvents: PropTypes.bool,\n\n /**\n * If children is a string then disable wrapping in a Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['end', 'start']).isRequired,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The variant to use.\n * Note: If you are using the `TextField` component or the `FormControl` component\n * you do not have to set this manually.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;","import { useReducer, useRef, useLayoutEffect, useEffect } from 'react';\n\nconst useRifm = props => {\n const [, refresh] = useReducer(c => c + 1, 0);\n const valueRef = useRef(null);\n const {\n replace,\n append\n } = props;\n const userValue = replace ? replace(props.format(props.value)) : props.format(props.value); // state of delete button see comments below about inputType support\n\n const isDeleleteButtonDownRef = useRef(false);\n\n const onChange = evt => {\n if (process.env.NODE_ENV !== 'production') {\n if (evt.target.type === 'number') {\n console.error('Rifm does not support input type=number, use type=tel instead.');\n return;\n }\n\n if (evt.target.type === 'date') {\n console.error('Rifm does not support input type=date.');\n return;\n }\n }\n\n const eventValue = evt.target.value;\n valueRef.current = [eventValue, // eventValue\n evt.target, // input\n eventValue.length > userValue.length, // isSizeIncreaseOperation\n isDeleleteButtonDownRef.current, // isDeleleteButtonDown\n userValue === props.format(eventValue) // isNoOperation\n ];\n\n if (process.env.NODE_ENV !== 'production') {\n const formattedEventValue = props.format(eventValue);\n\n if (eventValue !== formattedEventValue && eventValue.toLowerCase() === formattedEventValue.toLowerCase()) {\n console.warn('Case enforcement does not work with format. Please use replace={value => value.toLowerCase()} instead');\n }\n } // The main trick is to update underlying input with non formatted value (= eventValue)\n // that allows us to calculate right cursor position after formatting (see getCursorPosition)\n // then we format new value and call props.onChange with masked/formatted value\n // and finally we are able to set cursor position into right place\n\n\n refresh();\n }; // React prints warn on server in non production mode about useLayoutEffect usage\n // in both cases it's noop\n\n\n if (process.env.NODE_ENV === 'production' || typeof window !== 'undefined') {\n useLayoutEffect(() => {\n if (valueRef.current == null) return;\n let [eventValue, input, isSizeIncreaseOperation, isDeleleteButtonDown, // No operation means that value itself hasn't been changed, BTW cursor, selection etc can be changed\n isNoOperation] = valueRef.current;\n valueRef.current = null; // this usually occurs on deleting special symbols like ' here 123'123.00\n // in case of isDeleleteButtonDown cursor should move differently vs backspace\n\n const deleteWasNoOp = isDeleleteButtonDown && isNoOperation;\n const valueAfterSelectionStart = eventValue.slice(input.selectionStart);\n const acceptedCharIndexAfterDelete = valueAfterSelectionStart.search(props.accept || /\\d/g);\n const charsToSkipAfterDelete = acceptedCharIndexAfterDelete !== -1 ? acceptedCharIndexAfterDelete : 0; // Create string from only accepted symbols\n\n const clean = str => (str.match(props.accept || /\\d/g) || []).join('');\n\n const valueBeforeSelectionStart = clean(eventValue.substr(0, input.selectionStart)); // trying to find cursor position in formatted value having knowledge about valueBeforeSelectionStart\n // This works because we assume that format doesn't change the order of accepted symbols.\n // Imagine we have formatter which adds ' symbol between numbers, and by default we refuse all non numeric symbols\n // for example we had input = 1'2|'4 (| means cursor position) then user entered '3' symbol\n // inputValue = 1'23'|4 so valueBeforeSelectionStart = 123 and formatted value = 1'2'3'4\n // calling getCursorPosition(\"1'2'3'4\") will give us position after 3, 1'2'3|'4\n // so for formatting just this function to determine cursor position after formatting is enough\n // with masking we need to do some additional checks see `mask` below\n\n const getCursorPosition = val => {\n let start = 0;\n let cleanPos = 0;\n\n for (let i = 0; i !== valueBeforeSelectionStart.length; ++i) {\n let newPos = val.indexOf(valueBeforeSelectionStart[i], start) + 1;\n let newCleanPos = clean(val).indexOf(valueBeforeSelectionStart[i], cleanPos) + 1; // this skips position change if accepted symbols order was broken\n // For example fixes edge case with fixed point numbers:\n // You have '0|.00', then press 1, it becomes 01|.00 and after format 1.00, this breaks our assumption\n // that order of accepted symbols is not changed after format,\n // so here we don't update start position if other accepted symbols was inbetween current and new position\n\n if (newCleanPos - cleanPos > 1) {\n newPos = start;\n newCleanPos = cleanPos;\n }\n\n cleanPos = Math.max(newCleanPos, cleanPos);\n start = Math.max(start, newPos);\n }\n\n return start;\n }; // Masking part, for masks if size of mask is above some value\n // we need to replace symbols instead of do nothing as like in format\n\n\n if (props.mask === true && isSizeIncreaseOperation && !isNoOperation) {\n let start = getCursorPosition(eventValue);\n const c = clean(eventValue.substr(start))[0];\n start = eventValue.indexOf(c, start);\n eventValue = `${eventValue.substr(0, start)}${eventValue.substr(start + 1)}`;\n }\n\n let formattedValue = props.format(eventValue);\n\n if (append != null && // cursor at the end\n input.selectionStart === eventValue.length && !isNoOperation) {\n if (isSizeIncreaseOperation) {\n formattedValue = append(formattedValue);\n } else {\n // If after delete last char is special character and we use append\n // delete it too\n // was: \"12-3|\" backspace pressed, then should be \"12|\"\n if (clean(formattedValue.slice(-1)) === '') {\n formattedValue = formattedValue.slice(0, -1);\n }\n }\n }\n\n const replacedValue = replace ? replace(formattedValue) : formattedValue;\n\n if (userValue === replacedValue) {\n // if nothing changed for formatted value, just refresh so userValue will be used at render\n refresh();\n } else {\n props.onChange(replacedValue);\n }\n\n return () => {\n let start = getCursorPosition(formattedValue); // Visually improves working with masked values,\n // like cursor jumping over refused symbols\n // as an example date mask: was \"5|1-24-3\" then user pressed \"6\"\n // it becomes \"56-|12-43\" with this code, and \"56|-12-43\" without\n\n if (props.mask != null && (isSizeIncreaseOperation || isDeleleteButtonDown && !deleteWasNoOp)) {\n while (formattedValue[start] && clean(formattedValue[start]) === '') {\n start += 1;\n }\n }\n\n input.selectionStart = input.selectionEnd = start + (deleteWasNoOp ? 1 + charsToSkipAfterDelete : 0);\n };\n });\n }\n\n useEffect(() => {\n // until https://developer.mozilla.org/en-US/docs/Web/API/InputEvent/inputType will be supported\n // by all major browsers (now supported by: +chrome, +safari, ?edge, !firefox)\n // there is no way I found to distinguish in onChange\n // backspace or delete was called in some situations\n // firefox track https://bugzilla.mozilla.org/show_bug.cgi?id=1447239\n const handleKeyDown = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = true;\n }\n };\n\n const handleKeyUp = evt => {\n if (evt.code === 'Delete') {\n isDeleleteButtonDownRef.current = false;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('keyup', handleKeyUp);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('keyup', handleKeyUp);\n };\n }, []);\n return {\n value: valueRef.current != null ? valueRef.current[0] : userValue,\n onChange\n };\n};\nconst Rifm = props => {\n const renderProps = useRifm(props);\n return props.children(renderProps);\n};\n\nexport { Rifm, useRifm };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRifm } from 'rifm';\nimport { useUtils } from './useUtils';\nimport { createDelegatedEventHandler } from '../utils/utils';\nimport { maskedDateFormatter, getDisplayDate, checkMaskIsValidForCurrentFormat } from '../utils/text-field-helper';\nexport const useMaskedInput = ({\n acceptRegex = /[\\d]/gi,\n disabled,\n disableMaskedInput,\n ignoreInvalidInputs,\n inputFormat,\n inputProps,\n label,\n mask,\n onChange,\n rawValue,\n readOnly,\n rifmFormatter,\n TextFieldProps,\n validationError\n}) => {\n const utils = useUtils();\n const [isFocused, setIsFocused] = React.useState(false);\n const formatHelperText = utils.getFormatHelperText(inputFormat);\n const shouldUseMaskedInput = React.useMemo(() => {\n // formatting of dates is a quite slow thing, so do not make useless .format calls\n if (!mask || disableMaskedInput) {\n return false;\n }\n\n return checkMaskIsValidForCurrentFormat(mask, inputFormat, acceptRegex, utils);\n }, [acceptRegex, disableMaskedInput, inputFormat, mask, utils]);\n const formatter = React.useMemo(() => shouldUseMaskedInput && mask ? maskedDateFormatter(mask, acceptRegex) : st => st, [acceptRegex, mask, shouldUseMaskedInput]); // TODO: Implement with controlled vs uncontrolled `rawValue`\n\n const currentInputValue = getDisplayDate(utils, rawValue, inputFormat);\n const [innerInputValue, setInnerInputValue] = React.useState(currentInputValue);\n const previousInputValueRef = React.useRef(currentInputValue);\n React.useEffect(() => {\n previousInputValueRef.current = currentInputValue;\n }, [currentInputValue]);\n const notTyping = !isFocused;\n const valueChanged = previousInputValueRef.current !== currentInputValue; // Update the input value only if the value changed outside of typing\n\n if (notTyping && valueChanged && (rawValue === null || utils.isValid(rawValue))) {\n if (currentInputValue !== innerInputValue) {\n setInnerInputValue(currentInputValue);\n }\n }\n\n const handleChange = text => {\n const finalString = text === '' || text === mask ? '' : text;\n setInnerInputValue(finalString);\n const date = finalString === null ? null : utils.parse(finalString, inputFormat);\n\n if (ignoreInvalidInputs && !utils.isValid(date)) {\n return;\n }\n\n onChange(date, finalString || undefined);\n };\n\n const rifmProps = useRifm({\n value: innerInputValue,\n onChange: handleChange,\n format: rifmFormatter || formatter\n });\n const inputStateArgs = shouldUseMaskedInput ? rifmProps : {\n value: innerInputValue,\n onChange: event => {\n handleChange(event.currentTarget.value);\n }\n };\n return _extends({\n label,\n disabled,\n error: validationError,\n inputProps: _extends({}, inputStateArgs, {\n disabled,\n placeholder: formatHelperText,\n readOnly,\n type: shouldUseMaskedInput ? 'tel' : 'text'\n }, inputProps, {\n onFocus: createDelegatedEventHandler(() => {\n setIsFocused(true);\n }, inputProps == null ? void 0 : inputProps.onFocus),\n onBlur: createDelegatedEventHandler(() => {\n setIsFocused(false);\n }, inputProps == null ? void 0 : inputProps.onBlur)\n })\n }, TextFieldProps);\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"components\", \"disableOpenPicker\", \"getOpenDialogAriaText\", \"InputAdornmentProps\", \"InputProps\", \"inputRef\", \"openPicker\", \"OpenPickerButtonProps\", \"renderInput\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { useUtils } from '../hooks/useUtils';\nimport { Calendar } from './icons';\nimport { useMaskedInput } from '../hooks/useMaskedInput';\nimport { getTextFieldAriaText } from '../utils/text-field-helper';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const KeyboardDateInput = /*#__PURE__*/React.forwardRef(function KeyboardDateInput(props, ref) {\n const {\n components = {},\n disableOpenPicker,\n getOpenDialogAriaText = getTextFieldAriaText,\n InputAdornmentProps,\n InputProps,\n inputRef,\n openPicker,\n OpenPickerButtonProps,\n renderInput\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const utils = useUtils();\n const textFieldProps = useMaskedInput(other);\n const adornmentPosition = (InputAdornmentProps == null ? void 0 : InputAdornmentProps.position) || 'end';\n const OpenPickerIcon = components.OpenPickerIcon || Calendar;\n return renderInput(_extends({\n ref,\n inputRef\n }, textFieldProps, {\n InputProps: _extends({}, InputProps, {\n [`${adornmentPosition}Adornment`]: disableOpenPicker ? undefined : /*#__PURE__*/_jsx(InputAdornment, _extends({\n position: adornmentPosition\n }, InputAdornmentProps, {\n children: /*#__PURE__*/_jsx(IconButton, _extends({\n edge: adornmentPosition,\n disabled: other.disabled || other.readOnly,\n \"aria-label\": getOpenDialogAriaText(other.rawValue, utils)\n }, OpenPickerButtonProps, {\n onClick: openPicker,\n children: /*#__PURE__*/_jsx(OpenPickerIcon, {})\n }))\n }))\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? KeyboardDateInput.propTypes = {\n acceptRegex: PropTypes.instanceOf(RegExp),\n getOpenDialogAriaText: PropTypes.func,\n mask: PropTypes.string,\n OpenPickerButtonProps: PropTypes.object,\n renderInput: PropTypes.func.isRequired,\n rifmFormatter: PropTypes.func\n} : void 0;","import * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { arrayIncludes } from '../utils/utils';\n\nfunction getOrientation() {\n if (typeof window === 'undefined') {\n return 'portrait';\n }\n\n if (window.screen && window.screen.orientation && window.screen.orientation.angle) {\n return Math.abs(window.screen.orientation.angle) === 90 ? 'landscape' : 'portrait';\n } // Support IOS safari\n\n\n if (window.orientation) {\n return Math.abs(Number(window.orientation)) === 90 ? 'landscape' : 'portrait';\n }\n\n return 'portrait';\n}\n\nexport const useIsLandscape = (views, customOrientation) => {\n const [orientation, setOrientation] = React.useState(getOrientation);\n useEnhancedEffect(() => {\n const eventHandler = () => {\n setOrientation(getOrientation());\n };\n\n window.addEventListener('orientationchange', eventHandler);\n return () => {\n window.removeEventListener('orientationchange', eventHandler);\n };\n }, []);\n\n if (arrayIncludes(views, ['hours', 'minutes', 'seconds'])) {\n // could not display 13:34:44 in landscape mode\n return false;\n }\n\n const orientationToUse = customOrientation || orientation;\n return orientationToUse === 'landscape';\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"className\", \"date\", \"DateInputProps\", \"isMobileKeyboardViewOpen\", \"onDateChange\", \"onViewChange\", \"openTo\", \"orientation\", \"showToolbar\", \"toggleMobileKeyboardView\", \"ToolbarComponent\", \"toolbarFormat\", \"toolbarPlaceholder\", \"toolbarTitle\", \"views\"];\nimport * as React from 'react';\nimport { styled } from '@mui/material/styles';\nimport { useViews } from '../../hooks/useViews';\nimport { ClockPicker } from '../../../ClockPicker/ClockPicker';\nimport { CalendarPicker } from '../../../CalendarPicker/CalendarPicker';\nimport { KeyboardDateInput } from '../KeyboardDateInput';\nimport { useIsLandscape } from '../../hooks/useIsLandscape';\nimport { WrapperVariantContext } from '../wrappers/WrapperVariantContext';\nimport { PickerViewRoot } from '../PickerViewRoot';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const MobileKeyboardInputView = styled('div')({\n padding: '16px 24px'\n});\nconst PickerRoot = styled('div')(({\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column'\n}, ownerState.isLandscape && {\n flexDirection: 'row'\n}));\nconst MobileKeyboardTextFieldProps = {\n fullWidth: true\n};\n\nconst isDatePickerView = view => view === 'year' || view === 'month' || view === 'day';\n\nconst isTimePickerView = view => view === 'hours' || view === 'minutes' || view === 'seconds';\n\nexport function CalendarOrClockPicker(props) {\n const {\n autoFocus,\n date,\n DateInputProps,\n isMobileKeyboardViewOpen,\n onDateChange,\n onViewChange,\n openTo,\n orientation,\n showToolbar,\n toggleMobileKeyboardView,\n ToolbarComponent = () => null,\n toolbarFormat,\n toolbarPlaceholder,\n toolbarTitle,\n views\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const isLandscape = useIsLandscape(views, orientation);\n const wrapperVariant = React.useContext(WrapperVariantContext);\n const toShowToolbar = typeof showToolbar === 'undefined' ? wrapperVariant !== 'desktop' : showToolbar;\n const handleDateChange = React.useCallback((newDate, selectionState) => {\n onDateChange(newDate, wrapperVariant, selectionState);\n }, [onDateChange, wrapperVariant]);\n const handleViewChange = React.useCallback(newView => {\n if (isMobileKeyboardViewOpen) {\n toggleMobileKeyboardView();\n }\n\n if (onViewChange) {\n onViewChange(newView);\n }\n }, [isMobileKeyboardViewOpen, onViewChange, toggleMobileKeyboardView]);\n const {\n openView,\n setOpenView,\n handleChangeAndOpenNext\n } = useViews({\n view: undefined,\n views,\n openTo,\n onChange: handleDateChange,\n onViewChange: handleViewChange\n });\n return /*#__PURE__*/_jsxs(PickerRoot, {\n ownerState: {\n isLandscape\n },\n children: [toShowToolbar && /*#__PURE__*/_jsx(ToolbarComponent, _extends({}, other, {\n views: views,\n isLandscape: isLandscape,\n date: date,\n onChange: handleDateChange,\n setOpenView: setOpenView,\n openView: openView,\n toolbarTitle: toolbarTitle,\n toolbarFormat: toolbarFormat,\n toolbarPlaceholder: toolbarPlaceholder,\n isMobileKeyboardViewOpen: isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: toggleMobileKeyboardView\n })), /*#__PURE__*/_jsx(PickerViewRoot, {\n children: isMobileKeyboardViewOpen ? /*#__PURE__*/_jsx(MobileKeyboardInputView, {\n children: /*#__PURE__*/_jsx(KeyboardDateInput, _extends({}, DateInputProps, {\n ignoreInvalidInputs: true,\n disableOpenPicker: true,\n TextFieldProps: MobileKeyboardTextFieldProps\n }))\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [isDatePickerView(openView) && /*#__PURE__*/_jsx(CalendarPicker, _extends({\n autoFocus: autoFocus,\n date: date,\n onViewChange: setOpenView,\n onChange: handleChangeAndOpenNext,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isDatePickerView)\n }, other)), isTimePickerView(openView) && /*#__PURE__*/_jsx(ClockPicker, _extends({}, other, {\n autoFocus: autoFocus,\n date: date,\n view: openView // Unclear why the predicate `isDatePickerView` does not imply the casted type\n ,\n views: views.filter(isTimePickerView),\n onChange: handleChangeAndOpenNext,\n onViewChange: setOpenView,\n showViewSwitcher: wrapperVariant === 'desktop'\n }))]\n })\n })]\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport Grid from '@mui/material/Grid';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport { styled } from '@mui/material/styles';\nimport { generateUtilityClasses } from '@mui/material';\nimport { Pen, Calendar, Clock } from './icons';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst classes = generateUtilityClasses('PrivatePickersToolbar', ['root', 'dateTitleContainer']);\nconst PickersToolbarRoot = styled('div')(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n padding: theme.spacing(2, 3)\n}, ownerState.isLandscape && {\n height: 'auto',\n maxWidth: 160,\n padding: 16,\n justifyContent: 'flex-start',\n flexWrap: 'wrap'\n}));\nconst PickersToolbarGrid = styled(Grid)({\n flex: 1\n});\n\nconst getViewTypeIcon = viewType => viewType === 'clock' ? /*#__PURE__*/_jsx(Clock, {\n color: \"inherit\"\n}) : /*#__PURE__*/_jsx(Calendar, {\n color: \"inherit\"\n});\n\nfunction defaultGetKeyboardInputSwitchingButtonText(isKeyboardInputOpen, viewType) {\n return isKeyboardInputOpen ? `text input view is open, go to ${viewType} view` : `${viewType} view is open, go to text input view`;\n}\n\nexport const PickersToolbar = /*#__PURE__*/React.forwardRef(function PickersToolbar(props, ref) {\n const {\n children,\n className,\n getMobileKeyboardInputViewButtonText = defaultGetKeyboardInputSwitchingButtonText,\n isLandscape,\n isMobileKeyboardViewOpen,\n landscapeDirection = 'column',\n penIconClassName,\n toggleMobileKeyboardView,\n toolbarTitle,\n viewType = 'calendar'\n } = props;\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersToolbarRoot, {\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n children: [/*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n variant: \"overline\",\n children: toolbarTitle\n }), /*#__PURE__*/_jsxs(PickersToolbarGrid, {\n container: true,\n justifyContent: \"space-between\",\n className: classes.dateTitleContainer,\n direction: isLandscape ? landscapeDirection : 'row',\n alignItems: isLandscape ? 'flex-start' : 'flex-end',\n children: [children, /*#__PURE__*/_jsx(IconButton, {\n onClick: toggleMobileKeyboardView,\n className: penIconClassName,\n color: \"inherit\",\n \"aria-label\": getMobileKeyboardInputViewButtonText(isMobileKeyboardViewOpen, viewType),\n children: isMobileKeyboardViewOpen ? getViewTypeIcon(viewType) : /*#__PURE__*/_jsx(Pen, {\n color: \"inherit\"\n })\n })]\n })]\n });\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { onSpaceOrEnter } from '../utils/utils';\nimport { useUtils } from '../hooks/useUtils';\nimport { getDisplayDate, getTextFieldAriaText } from '../utils/text-field-helper';\n// TODO: why is this called \"Pure*\" when it's not memoized? Does \"Pure\" mean \"readonly\"?\nexport const PureDateInput = /*#__PURE__*/React.forwardRef(function PureDateInput(props, ref) {\n const {\n disabled,\n getOpenDialogAriaText = getTextFieldAriaText,\n inputFormat,\n InputProps,\n inputRef,\n label,\n openPicker: onOpen,\n rawValue,\n renderInput,\n TextFieldProps = {},\n validationError\n } = props;\n const utils = useUtils();\n const PureDateInputProps = React.useMemo(() => _extends({}, InputProps, {\n readOnly: true\n }), [InputProps]);\n const inputValue = getDisplayDate(utils, rawValue, inputFormat);\n return renderInput(_extends({\n label,\n disabled,\n ref,\n inputRef,\n error: validationError,\n InputProps: PureDateInputProps,\n inputProps: _extends({\n disabled,\n readOnly: true,\n 'aria-readonly': true,\n 'aria-label': getOpenDialogAriaText(rawValue, utils),\n value: inputValue\n }, !props.readOnly && {\n onClick: onOpen\n }, {\n onKeyDown: onSpaceOrEnter(onOpen)\n })\n }, TextFieldProps));\n});\nPureDateInput.propTypes = {\n getOpenDialogAriaText: PropTypes.func,\n renderInput: PropTypes.func.isRequired\n};","import { createSvgIcon } from '@mui/material/utils';\nimport * as React from 'react';\n/**\n * @ignore - internal component.\n */\n\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const ArrowDropDown = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');\n/**\n * @ignore - internal component.\n */\n\nexport const ArrowLeft = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z\"\n}), 'ArrowLeft');\n/**\n * @ignore - internal component.\n */\n\nexport const ArrowRight = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\"\n}), 'ArrowRight');\n/**\n * @ignore - internal component.\n */\n\nexport const Calendar = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\n}), 'Calendar');\n/**\n * @ignore - internal component.\n */\n\nexport const Clock = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Clock');\n/**\n * @ignore - internal component.\n */\n\nexport const DateRange = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z\"\n}), 'DateRange');\n/**\n * @ignore - internal component.\n */\n\nexport const Pen = createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 00-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z\"\n}), 'Pen');\n/**\n * @ignore - internal component.\n */\n\nexport const Time = createSvgIcon( /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"path\", {\n d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n }), /*#__PURE__*/_jsx(\"path\", {\n d: \"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z\"\n })]\n}), 'Time');","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogActionsUtilityClass(slot) {\n return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disableSpacing\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogActionsUtilityClass } from './dialogActionsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableSpacing\n } = ownerState;\n const slots = {\n root: ['root', !disableSpacing && 'spacing']\n };\n return composeClasses(slots, getDialogActionsUtilityClass, classes);\n};\n\nconst DialogActionsRoot = styled('div', {\n name: 'MuiDialogActions',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableSpacing && styles.spacing];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n alignItems: 'center',\n padding: 8,\n justifyContent: 'flex-end',\n flex: '0 0 auto'\n}, !ownerState.disableSpacing && {\n '& > :not(:first-of-type)': {\n marginLeft: 8\n }\n}));\nconst DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogActions'\n });\n\n const {\n className,\n disableSpacing = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n disableSpacing\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogActionsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the actions do not have additional margin.\n * @default false\n */\n disableSpacing: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogActions;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogContentUtilityClass(slot) {\n return generateUtilityClass('MuiDialogContent', slot);\n}\nconst dialogContentClasses = generateUtilityClasses('MuiDialogContent', ['root', 'dividers']);\nexport default dialogContentClasses;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogTitleUtilityClass(slot) {\n return generateUtilityClass('MuiDialogTitle', slot);\n}\nconst dialogTitleClasses = generateUtilityClasses('MuiDialogTitle', ['root']);\nexport default dialogTitleClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"dividers\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogContentUtilityClass } from './dialogContentClasses';\nimport dialogTitleClasses from '../DialogTitle/dialogTitleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n dividers\n } = ownerState;\n const slots = {\n root: ['root', dividers && 'dividers']\n };\n return composeClasses(slots, getDialogContentUtilityClass, classes);\n};\n\nconst DialogContentRoot = styled('div', {\n name: 'MuiDialogContent',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dividers && styles.dividers];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n flex: '1 1 auto',\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n overflowY: 'auto',\n padding: '20px 24px'\n}, ownerState.dividers ? {\n padding: '16px 24px',\n borderTop: `1px solid ${(theme.vars || theme).palette.divider}`,\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`\n} : {\n [`.${dialogTitleClasses.root} + &`]: {\n paddingTop: 0\n }\n}));\nconst DialogContent = /*#__PURE__*/React.forwardRef(function DialogContent(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogContent'\n });\n\n const {\n className,\n dividers = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n dividers\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogContentRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContent.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * Display the top and bottom dividers.\n * @default false\n */\n dividers: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport Button from '@mui/material/Button';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport Dialog, { dialogClasses } from '@mui/material/Dialog';\nimport { styled } from '@mui/material/styles';\nimport { DIALOG_WIDTH } from '../constants/dimensions';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst PickersModalDialogRoot = styled(Dialog)({\n [`& .${dialogClasses.container}`]: {\n outline: 0\n },\n [`& .${dialogClasses.paper}`]: {\n outline: 0,\n minWidth: DIALOG_WIDTH\n }\n});\nconst PickersModalDialogContent = styled(DialogContent)({\n '&:first-of-type': {\n padding: 0\n }\n});\nconst PickersModalDialogActions = styled(DialogActions)(({\n ownerState\n}) => _extends({}, (ownerState.clearable || ownerState.showTodayButton) && {\n // set justifyContent to default value to fix IE11 layout bug\n // see https://github.com/mui-org/material-ui-pickers/pull/267\n justifyContent: 'flex-start',\n '& > *:first-of-type': {\n marginRight: 'auto'\n }\n}));\nexport const PickersModalDialog = props => {\n const {\n cancelText = 'Cancel',\n children,\n clearable = false,\n clearText = 'Clear',\n DialogProps = {},\n okText = 'OK',\n onAccept,\n onClear,\n onDismiss,\n onSetToday,\n open,\n showTodayButton = false,\n todayText = 'Today'\n } = props;\n const ownerState = props;\n return /*#__PURE__*/_jsxs(PickersModalDialogRoot, _extends({\n open: open,\n onClose: onDismiss\n }, DialogProps, {\n children: [/*#__PURE__*/_jsx(PickersModalDialogContent, {\n children: children\n }), /*#__PURE__*/_jsxs(PickersModalDialogActions, {\n ownerState: ownerState,\n children: [clearable && /*#__PURE__*/_jsx(Button, {\n onClick: onClear,\n children: clearText\n }), showTodayButton && /*#__PURE__*/_jsx(Button, {\n onClick: onSetToday,\n children: todayText\n }), cancelText && /*#__PURE__*/_jsx(Button, {\n onClick: onDismiss,\n children: cancelText\n }), okText && /*#__PURE__*/_jsx(Button, {\n onClick: onAccept,\n children: okText\n })]\n })]\n }));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"cancelText\", \"children\", \"clearable\", \"clearText\", \"DateInputProps\", \"DialogProps\", \"okText\", \"onAccept\", \"onClear\", \"onDismiss\", \"onSetToday\", \"open\", \"PureDateInputComponent\", \"showTodayButton\", \"todayText\"];\nimport * as React from 'react';\nimport { WrapperVariantContext } from './WrapperVariantContext';\nimport { PickersModalDialog } from '../PickersModalDialog';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function MobileWrapper(props) {\n const {\n cancelText,\n children,\n clearable,\n clearText,\n DateInputProps,\n DialogProps,\n okText,\n onAccept,\n onClear,\n onDismiss,\n onSetToday,\n open,\n PureDateInputComponent,\n showTodayButton,\n todayText\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n return /*#__PURE__*/_jsxs(WrapperVariantContext.Provider, {\n value: \"mobile\",\n children: [/*#__PURE__*/_jsx(PureDateInputComponent, _extends({}, other, DateInputProps)), /*#__PURE__*/_jsx(PickersModalDialog, {\n cancelText: cancelText,\n clearable: clearable,\n clearText: clearText,\n DialogProps: DialogProps,\n okText: okText,\n onAccept: onAccept,\n onClear: onClear,\n onDismiss: onDismiss,\n onSetToday: onSetToday,\n open: open,\n showTodayButton: showTodayButton,\n todayText: todayText,\n children: children\n })]\n });\n}","import * as React from 'react';\n\n/**\n * TODO consider getting rid from wrapper variant\n * @ignore - internal component.\n */\nexport const WrapperVariantContext = /*#__PURE__*/React.createContext(null);\n/**\n * @ignore - internal component.\n */\n\nexport const IsStaticVariantContext = /*#__PURE__*/React.createContext(false);","export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const VIEW_HEIGHT = 358;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useOpenState } from './useOpenState';\nimport { useUtils } from './useUtils';\nexport const usePickerState = (props, valueManager) => {\n const {\n disableCloseOnSelect,\n onAccept,\n onChange,\n value\n } = props;\n const utils = useUtils();\n const {\n isOpen,\n setIsOpen\n } = useOpenState(props);\n\n function initDraftableDate(date) {\n return {\n committed: date,\n draft: date\n };\n }\n\n const parsedDateValue = valueManager.parseInput(utils, value);\n const [draftState, dispatch] = React.useReducer((state, action) => {\n switch (action.type) {\n case 'reset':\n return initDraftableDate(action.payload);\n\n case 'update':\n return _extends({}, state, {\n draft: action.payload\n });\n\n default:\n return state;\n }\n }, parsedDateValue, initDraftableDate);\n\n if (!valueManager.areValuesEqual(utils, draftState.committed, parsedDateValue)) {\n dispatch({\n type: 'reset',\n payload: parsedDateValue\n });\n }\n\n const [initialDate, setInitialDate] = React.useState(draftState.committed); // Mobile keyboard view is a special case.\n // When it's open picker should work like closed, cause we are just showing text field\n\n const [isMobileKeyboardViewOpen, setMobileKeyboardViewOpen] = React.useState(false);\n const acceptDate = React.useCallback((acceptedDate, needClosePicker) => {\n onChange(acceptedDate);\n\n if (needClosePicker) {\n setIsOpen(false);\n setInitialDate(acceptedDate);\n\n if (onAccept) {\n onAccept(acceptedDate);\n }\n }\n }, [onAccept, onChange, setIsOpen]);\n const wrapperProps = React.useMemo(() => ({\n open: isOpen,\n onClear: () => acceptDate(valueManager.emptyValue, true),\n onAccept: () => acceptDate(draftState.draft, true),\n onDismiss: () => acceptDate(initialDate, true),\n onSetToday: () => {\n const now = utils.date();\n dispatch({\n type: 'update',\n payload: now\n });\n acceptDate(now, !disableCloseOnSelect);\n }\n }), [acceptDate, disableCloseOnSelect, isOpen, utils, draftState.draft, valueManager.emptyValue, initialDate]);\n const pickerProps = React.useMemo(() => ({\n date: draftState.draft,\n isMobileKeyboardViewOpen,\n toggleMobileKeyboardView: () => setMobileKeyboardViewOpen(!isMobileKeyboardViewOpen),\n onDateChange: (newDate, wrapperVariant, selectionState = 'partial') => {\n dispatch({\n type: 'update',\n payload: newDate\n });\n\n if (selectionState === 'partial') {\n acceptDate(newDate, false);\n }\n\n if (selectionState === 'finish') {\n const shouldCloseOnSelect = !(disableCloseOnSelect != null ? disableCloseOnSelect : wrapperVariant === 'mobile');\n acceptDate(newDate, shouldCloseOnSelect);\n } // if selectionState === \"shallow\" do nothing (we already update the draft state)\n\n }\n }), [acceptDate, disableCloseOnSelect, isMobileKeyboardViewOpen, draftState.draft]);\n const inputProps = React.useMemo(() => ({\n onChange,\n open: isOpen,\n rawValue: value,\n openPicker: () => setIsOpen(true)\n }), [onChange, isOpen, value, setIsOpen]);\n const pickerState = {\n pickerProps,\n inputProps,\n wrapperProps\n };\n React.useDebugValue(pickerState, () => ({\n MuiPickerState: {\n pickerDraft: draftState,\n other: pickerState\n }\n }));\n return pickerState;\n};","import * as React from 'react';\nexport const useOpenState = ({\n open,\n onOpen,\n onClose\n}) => {\n const isControllingOpenProp = React.useRef(typeof open === 'boolean').current;\n const [openState, setIsOpenState] = React.useState(false); // It is required to update inner state in useEffect in order to avoid situation when\n // Our component is not mounted yet, but `open` state is set to `true` (e.g. initially opened)\n\n React.useEffect(() => {\n if (isControllingOpenProp) {\n if (typeof open !== 'boolean') {\n throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');\n }\n\n setIsOpenState(open);\n }\n }, [isControllingOpenProp, open]);\n const setIsOpen = React.useCallback(newIsOpen => {\n if (!isControllingOpenProp) {\n setIsOpenState(newIsOpen);\n }\n\n if (newIsOpen && onOpen) {\n onOpen();\n }\n\n if (!newIsOpen && onClose) {\n onClose();\n }\n }, [isControllingOpenProp, onOpen, onClose]);\n return {\n isOpen: openState,\n setIsOpen\n };\n};","import * as React from 'react';\nimport { MuiPickersAdapterContext } from '../../LocalizationProvider/LocalizationProvider';\n\nconst useLocalizationContext = () => {\n const localization = React.useContext(MuiPickersAdapterContext);\n\n if (localization === null) {\n throw new Error('MUI: Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.');\n }\n\n return localization;\n};\n\nexport const useUtils = () => useLocalizationContext().utils;\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useNow = () => {\n const utils = useUtils();\n const now = React.useRef(utils.date());\n return now.current;\n};","import { useValidation } from './useValidation';\nexport const validateDate = (utils, value, {\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n shouldDisableDate\n}) => {\n const now = utils.date();\n const date = utils.date(value);\n\n if (date === null) {\n return null;\n }\n\n switch (true) {\n case !utils.isValid(value):\n return 'invalidDate';\n\n case Boolean(shouldDisableDate && shouldDisableDate(date)):\n return 'shouldDisableDate';\n\n case Boolean(disableFuture && utils.isAfterDay(date, now)):\n return 'disableFuture';\n\n case Boolean(disablePast && utils.isBeforeDay(date, now)):\n return 'disablePast';\n\n case Boolean(minDate && utils.isBeforeDay(date, minDate)):\n return 'minDate';\n\n case Boolean(maxDate && utils.isAfterDay(date, maxDate)):\n return 'maxDate';\n\n default:\n return null;\n }\n};\n\nconst isSameDateError = (a, b) => a === b;\n\nexport const useDateValidation = props => useValidation(props, validateDate, isSameDateError);","import * as React from 'react';\nimport { useUtils } from '../useUtils';\nexport function useValidation(props, validate, isSameError) {\n const {\n value,\n onError\n } = props;\n const utils = useUtils();\n const previousValidationErrorRef = React.useRef(null);\n const validationError = validate(utils, value, props);\n React.useEffect(() => {\n if (onError && !isSameError(validationError, previousValidationErrorRef.current)) {\n onError(validationError, value);\n }\n\n previousValidationErrorRef.current = validationError;\n }, [isSameError, onError, previousValidationErrorRef, validationError, value]);\n return validationError;\n}","export const findClosestEnabledDate = ({\n date,\n disableFuture,\n disablePast,\n maxDate,\n minDate,\n shouldDisableDate,\n utils\n}) => {\n const today = utils.startOfDay(utils.date());\n\n if (disablePast && utils.isBefore(minDate, today)) {\n minDate = today;\n }\n\n if (disableFuture && utils.isAfter(maxDate, today)) {\n maxDate = today;\n }\n\n let forward = date;\n let backward = date;\n\n if (utils.isBefore(date, minDate)) {\n forward = utils.date(minDate);\n backward = null;\n }\n\n if (utils.isAfter(date, maxDate)) {\n if (backward) {\n backward = utils.date(maxDate);\n }\n\n forward = null;\n }\n\n while (forward || backward) {\n if (forward && utils.isAfter(forward, maxDate)) {\n forward = null;\n }\n\n if (backward && utils.isBefore(backward, minDate)) {\n backward = null;\n }\n\n if (forward) {\n if (!shouldDisableDate(forward)) {\n return forward;\n }\n\n forward = utils.addDays(forward, 1);\n }\n\n if (backward) {\n if (!shouldDisableDate(backward)) {\n return backward;\n }\n\n backward = utils.addDays(backward, -1);\n }\n }\n\n return today;\n};\nexport const parsePickerInputValue = (utils, value) => {\n const parsedValue = utils.date(value);\n return utils.isValid(parsedValue) ? parsedValue : null;\n};","export function getTextFieldAriaText(rawValue, utils) {\n // TODO: should `isValid` narrow `TDate | null` to `NonNullable`?\n // Either we allow `TDate | null` to be valid and guard against calling `formatByString` with `null`.\n // Or we ensure `formatByString` is callable with `null`.\n return rawValue && utils.isValid(utils.date(rawValue)) ? `Choose date, selected date is ${utils.format(utils.date(rawValue), 'fullDate')}` : 'Choose date';\n}\nexport const getDisplayDate = (utils, value, inputFormat) => {\n const date = utils.date(value);\n const isEmpty = value === null;\n\n if (isEmpty) {\n return '';\n }\n\n return utils.isValid(date) ? utils.formatByString( // TODO: should `isValid` narrow `TDate | null` to `NonNullable`?\n // Either we allow `TDate | null` to be valid and guard against calling `formatByString` with `null`.\n // Or we ensure `formatByString` is callable with `null`.\n date, inputFormat) : '';\n};\nexport function pick12hOr24hFormat(userFormat, ampm, formats) {\n if (userFormat) {\n return userFormat;\n }\n\n if (typeof ampm === 'undefined') {\n return formats.localized;\n }\n\n return ampm ? formats['12h'] : formats['24h'];\n}\nconst MASK_USER_INPUT_SYMBOL = '_';\nconst staticDateWith2DigitTokens = '2019-11-21T22:30:00.000';\nconst staticDateWith1DigitTokens = '2019-01-01T09:00:00.000';\nexport function checkMaskIsValidForCurrentFormat(mask, format, acceptRegex, utils) {\n const formattedDateWith1Digit = utils.formatByString(utils.date(staticDateWith1DigitTokens), format);\n const inferredFormatPatternWith1Digits = formattedDateWith1Digit.replace(acceptRegex, MASK_USER_INPUT_SYMBOL);\n const inferredFormatPatternWith2Digits = utils.formatByString(utils.date(staticDateWith2DigitTokens), format).replace(acceptRegex, '_');\n const isMaskValid = inferredFormatPatternWith2Digits === mask && inferredFormatPatternWith1Digits === mask;\n\n if (!isMaskValid && utils.lib !== 'luxon' && process.env.NODE_ENV !== 'production') {\n console.warn(`The mask \"${mask}\" you passed is not valid for the format used ${format}. Falling down to uncontrolled not-masked input.`);\n }\n\n return isMaskValid;\n}\nexport const maskedDateFormatter = (mask, acceptRegexp) => value => {\n return value.split('').map((char, i) => {\n acceptRegexp.lastIndex = 0;\n\n if (i > mask.length - 1) {\n return '';\n }\n\n const maskChar = mask[i];\n const nextMaskChar = mask[i + 1];\n const acceptedChar = acceptRegexp.test(char) ? char : '';\n const formattedChar = maskChar === MASK_USER_INPUT_SYMBOL ? acceptedChar : maskChar + acceptedChar;\n\n if (i === value.length - 1 && nextMaskChar && nextMaskChar !== MASK_USER_INPUT_SYMBOL) {\n // when cursor at the end of mask part (e.g. month) prerender next symbol \"21\" -> \"21/\"\n return formattedChar ? formattedChar + nextMaskChar : '';\n }\n\n return formattedChar;\n }).join('');\n};","export const getMeridiem = (date, utils) => {\n if (!date) {\n return null;\n }\n\n return utils.getHours(date) >= 12 ? 'pm' : 'am';\n};\nexport const convertValueToMeridiem = (value, meridiem, ampm) => {\n if (ampm) {\n const currentMeridiem = value >= 12 ? 'pm' : 'am';\n\n if (currentMeridiem !== meridiem) {\n return meridiem === 'am' ? value - 12 : value + 12;\n }\n }\n\n return value;\n};\nexport const convertToMeridiem = (time, meridiem, ampm, utils) => {\n const newHoursAmount = convertValueToMeridiem(utils.getHours(time), meridiem, ampm);\n return utils.setHours(time, newHoursAmount);\n};\nexport const getSecondsInDay = (date, utils) => {\n return utils.getHours(date) * 3600 + utils.getMinutes(date) * 60 + utils.getSeconds(date);\n};\nexport const createIsAfterIgnoreDatePart = (disableIgnoringDatePartForTimeValidation, utils) => (dateLeft, dateRight) => {\n if (disableIgnoringDatePartForTimeValidation) {\n return utils.isAfter(dateLeft, dateRight);\n }\n\n return getSecondsInDay(dateLeft, utils) > getSecondsInDay(dateRight, utils);\n};","/* Use it instead of .includes method for IE support */\nexport function arrayIncludes(array, itemOrItems) {\n if (Array.isArray(itemOrItems)) {\n return itemOrItems.every(item => array.indexOf(item) !== -1);\n }\n\n return array.indexOf(itemOrItems) !== -1;\n}\nexport const onSpaceOrEnter = (innerFn, onFocus) => event => {\n if (event.key === 'Enter' || event.key === ' ') {\n innerFn(); // prevent any side effects\n\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (onFocus) {\n onFocus(event);\n }\n};\n/* Quick untyped helper to improve function composition readability */\n\nexport const pipe = (...fns) => fns.reduceRight((prevFn, nextFn) => (...args) => nextFn(prevFn(...args)), value => value);\nexport const executeInTheNextEventLoopTick = fn => {\n setTimeout(fn, 0);\n};\nexport function createDelegatedEventHandler(fn, onEvent) {\n return event => {\n fn(event);\n\n if (onEvent) {\n onEvent(event);\n }\n };\n}\nexport const doNothing = () => {};","import * as rdf from '@ontologies/core';\nimport rdf__default, { PlainFactory, createNS, isNamedNode, isBlankNode } from '@ontologies/core';\nimport * as LinkLib from 'link-lib';\nimport * as LinkRedux from 'link-redux';\n\n/* globals $r */\r\nclass LinkDevTools {\r\n constructor(lrs = window.LRS, globalName = 'dev', enableExtension = false, reactDevTools = undefined) {\r\n this.rDevTools = reactDevTools;\r\n this.globalName = globalName;\r\n this.lrs = lrs;\r\n if (process.env.NODE_ENV === \"development\") {\r\n window.__LINK_DEVTOOLS_GLOBAL_HOOK__ = {\r\n factory: new PlainFactory(),\r\n deltaProcessor: (delta) => {\r\n window.postMessage({\r\n extension: \"link-devtools\",\r\n type: \"delta\",\r\n data: delta,\r\n }, \"*\");\r\n window.postMessage({\r\n extension: \"link-devtools\",\r\n type: \"data\",\r\n data: lrs\r\n .store\r\n .store\r\n .quads\r\n .map((s) => window.__LINK_DEVTOOLS_GLOBAL_HOOK__.factory.fromQuad(s)),\r\n }, \"*\");\r\n },\r\n };\r\n if (enableExtension) {\r\n this.lrs.deltaProcessors.unshift({\r\n flush() {\r\n return [];\r\n },\r\n queueDelta(delta, subjects) { },\r\n processDelta(delta) {\r\n window.__LINK_DEVTOOLS_GLOBAL_HOOK__.deltaProcessor(delta);\r\n return [];\r\n },\r\n });\r\n }\r\n }\r\n }\r\n get $r() {\r\n if (typeof $r !== 'undefined') {\r\n return $r;\r\n }\r\n return this.rDevTools;\r\n }\r\n /**\r\n * Get the LRS bound to the component.\r\n * @param {React.Element} comp Component to get the LRS from.\r\n * @return {LinkedRenderStore|undefined} Resolved LinkedRenderStore if any.\r\n */\r\n getLRS(comp = this.$r) {\r\n var _a, _b, _c;\r\n const lrs = (_c = (_b = (_a = comp === null || comp === void 0 ? void 0 : comp.hooks) === null || _a === void 0 ? void 0 : _a.find(a => a.name === \"LRS\")) === null || _b === void 0 ? void 0 : _b.subHooks) === null || _c === void 0 ? void 0 : _c[0];\r\n return (lrs === null || lrs === void 0 ? void 0 : lrs.value) || this.lrs || window.LRS;\r\n }\r\n static returnWithError(msg = undefined) {\r\n return console.error(`${msg ? `${msg}, i` : 'I'}s a link component selected? (check the value of \\`$r\\`)`);\r\n }\r\n dataArr(comp = this.$r) {\r\n const subject = this.currentSubject(comp);\r\n if (typeof subject === 'undefined') {\r\n return LinkDevTools.returnWithError('No subject or object found (check the value of `$r`)');\r\n }\r\n return this.lrs.tryEntity(subject);\r\n }\r\n showProp(func) {\r\n return (comp = this.$r) => {\r\n if (typeof comp === 'undefined') {\r\n return console.error('No component selected in react devtools (check the value of `$r`)');\r\n }\r\n if (typeof comp.props === 'undefined') {\r\n return LinkDevTools.returnWithError('Object has no props');\r\n }\r\n if (typeof comp.props.label === 'undefined') {\r\n return LinkDevTools.returnWithError('Component `label` is undefined');\r\n }\r\n if (typeof comp.props.subject === 'undefined') {\r\n return LinkDevTools.returnWithError('Component `subject` is undefined');\r\n }\r\n const lrs = this.getLRS(comp);\r\n console.debug('Using: ', comp.props.label, comp.props.subject, lrs ? 'local LRS' : 'global LRS');\r\n return func(comp.props.subject, comp.props.label);\r\n };\r\n }\r\n toObject(arr = this.dataArr(), denormalize = true) {\r\n if (!Array.isArray(arr)) {\r\n return console.error('Pass an array of statements to process');\r\n }\r\n if (arr.length === 0) {\r\n console.debug('No statements passed');\r\n return {};\r\n }\r\n const obj = {};\r\n for (let i = 0; i < arr.length; i++) {\r\n const cur = arr[i];\r\n const subj = rdf__default.toNQ(cur.subject);\r\n const pred = rdf__default.toNQ(cur.predicate);\r\n if (typeof obj[subj] === 'undefined') {\r\n obj[subj] = {};\r\n }\r\n if (typeof obj[subj][pred] === 'undefined') {\r\n obj[subj][pred] = cur.object;\r\n }\r\n else if (Array.isArray(obj[subj][pred])) {\r\n obj[subj][pred].push(cur.object);\r\n }\r\n else {\r\n obj[subj][pred] = [\r\n obj[subj][pred],\r\n cur.object,\r\n ];\r\n }\r\n }\r\n const allKeys = Object.keys(obj);\r\n if (denormalize && allKeys.length === 1) {\r\n console.debug('Returning single subject;', allKeys[0]);\r\n return obj[allKeys[0]];\r\n }\r\n return obj;\r\n }\r\n obj(resource) {\r\n const lrs = this.getLRS();\r\n let node = resource;\r\n if (typeof resource === 'number') {\r\n node = rdf__default.fromId(resource);\r\n }\r\n else if (typeof resource === 'string') {\r\n node = rdf__default.namedNode(resource);\r\n }\r\n return this.toObject(lrs.tryEntity(node));\r\n }\r\n get data() {\r\n return this.toObject(this.dataArr());\r\n }\r\n get getPropArr() {\r\n return this.showProp(this.getResourceProperty);\r\n }\r\n get getPropRawArr() {\r\n return this.showProp(this.getResourcePropertyRaw);\r\n }\r\n get getProp() {\r\n const propVal = this.getPropArr;\r\n return Array.isArray(propVal) ? this.toObject(propVal) : propVal;\r\n }\r\n get getPropRaw() {\r\n const propVal = this.getPropRawArr;\r\n return Array.isArray(propVal) ? this.toObject(propVal) : propVal;\r\n }\r\n // eslint-disable-next-line class-methods-use-this\r\n get linkLib() {\r\n return LinkLib;\r\n }\r\n // eslint-disable-next-line class-methods-use-this\r\n get linkRedux() {\r\n return LinkRedux;\r\n }\r\n get rdf() {\r\n return rdf__default;\r\n }\r\n get createNS() {\r\n return createNS;\r\n }\r\n get rdfFactory() {\r\n return rdf;\r\n }\r\n get reload() {\r\n if (this.$r && this.$r.props) {\r\n if (!this.$r.props.reloadLinkedObject) {\r\n return console.warn(\"Selected node doesn't seem to be a LinkedResourceContainer\");\r\n }\r\n return this.$r.props.reloadLinkedObject();\r\n }\r\n return console.warn('No node or wrong node type selected.');\r\n }\r\n get topology() {\r\n return this.$r.props.topology === null\r\n ? undefined\r\n : (this.$r.props.topology || this.$r.props.topologyCtx);\r\n }\r\n get propertyRenderers() {\r\n return this.getLRS(this.$r).mapping;\r\n }\r\n get typeRenderers() {\r\n return this.getLRS(this.$r).mapping[''];\r\n }\r\n get help() {\r\n function helpTableObj(method, desc) {\r\n return {\r\n desc,\r\n method,\r\n };\r\n }\r\n console.warn('__DO NOT__ USE THESE METHODS IN CODE SINCE ARE FOR DEBUGGING PURPOSES ONLY.');\r\n console.group('Available object methods for LinkedResourceContainer');\r\n const LRC = [\r\n helpTableObj('<> hasErrors', 'Returns whether the resource is considered to be in an error state'),\r\n helpTableObj('onError', 'Returns the component to render on error'),\r\n helpTableObj('onLoad', 'Returns the component to render on load'),\r\n helpTableObj('data', 'Returns the currently available data (real-time, so render-time data theoretically might differ).'),\r\n helpTableObj('obj', 'Same as data, but can be passed an argument.'),\r\n helpTableObj('objType', 'Returns the resolved type of the resource, defaults to the lrs value.'),\r\n helpTableObj('subject', 'Returns the normalized subject of the container'),\r\n helpTableObj('topology', 'Returns the current topology (or undefined when not present)'),\r\n ];\r\n console.table(LRC, ['method', 'desc']);\r\n console.groupEnd();\r\n console.info('Property and others are purely functional, so this module exposes additional methods which can be used to inspect those components');\r\n console.group(`Available object methods for devTools (via \\`${this.globalName}.\\`)`);\r\n console.info('Most methods work on react-devtools object references (using value of `$r`)');\r\n const devTools = [\r\n helpTableObj('data', 'Returns the currently available data as an object (real-time, so render-time data theoretically might differ).'),\r\n helpTableObj('obj', 'Same as data, but can be passed an argument.'),\r\n helpTableObj('dataArr', 'Returns the raw currently available data (See also; `data`).'),\r\n helpTableObj('getResourceProperty()', \"Exposes link-redux's `getResourceProperty` method (used by `Property` and `PropertyBase`).\"),\r\n helpTableObj('getResourcePropertyRaw()', \"Exposes link-redux's `getResourceProperty` method (used by `Property` and `PropertyBase`).\"),\r\n helpTableObj('getPropArr', \"Returns the component's 'object property' without using `toObject`.\"),\r\n helpTableObj('getPropRawArr', \"Returns the component's 'object property' without using `toObject`.\"),\r\n helpTableObj('getProp', \"Returns the component's formatted 'object property' by using `getResourceProperty`.\"),\r\n helpTableObj('getPropRaw', \"Returns the component's formatted 'object property' by using `getResourcePropertyRaw`.\"),\r\n helpTableObj('help', 'Displays this help message.'),\r\n helpTableObj('reload', 'Reloads the currently selected LRC (if possible).'),\r\n helpTableObj('toObject(arr)', 'Converts an array of statements to an object.'),\r\n helpTableObj('topology', \"Returns the current location's topology.\"),\r\n helpTableObj('types', ''),\r\n helpTableObj('typeRenderers', 'Returns all registered type renderers.'),\r\n helpTableObj('propertyRenderers', 'Returns all registered property renderers (including type renderers).'),\r\n ];\r\n console.table(devTools, ['method', 'desc']);\r\n console.groupEnd();\r\n return undefined;\r\n }\r\n getResourceProperty(property, subject, lrs) {\r\n return (lrs || this.getLRS()).getResourceProperty(property, subject);\r\n }\r\n getResourcePropertyRaw(subject, property, lrs) {\r\n return (lrs || this.getLRS()).getResourcePropertyRaw(subject, property);\r\n }\r\n currentSubject(comp) {\r\n var _a, _b, _c, _d;\r\n if (typeof comp === 'undefined') {\r\n throw console.error('No component selected in react devtools (check the value of `$r`)');\r\n }\r\n let subject;\r\n if (isNamedNode(comp) || isBlankNode(comp)) {\r\n subject = comp;\r\n }\r\n else {\r\n if (typeof comp.props !== 'undefined') {\r\n subject = comp.props.subject;\r\n }\r\n if (typeof subject === 'undefined' && typeof comp.hooks !== 'undefined') {\r\n subject = (_d = (_c = (_b = (_a = $r.hooks.find(a => a.name === \"LinkRenderContext\")) === null || _a === void 0 ? void 0 : _a.subHooks) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.value) === null || _d === void 0 ? void 0 : _d.subject;\r\n }\r\n }\r\n if (typeof subject === 'string') {\r\n console.debug('Normalizing passed subject into NamedNode');\r\n subject = rdf__default.namedNode(subject);\r\n }\r\n return subject;\r\n }\r\n}\r\nconst enableDevtools = (lrs, globalName = 'dev') => {\r\n if (typeof window !== 'undefined') {\r\n const devtools = new LinkDevTools(lrs, globalName, false);\r\n if (process.env.NODE_ENV === 'development') {\r\n window[globalName] = devtools;\r\n }\r\n }\r\n};\n\nexport default enableDevtools;\nexport { LinkDevTools };\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'ActivityStreams 2.0' ontology */\nexport const ns = createNS(\"https://www.w3.org/ns/activitystreams#\");\n/* Classes */\n/** Actor accepts the Object */\nexport const Accept = /*#__PURE__*/ ns(\"Accept\");\n/** An Object representing some form of Action that has been taken */\nexport const Activity = /*#__PURE__*/ ns(\"Activity\");\nexport const Block = /*#__PURE__*/ ns(\"Block\");\n/** An Activity that has no direct object */\nexport const IntransitiveActivity = /*#__PURE__*/ ns(\"IntransitiveActivity\");\n/** To Add an Object or Link to Something */\nexport const Add = /*#__PURE__*/ ns(\"Add\");\n/** Actor announces the object to the target */\nexport const Announce = /*#__PURE__*/ ns(\"Announce\");\n/** Represents a software application of any sort */\nexport const Application = /*#__PURE__*/ ns(\"Application\");\n/** To Arrive Somewhere (can be used, for instance, to indicate that a particular entity is currently located somewhere, e.g. a \"check-in\") */\nexport const Arrive = /*#__PURE__*/ ns(\"Arrive\");\n/** A written work. Typically several paragraphs long. For example, a blog post or a news article. */\nexport const Article = /*#__PURE__*/ ns(\"Article\");\n/** An audio file */\nexport const Audio = /*#__PURE__*/ ns(\"Audio\");\n/** An ordered or unordered collection of Objects or Links */\nexport const Collection = /*#__PURE__*/ ns(\"Collection\");\n/** A subset of items from a Collection */\nexport const CollectionPage = /*#__PURE__*/ ns(\"CollectionPage\");\n/** An ordered subset of items from an OrderedCollection */\nexport const OrderedCollectionPage = /*#__PURE__*/ ns(\"OrderedCollectionPage\");\n/** Represents a Social Graph relationship between two Individuals (indicated by the 'a' and 'b' properties) */\nexport const Relationship = /*#__PURE__*/ ns(\"Relationship\");\n/** To Create Something */\nexport const Create = /*#__PURE__*/ ns(\"Create\");\n/** To Delete Something */\nexport const Delete = /*#__PURE__*/ ns(\"Delete\");\n/** The actor dislikes the object */\nexport const Dislike = /*#__PURE__*/ ns(\"Dislike\");\n/** Represents a digital document/file of any sort */\nexport const Document = /*#__PURE__*/ ns(\"Document\");\n/** An Event of any kind */\nexport const Event = /*#__PURE__*/ ns(\"Event\");\n/** To flag something (e.g. flag as inappropriate, flag as spam, etc) */\nexport const Flag = /*#__PURE__*/ ns(\"Flag\");\n/** To Express Interest in Something */\nexport const Follow = /*#__PURE__*/ ns(\"Follow\");\n/** A Group of any kind. */\nexport const Group = /*#__PURE__*/ ns(\"Group\");\n/** Actor is ignoring the Object */\nexport const Ignore = /*#__PURE__*/ ns(\"Ignore\");\n/** An Image file */\nexport const Image = /*#__PURE__*/ ns(\"Image\");\n/** To invite someone or something to something */\nexport const Invite = /*#__PURE__*/ ns(\"Invite\");\n/** To Join Something */\nexport const Join = /*#__PURE__*/ ns(\"Join\");\n/** To Leave Something */\nexport const Leave = /*#__PURE__*/ ns(\"Leave\");\n/** To Like Something */\nexport const Like = /*#__PURE__*/ ns(\"Like\");\n/** The actor viewed the object */\nexport const View = /*#__PURE__*/ ns(\"View\");\n/** The actor listened to the object */\nexport const Listen = /*#__PURE__*/ ns(\"Listen\");\n/** The actor read the object */\nexport const Read = /*#__PURE__*/ ns(\"Read\");\n/** The actor is moving the object. The target specifies where the object is moving to. The origin specifies where the object is moving from. */\nexport const Move = /*#__PURE__*/ ns(\"Move\");\n/** The actor is traveling to the target. The origin specifies where the actor is traveling from. */\nexport const Travel = /*#__PURE__*/ ns(\"Travel\");\n/** Represents a qualified reference to another resource. Patterned after the RFC5988 Web Linking Model */\nexport const Link = /*#__PURE__*/ ns(\"Link\");\n/** A specialized Link that represents an @mention */\nexport const Mention = /*#__PURE__*/ ns(\"Mention\");\n/** A Short note, typically less than a single paragraph. A \"tweet\" is an example, or a \"status update\" */\nexport const Note = /*#__PURE__*/ ns(\"Note\");\nexport const asObject = /*#__PURE__*/ ns(\"Object\");\n/** To Offer something to someone or something */\nexport const Offer = /*#__PURE__*/ ns(\"Offer\");\n/** A variation of Collection in which items are strictly ordered */\nexport const OrderedCollection = /*#__PURE__*/ ns(\"OrderedCollection\");\n/** A rdf:List variant for Objects and Links */\nexport const OrderedItems = /*#__PURE__*/ ns(\"OrderedItems\");\n/** A Web Page */\nexport const Page = /*#__PURE__*/ ns(\"Page\");\n/** A Person */\nexport const Person = /*#__PURE__*/ ns(\"Person\");\n/** An Organization */\nexport const Organization = /*#__PURE__*/ ns(\"Organization\");\n/** A Profile Document */\nexport const Profile = /*#__PURE__*/ ns(\"Profile\");\n/** A physical or logical location */\nexport const Place = /*#__PURE__*/ ns(\"Place\");\n/** A question of any sort. */\nexport const Question = /*#__PURE__*/ ns(\"Question\");\n/** Actor rejects the Object */\nexport const Reject = /*#__PURE__*/ ns(\"Reject\");\n/** To Remove Something */\nexport const Remove = /*#__PURE__*/ ns(\"Remove\");\n/** A service provided by some entity */\nexport const Service = /*#__PURE__*/ ns(\"Service\");\n/** Actor tentatively accepts the Object */\nexport const TentativeAccept = /*#__PURE__*/ ns(\"TentativeAccept\");\n/** Actor tentatively rejects the object */\nexport const TentativeReject = /*#__PURE__*/ ns(\"TentativeReject\");\n/** A placeholder for a deleted object */\nexport const Tombstone = /*#__PURE__*/ ns(\"Tombstone\");\n/** To Undo Something. This would typically be used to indicate that a previous Activity has been undone. */\nexport const Undo = /*#__PURE__*/ ns(\"Undo\");\n/** To Update/Modify Something */\nexport const Update = /*#__PURE__*/ ns(\"Update\");\n/** A Video document of any kind. */\nexport const Video = /*#__PURE__*/ ns(\"Video\");\n/* Properties */\n/** Subproperty of as:attributedTo that identifies the primary actor */\nexport const actor = /*#__PURE__*/ ns(\"actor\");\n/** Identifies an entity to which an object is attributed */\nexport const attributedTo = /*#__PURE__*/ ns(\"attributedTo\");\nexport const attachment = /*#__PURE__*/ ns(\"attachment\");\nexport const attachments = /*#__PURE__*/ ns(\"attachments\");\n/** Identifies the author of an object. Deprecated. Use as:attributedTo instead */\nexport const author = /*#__PURE__*/ ns(\"author\");\nexport const bcc = /*#__PURE__*/ ns(\"bcc\");\nexport const bto = /*#__PURE__*/ ns(\"bto\");\nexport const cc = /*#__PURE__*/ ns(\"cc\");\n/** Specifies the context within which an object exists or an activity was performed */\nexport const context = /*#__PURE__*/ ns(\"context\");\nexport const current = /*#__PURE__*/ ns(\"current\");\nexport const first = /*#__PURE__*/ ns(\"first\");\nexport const generator = /*#__PURE__*/ ns(\"generator\");\nexport const icon = /*#__PURE__*/ ns(\"icon\");\nexport const image = /*#__PURE__*/ ns(\"image\");\nexport const inReplyTo = /*#__PURE__*/ ns(\"inReplyTo\");\nexport const items = /*#__PURE__*/ ns(\"items\");\nexport const last = /*#__PURE__*/ ns(\"last\");\nexport const location = /*#__PURE__*/ ns(\"location\");\nexport const next = /*#__PURE__*/ ns(\"next\");\nexport const object = /*#__PURE__*/ ns(\"object\");\n/** Describes a possible exclusive answer or option for a question. */\nexport const oneOf = /*#__PURE__*/ ns(\"oneOf\");\n/** Describes a possible inclusive answer or option for a question. */\nexport const anyOf = /*#__PURE__*/ ns(\"anyOf\");\nexport const prev = /*#__PURE__*/ ns(\"prev\");\nexport const preview = /*#__PURE__*/ ns(\"preview\");\nexport const provider = /*#__PURE__*/ ns(\"provider\");\nexport const replies = /*#__PURE__*/ ns(\"replies\");\nexport const result = /*#__PURE__*/ ns(\"result\");\nexport const audience = /*#__PURE__*/ ns(\"audience\");\nexport const partOf = /*#__PURE__*/ ns(\"partOf\");\nexport const tag = /*#__PURE__*/ ns(\"tag\");\nexport const tags = /*#__PURE__*/ ns(\"tags\");\nexport const target = /*#__PURE__*/ ns(\"target\");\n/** For certain activities, specifies the entity from which the action is directed. */\nexport const origin = /*#__PURE__*/ ns(\"origin\");\n/** Indentifies an object used (or to be used) to complete an activity */\nexport const instrument = /*#__PURE__*/ ns(\"instrument\");\nexport const to = /*#__PURE__*/ ns(\"to\");\n/** Specifies a link to a specific representation of the Object */\nexport const url = /*#__PURE__*/ ns(\"url\");\n/** On a Relationship object, identifies the subject. e.g. when saying \"John is connected to Sally\", 'subject' refers to 'John' */\nexport const subject = /*#__PURE__*/ ns(\"subject\");\n/** On a Relationship object, describes the type of relationship */\nexport const relationship = /*#__PURE__*/ ns(\"relationship\");\n/** On a Profile object, describes the object described by the profile */\nexport const describes = /*#__PURE__*/ ns(\"describes\");\n/** On a Tombstone object, describes the former type of the deleted object */\nexport const formerType = /*#__PURE__*/ ns(\"formerType\");\n/** Specifies the accuracy around the point established by the longitude and latitude */\nexport const accuracy = /*#__PURE__*/ ns(\"accuracy\");\n/** The altitude of a place */\nexport const altitude = /*#__PURE__*/ ns(\"altitude\");\n/** The content of the object. */\nexport const content = /*#__PURE__*/ ns(\"content\");\nexport const name = /*#__PURE__*/ ns(\"name\");\nexport const downstreamDuplicates = /*#__PURE__*/ ns(\"downstreamDuplicates\");\n/** The duration of the object */\nexport const duration = /*#__PURE__*/ ns(\"duration\");\n/** The ending time of the object */\nexport const endTime = /*#__PURE__*/ ns(\"endTime\");\n/** The display height expressed as device independent pixels */\nexport const height = /*#__PURE__*/ ns(\"height\");\n/** The target URI of the Link */\nexport const href = /*#__PURE__*/ ns(\"href\");\n/** A hint about the language of the referenced resource */\nexport const hreflang = /*#__PURE__*/ ns(\"hreflang\");\nexport const id = /*#__PURE__*/ ns(\"id\");\n/** The latitude */\nexport const latitude = /*#__PURE__*/ ns(\"latitude\");\n/** The longitude */\nexport const longitude = /*#__PURE__*/ ns(\"longitude\");\n/** The MIME Media Type */\nexport const mediaType = /*#__PURE__*/ ns(\"mediaType\");\nexport const objectType = /*#__PURE__*/ ns(\"objectType\");\n/** Specifies the date and time the object was published */\nexport const published = /*#__PURE__*/ ns(\"published\");\n/** Specifies a radius around the point established by the longitude and latitude */\nexport const radius = /*#__PURE__*/ ns(\"radius\");\n/** A numeric rating (>= 0.0, <= 5.0) for the object */\nexport const rating = /*#__PURE__*/ ns(\"rating\");\n/** The RFC 5988 or HTML5 Link Relation associated with the Link */\nexport const rel = /*#__PURE__*/ ns(\"rel\");\n/** In a strictly ordered logical collection, specifies the index position of the first item in the items list */\nexport const startIndex = /*#__PURE__*/ ns(\"startIndex\");\n/** The starting time of the object */\nexport const startTime = /*#__PURE__*/ ns(\"startTime\");\n/** A short summary of the object */\nexport const summary = /*#__PURE__*/ ns(\"summary\");\n/** The total number of items in a logical collection */\nexport const totalItems = /*#__PURE__*/ ns(\"totalItems\");\n/** Identifies the unit of measurement used by the radius, altitude and accuracy properties. The value can be expressed either as one of a set of predefined units or as a well-known common URI that identifies units. */\nexport const units = /*#__PURE__*/ ns(\"units\");\n/** Specifies when the object was last updated */\nexport const updated = /*#__PURE__*/ ns(\"updated\");\nexport const upstreamDuplicates = /*#__PURE__*/ ns(\"upstreamDuplicates\");\nexport const verb = /*#__PURE__*/ ns(\"verb\");\n/** Specifies the preferred display width of the content, expressed in terms of device independent pixels. */\nexport const width = /*#__PURE__*/ ns(\"width\");\n/** Specifies the date and time the object was deleted */\nexport const deleted = /*#__PURE__*/ ns(\"deleted\");\n/* Other terms */\n","var e,t,r;!function(e){function t(){this.globalThis=this,delete e.prototype._T_}\"object\"!=typeof globalThis&&(this?t():(e.defineProperty(e.prototype,\"_T_\",{configurable:!0,get:t}),_T_))}(Object),function(e){e.NamedNode=\"NamedNode\",e.BlankNode=\"BlankNode\",e.Literal=\"Literal\"}(e||(e={})),function(e){e[e.subject=0]=\"subject\",e[e.predicate=1]=\"predicate\",e[e.object=2]=\"object\",e[e.graph=3]=\"graph\"}(t||(t={})),function(e){e.collections=\"COLLECTIONS\",e.defaultGraphType=\"DEFAULT_GRAPH_TYPE\",e.equalsMethod=\"EQUALS_METHOD\",e.id=\"ID\",e.idStamp=\"ID_STAMP\",e.identity=\"IDENTITY\",e.reversibleId=\"REVERSIBLE_ID\",e.variableType=\"VARIABLE_TYPE\"}(r||(r={}));var a={boolean:\"http://www.w3.org/2001/XMLSchema#boolean\",dateTime:\"http://www.w3.org/2001/XMLSchema#dateTime\",double:\"http://www.w3.org/2001/XMLSchema#double\",decimal:\"http://www.w3.org/2001/XMLSchema#decimal\",integer:\"http://www.w3.org/2001/XMLSchema#integer\",langString:\"http://www.w3.org/1999/02/22-rdf-syntax-ns#langString\",string:\"http://www.w3.org/2001/XMLSchema#string\"};function n(e,t){if(e===t)return!0;if(!e||!t)return e===t;if(Array.isArray(e)||Array.isArray(t))return!(!Array.isArray(e)||!Array.isArray(t))&&(n(e[0],t[0])&&n(e[1],t[1])&&n(e[2],t[2])&&n(e[3],t[3]));if(i.isQuad(e)||i.isQuad(t))return!(!i.isQuad(e)||!i.isQuad(t))&&(n(e.subject,t.subject)&&n(e.predicate,t.predicate)&&n(e.object,t.object)&&n(e.graph,t.graph));switch(e.termType){case\"Literal\":return e.termType===t.termType&&e.value===t.value&&t.datatype==t.datatype&&t.language==t.language;default:return!(!e.termType||!t.termType)&&(e.termType===t.termType&&e.value===t.value)}}var o={equals(e){return n(this,e)},toCanonical(){return this}};class i{constructor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.bnIndex=e.bnIndex||0,this.supports=e.supports||{[r.collections]:!1,[r.defaultGraphType]:!1,[r.equalsMethod]:!1,[r.id]:!0,[r.idStamp]:!1,[r.identity]:!1,[r.reversibleId]:!0,[r.variableType]:!1}}static isQuad(e){return!Array.isArray(e)&&\"object\"==typeof e&&null!==e&&!!(\"subject\"in e&&\"predicate\"in e&&\"object\"in e)}namedNode(t){var r=Object.create(o);return r.termType=e.NamedNode,r.value=t,r}blankNode(t){var r=Object.create(o);return r.termType=e.BlankNode,r.value=t||\"b\".concat(++this.bnIndex),r}literal(t,r){if(\"string\"!=typeof t)return this.parseLiteral(t);var n=Object.create(o);return n.termType=e.Literal,n.language=\"string\"==typeof r?r:void 0,n.datatype=\"string\"==typeof r?this.namedNode(a.langString):r||this.namedNode(a.string),n.value=t,n}defaultGraph(){return this.namedNode(\"rdf:defaultGraph\")}quad(e,t,r,a){return{subject:e,predicate:t,object:r,graph:a||this.defaultGraph()}}isQuad(e){return i.isQuad(e)}quadruple(e,t,r,a){return[e,t,r,a||this.defaultGraph()]}fromTerm(e){return\"Literal\"===e.termType?this.literal(e.value,e.language||e.datatype):{termType:e.termType,value:e.value}}fromQuad(e){return{subject:e.subject,predicate:e.predicate,object:e.object,graph:e.graph||this.defaultGraph()}}fromQdr(e){return{subject:e[0],predicate:e[1],object:e[2],graph:e[3]||this.defaultGraph()}}qdrFromQuad(e){return[e.subject,e.predicate,e.object,e.graph||this.defaultGraph()]}qdrFromQdr(e){return[e[0],e[1],e[2],e[3]||this.defaultGraph()]}equals(e,t){return n(e,t)}fromId(e){return this.termFromNQ(e)}id(e){return this.toNQ(e)}termFromNQ(e){if(e.startsWith(\"<\"))return this.namedNode(e.slice(\"<\".length,-1));if(e.startsWith(\"_\"))return this.blankNode(e.slice(\"_:\".length,-1));if(e.startsWith('\"')){var[t,r]=e.split(\"^^\"),[a,n]=t.split(\"@\");return this.literal(a.slice(1,-1),n||(r?this.namedNode(r):void 0))}throw new Error(\"Unknown term given\")}toNQ(e){if(Array.isArray(e)){var t=e[3]===this.defaultGraph()?\"\":this.toNQ(e[3])+\" \";return\"\".concat(this.toNQ(e[0]),\" \").concat(this.toNQ(e[1]),\" \").concat(this.toNQ(e[2]),\" \").concat(t,\".\")}return this.isQuad(e)?this.quadToNQ(e):this.termToNQ(e)}parseLiteral(e){var t=void 0,r=void 0;if(\"number\"==typeof e||e instanceof Number)r=e.toString().indexOf(\"e\")<0&&Math.ceil(e)<=Number.MAX_SAFE_INTEGER?Number.isInteger(e)?a.integer:a.decimal:a.double,t=e.toString();else if(\"boolean\"==typeof e||e instanceof Boolean)t=e.toString(),r=a.boolean;else if(\"bigint\"==typeof e)r=a.integer,t=e.toString();else if(\"object\"==typeof e&&e instanceof Date){if(isNaN(e.getTime()))throw new Error(\"Invalid date given\");t=e.toISOString(),r=a.dateTime}if(void 0!==r)return this.literal(t,this.namedNode(r));throw new Error(\"Can't parse value '\".concat(e,\"'\"))}termToNQ(t){switch(t.termType){case e.BlankNode:return t.value.startsWith(\"_:\")?t.value:\"_:\".concat(t.value);case e.NamedNode:return\"<\".concat(t.value,\">\");case e.Literal:var r='\"'.concat(t.value.replace(/([\\n\"\\\\\\r])/g,e=>{switch(e){case\"\\n\":return\"\\\\n\";case\"\\r\":return\"\\\\r\";case'\"':return'\\\\\"';case\"\\\\\":return\"\\\\\\\\\";default:return e}}),'\"');return t.datatype?t.datatype.value===a.string?r:\"\".concat(r,\"^^\").concat(this.termToNQ(t.datatype)):t.language?\"\".concat(r,\"@\").concat(t.language):r;default:throw new Error(\"Nonstandard termtype '\".concat(t.termType,\"' given\"))}}quadrupleToNQ(e){var r=e[t.graph]&&e[t.graph]!==this.defaultGraph()?this.toNQ(e[t.graph])+\" \":\"\";return\"\".concat(this.toNQ(e[t.subject]),\" \").concat(this.toNQ(e[t.predicate]),\" \").concat(this.toNQ(e[t.object]),\" \").concat(r,\".\\n\")}quadToNQ(e){return this.quadrupleToNQ([e.subject,e.predicate,e.object,e.graph||this.defaultGraph()])}}var u=new i;function d(e){return\"object\"==typeof e&&null!==e&&\"termType\"in e}function c(t){return d(t)&&t.termType===e.NamedNode}function l(t){return d(t)&&t.termType===e.BlankNode}function s(t){return d(t)&&t.termType===e.Literal}var p=[e.NamedNode.toString(),e.BlankNode.toString(),e.Literal.toString()];function h(e){return d(e)&&!0===p.includes(e.termType)}var f,g,m,y=[e.NamedNode.toString(),e.BlankNode.toString()];function b(e){return d(e)&&!0===y.includes(e.termType)}function N(e){return\"object\"==typeof e&&null!==e&&\"subject\"in e}function v(e){return e.value.indexOf(\"#\")<0?e.value:e.value.split(\"#\")[0]}function T(e,t,r){!function(e,t){var r=globalThis[e];return void 0===r||r===u||t}(e,r)?(void 0===g||r)&&(globalThis[e]=t,g=t):(globalThis[e]=t,g=t)}if(\"undefined\"!=typeof Symbol){var w=Symbol.for(\"rdfFactory\");f=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];T(w,e,t),g=globalThis[w]},m=w}else{f=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];T(\"rdfFactory\",e,t)},m=\"rdfFactory\",g=globalThis.rdfFactory}f(u);var Q=e=>t=>g.namedNode(\"\".concat(e).concat(t)),j=\"undefined\"!=typeof Proxy?new Proxy(g||{},{ownKeys:()=>g&&Object.keys(g)||[],getOwnPropertyDescriptor:(e,t)=>Object.getOwnPropertyDescriptor(g,t),set:(e,t,r)=>(g[t]=r,!0),get:(e,t)=>g[t]}):[\"namedNode\",\"blankNode\",\"literal\",\"defaultGraph\",\"quad\",\"quadruple\",\"fromTerm\",\"fromQuad\",\"fromQdr\",\"qdrFromQuad\",\"qdrFromQdr\",\"equals\",\"id\",\"toNQ\",\"fromId\",\"termToNQ\",\"termFromNQ\",\"quadrupleToNQ\",\"quadToNQ\",\"supports\"].reduce((e,t)=>(e[t]=function(){return g[t](...arguments)},e),{});export default j;export{r as Feature,i as PlainFactory,t as QuadPosition,e as TermType,Q as createNS,v as doc,g as globalFactory,m as globalSymbol,l as isBlankNode,s as isLiteral,c as isNamedNode,b as isNode,N as isQuad,h as isSomeTerm,d as isTerm,f as setup};\n//# sourceMappingURL=index.bundled.js.map\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'DCMI Metadata Terms' ontology */\nexport const ns = createNS(\"http://purl.org/dc/terms/\");\n/* Classes */\n/** A resource that acts or has the power to act. */\nexport const Agent = /*#__PURE__*/ ns(\"Agent\");\n/** A group of agents. */\nexport const AgentClass = /*#__PURE__*/ ns(\"AgentClass\");\n/** A book, article, or other documentary resource. */\nexport const BibliographicResource = /*#__PURE__*/ ns(\"BibliographicResource\");\n/** The set of regions in space defined by their geographic coordinates according to the DCMI Box Encoding Scheme. */\nexport const Box = /*#__PURE__*/ ns(\"Box\");\n/** A digital resource format. */\nexport const FileFormat = /*#__PURE__*/ ns(\"FileFormat\");\n/** A rate at which something recurs. */\nexport const Frequency = /*#__PURE__*/ ns(\"Frequency\");\n/** The set of codes listed in ISO 3166-1 for the representation of names of countries. */\nexport const ISO3166 = /*#__PURE__*/ ns(\"ISO3166\");\n/** The three-letter alphabetic codes listed in ISO639-2 for the representation of names of languages. */\nexport const ISO639_2 = /*#__PURE__*/ ns(\"ISO639-2\");\n/** The set of three-letter codes listed in ISO 639-3 for the representation of names of languages. */\nexport const ISO639_3 = /*#__PURE__*/ ns(\"ISO639-3\");\n/** The extent or range of judicial, law enforcement, or other authority. */\nexport const Jurisdiction = /*#__PURE__*/ ns(\"Jurisdiction\");\n/** A legal document giving official permission to do something with a Resource. */\nexport const LicenseDocument = /*#__PURE__*/ ns(\"LicenseDocument\");\n/** A system of signs, symbols, sounds, gestures, or rules used in communication. */\nexport const LinguisticSystem = /*#__PURE__*/ ns(\"LinguisticSystem\");\n/** A spatial region or named place. */\nexport const Location = /*#__PURE__*/ ns(\"Location\");\n/** A location, period of time, or jurisdiction. */\nexport const LocationPeriodOrJurisdiction = /*#__PURE__*/ ns(\"LocationPeriodOrJurisdiction\");\n/** A file format or physical medium. */\nexport const MediaType = /*#__PURE__*/ ns(\"MediaType\");\n/** A media type or extent. */\nexport const MediaTypeOrExtent = /*#__PURE__*/ ns(\"MediaTypeOrExtent\");\n/** A method by which resources are added to a collection. */\nexport const MethodOfAccrual = /*#__PURE__*/ ns(\"MethodOfAccrual\");\n/** A process that is used to engender knowledge, attitudes, and skills. */\nexport const MethodOfInstruction = /*#__PURE__*/ ns(\"MethodOfInstruction\");\n/** The set of time intervals defined by their limits according to the DCMI Period Encoding Scheme. */\nexport const Period = /*#__PURE__*/ ns(\"Period\");\n/** An interval of time that is named or defined by its start and end dates. */\nexport const PeriodOfTime = /*#__PURE__*/ ns(\"PeriodOfTime\");\n/** A physical material or carrier. */\nexport const PhysicalMedium = /*#__PURE__*/ ns(\"PhysicalMedium\");\n/** A material thing. */\nexport const PhysicalResource = /*#__PURE__*/ ns(\"PhysicalResource\");\n/** The set of points in space defined by their geographic coordinates according to the DCMI Point Encoding Scheme. */\nexport const Point = /*#__PURE__*/ ns(\"Point\");\n/** A plan or course of action by an authority, intended to influence and determine decisions, actions, and other matters. */\nexport const Policy = /*#__PURE__*/ ns(\"Policy\");\n/** A statement of any changes in ownership and custody of a resource since its creation that are significant for its authenticity, integrity, and interpretation. */\nexport const ProvenanceStatement = /*#__PURE__*/ ns(\"ProvenanceStatement\");\n/** The set of tags, constructed according to RFC 1766, for the identification of languages. */\nexport const RFC1766 = /*#__PURE__*/ ns(\"RFC1766\");\n/** The set of tags constructed according to RFC 3066 for the identification of languages. */\nexport const RFC3066 = /*#__PURE__*/ ns(\"RFC3066\");\n/** The set of tags constructed according to RFC 4646 for the identification of languages. */\nexport const RFC4646 = /*#__PURE__*/ ns(\"RFC4646\");\n/** The set of tags constructed according to RFC 5646 for the identification of languages. */\nexport const RFC5646 = /*#__PURE__*/ ns(\"RFC5646\");\n/** A statement about the intellectual property rights (IPR) held in or over a Resource, a legal document giving official permission to do something with a resource, or a statement about access rights. */\nexport const RightsStatement = /*#__PURE__*/ ns(\"RightsStatement\");\n/** A dimension or extent, or a time taken to play or execute. */\nexport const SizeOrDuration = /*#__PURE__*/ ns(\"SizeOrDuration\");\n/** A basis for comparison; a reference point against which other things can be evaluated. */\nexport const Standard = /*#__PURE__*/ ns(\"Standard\");\n/** The set of identifiers constructed according to the generic syntax for Uniform Resource Identifiers as specified by the Internet Engineering Task Force. */\nexport const URI = /*#__PURE__*/ ns(\"URI\");\n/** The set of dates and times constructed according to the W3C Date and Time Formats Specification. */\nexport const W3CDTF = /*#__PURE__*/ ns(\"W3CDTF\");\n/* Properties */\n/** A summary of the resource. */\nexport const dctermsabstract = /*#__PURE__*/ ns(\"abstract\");\n/** Information about who can access the resource or an indication of its security status. */\nexport const accessRights = /*#__PURE__*/ ns(\"accessRights\");\n/** The method by which items are added to a collection. */\nexport const accrualMethod = /*#__PURE__*/ ns(\"accrualMethod\");\n/** The frequency with which items are added to a collection. */\nexport const accrualPeriodicity = /*#__PURE__*/ ns(\"accrualPeriodicity\");\n/** The policy governing the addition of items to a collection. */\nexport const accrualPolicy = /*#__PURE__*/ ns(\"accrualPolicy\");\n/** An alternative name for the resource. */\nexport const alternative = /*#__PURE__*/ ns(\"alternative\");\n/** A class of entity for whom the resource is intended or useful. */\nexport const audience = /*#__PURE__*/ ns(\"audience\");\n/** Date (often a range) that the resource became or will become available. */\nexport const available = /*#__PURE__*/ ns(\"available\");\n/** A bibliographic reference for the resource. */\nexport const bibliographicCitation = /*#__PURE__*/ ns(\"bibliographicCitation\");\n/** An established standard to which the described resource conforms. */\nexport const conformsTo = /*#__PURE__*/ ns(\"conformsTo\");\n/** An entity responsible for making contributions to the resource. */\nexport const contributor = /*#__PURE__*/ ns(\"contributor\");\n/** The spatial or temporal topic of the resource, the spatial applicability of the resource, or the jurisdiction under which the resource is relevant. */\nexport const coverage = /*#__PURE__*/ ns(\"coverage\");\n/** Date of creation of the resource. */\nexport const created = /*#__PURE__*/ ns(\"created\");\n/** An entity primarily responsible for making the resource. */\nexport const creator = /*#__PURE__*/ ns(\"creator\");\n/** A point or period of time associated with an event in the lifecycle of the resource. */\nexport const date = /*#__PURE__*/ ns(\"date\");\n/** Date of acceptance of the resource. */\nexport const dateAccepted = /*#__PURE__*/ ns(\"dateAccepted\");\n/** Date of copyright. */\nexport const dateCopyrighted = /*#__PURE__*/ ns(\"dateCopyrighted\");\n/** Date of submission of the resource. */\nexport const dateSubmitted = /*#__PURE__*/ ns(\"dateSubmitted\");\n/** An account of the resource. */\nexport const description = /*#__PURE__*/ ns(\"description\");\n/** A class of entity, defined in terms of progression through an educational or training context, for which the described resource is intended. */\nexport const educationLevel = /*#__PURE__*/ ns(\"educationLevel\");\n/** The size or duration of the resource. */\nexport const extent = /*#__PURE__*/ ns(\"extent\");\n/** The file format, physical medium, or dimensions of the resource. */\nexport const format = /*#__PURE__*/ ns(\"format\");\n/** A related resource that is substantially the same as the pre-existing described resource, but in another format. */\nexport const hasFormat = /*#__PURE__*/ ns(\"hasFormat\");\n/** A related resource that is included either physically or logically in the described resource. */\nexport const hasPart = /*#__PURE__*/ ns(\"hasPart\");\n/** A related resource that is a version, edition, or adaptation of the described resource. */\nexport const hasVersion = /*#__PURE__*/ ns(\"hasVersion\");\n/** An unambiguous reference to the resource within a given context. */\nexport const identifier = /*#__PURE__*/ ns(\"identifier\");\n/** A process, used to engender knowledge, attitudes and skills, that the described resource is designed to support. */\nexport const instructionalMethod = /*#__PURE__*/ ns(\"instructionalMethod\");\n/** A related resource that is substantially the same as the described resource, but in another format. */\nexport const isFormatOf = /*#__PURE__*/ ns(\"isFormatOf\");\n/** A related resource in which the described resource is physically or logically included. */\nexport const isPartOf = /*#__PURE__*/ ns(\"isPartOf\");\n/** A related resource that references, cites, or otherwise points to the described resource. */\nexport const isReferencedBy = /*#__PURE__*/ ns(\"isReferencedBy\");\n/** A related resource that supplants, displaces, or supersedes the described resource. */\nexport const isReplacedBy = /*#__PURE__*/ ns(\"isReplacedBy\");\n/** A related resource that requires the described resource to support its function, delivery, or coherence. */\nexport const isRequiredBy = /*#__PURE__*/ ns(\"isRequiredBy\");\n/** A related resource of which the described resource is a version, edition, or adaptation. */\nexport const isVersionOf = /*#__PURE__*/ ns(\"isVersionOf\");\n/** Date of formal issuance (e.g., publication) of the resource. */\nexport const issued = /*#__PURE__*/ ns(\"issued\");\n/** A language of the resource. */\nexport const language = /*#__PURE__*/ ns(\"language\");\n/** A legal document giving official permission to do something with the resource. */\nexport const license = /*#__PURE__*/ ns(\"license\");\n/** An entity that mediates access to the resource and for whom the resource is intended or useful. */\nexport const mediator = /*#__PURE__*/ ns(\"mediator\");\n/** The material or physical carrier of the resource. */\nexport const medium = /*#__PURE__*/ ns(\"medium\");\n/** Date on which the resource was changed. */\nexport const modified = /*#__PURE__*/ ns(\"modified\");\n/** A statement of any changes in ownership and custody of the resource since its creation that are significant for its authenticity, integrity, and interpretation. */\nexport const provenance = /*#__PURE__*/ ns(\"provenance\");\n/** An entity responsible for making the resource available. */\nexport const publisher = /*#__PURE__*/ ns(\"publisher\");\n/** A related resource that is referenced, cited, or otherwise pointed to by the described resource. */\nexport const references = /*#__PURE__*/ ns(\"references\");\n/** A related resource. */\nexport const relation = /*#__PURE__*/ ns(\"relation\");\n/** A related resource that is supplanted, displaced, or superseded by the described resource. */\nexport const replaces = /*#__PURE__*/ ns(\"replaces\");\n/** A related resource that is required by the described resource to support its function, delivery, or coherence. */\nexport const requires = /*#__PURE__*/ ns(\"requires\");\n/** Information about rights held in and over the resource. */\nexport const rights = /*#__PURE__*/ ns(\"rights\");\n/** A person or organization owning or managing rights over the resource. */\nexport const rightsHolder = /*#__PURE__*/ ns(\"rightsHolder\");\n/** A related resource from which the described resource is derived. */\nexport const source = /*#__PURE__*/ ns(\"source\");\n/** Spatial characteristics of the resource. */\nexport const spatial = /*#__PURE__*/ ns(\"spatial\");\n/** The topic of the resource. */\nexport const subject = /*#__PURE__*/ ns(\"subject\");\n/** A list of subunits of the resource. */\nexport const tableOfContents = /*#__PURE__*/ ns(\"tableOfContents\");\n/** Temporal characteristics of the resource. */\nexport const temporal = /*#__PURE__*/ ns(\"temporal\");\n/** A name given to the resource. */\nexport const title = /*#__PURE__*/ ns(\"title\");\n/** The nature or genre of the resource. */\nexport const type = /*#__PURE__*/ ns(\"type\");\n/** Date (often a range) of validity of a resource. */\nexport const valid = /*#__PURE__*/ ns(\"valid\");\n/* Other terms */\n/** The set of classes specified by the DCMI Type Vocabulary, used to categorize the nature or genre of the resource. */\nexport const DCMIType = /*#__PURE__*/ ns(\"DCMIType\");\n/** The set of conceptual resources specified by the Dewey Decimal Classification. */\nexport const DDC = /*#__PURE__*/ ns(\"DDC\");\n/** The set of media types specified by the Internet Assigned Numbers Authority. */\nexport const IMT = /*#__PURE__*/ ns(\"IMT\");\n/** The set of conceptual resources specified by the Library of Congress Classification. */\nexport const LCC = /*#__PURE__*/ ns(\"LCC\");\n/** The set of labeled concepts specified by the Library of Congress Subject Headings. */\nexport const LCSH = /*#__PURE__*/ ns(\"LCSH\");\n/** The set of labeled concepts specified by the Medical Subject Headings. */\nexport const MESH = /*#__PURE__*/ ns(\"MESH\");\n/** The set of conceptual resources specified by the National Library of Medicine Classification. */\nexport const NLM = /*#__PURE__*/ ns(\"NLM\");\n/** The set of places specified by the Getty Thesaurus of Geographic Names. */\nexport const TGN = /*#__PURE__*/ ns(\"TGN\");\n/** The set of conceptual resources specified by the Universal Decimal Classification. */\nexport const UDC = /*#__PURE__*/ ns(\"UDC\");\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'Friend of a Friend (FOAF) vocabulary' ontology */\nexport const ns = createNS(\"http://xmlns.com/foaf/0.1/\");\n/* Classes */\n/** A foaf:LabelProperty is any RDF property with texual values that serve as labels. */\nexport const LabelProperty = /*#__PURE__*/ ns(\"LabelProperty\");\n/** A person. */\nexport const Person = /*#__PURE__*/ ns(\"Person\");\n/** An agent (eg. person, group, software or physical artifact). */\nexport const Agent = /*#__PURE__*/ ns(\"Agent\");\n/** A document. */\nexport const Document = /*#__PURE__*/ ns(\"Document\");\n/** An organization. */\nexport const Organization = /*#__PURE__*/ ns(\"Organization\");\n/** A class of Agents. */\nexport const Group = /*#__PURE__*/ ns(\"Group\");\n/** A project (a collective endeavour of some kind). */\nexport const Project = /*#__PURE__*/ ns(\"Project\");\n/** An image. */\nexport const Image = /*#__PURE__*/ ns(\"Image\");\n/** A personal profile RDF document. */\nexport const PersonalProfileDocument = /*#__PURE__*/ ns(\"PersonalProfileDocument\");\n/** An online account. */\nexport const OnlineAccount = /*#__PURE__*/ ns(\"OnlineAccount\");\n/** An online gaming account. */\nexport const OnlineGamingAccount = /*#__PURE__*/ ns(\"OnlineGamingAccount\");\n/** An online e-commerce account. */\nexport const OnlineEcommerceAccount = /*#__PURE__*/ ns(\"OnlineEcommerceAccount\");\n/** An online chat account. */\nexport const OnlineChatAccount = /*#__PURE__*/ ns(\"OnlineChatAccount\");\n/* Properties */\n/** A\npersonal mailbox, ie. an Internet mailbox associated with exactly one owner, the first owner of this mailbox. This is a 'static inverse functional property', in that there is (across time and change) at most one individual that ever has any particular value for foaf:mbox. */\nexport const mbox = /*#__PURE__*/ ns(\"mbox\");\n/** The sha1sum of the URI of an Internet mailbox associated with exactly one owner, the first owner of the mailbox. */\nexport const mbox_sha1sum = /*#__PURE__*/ ns(\"mbox_sha1sum\");\n/** The gender of this Agent (typically but not necessarily 'male' or 'female'). */\nexport const gender = /*#__PURE__*/ ns(\"gender\");\n/** A textual geekcode for this person, see http://www.geekcode.com/geek.html */\nexport const geekcode = /*#__PURE__*/ ns(\"geekcode\");\n/** A checksum for the DNA of some thing. Joke. */\nexport const dnaChecksum = /*#__PURE__*/ ns(\"dnaChecksum\");\n/** A sha1sum hash, in hex. */\nexport const sha1 = /*#__PURE__*/ ns(\"sha1\");\n/** A location that something is based near, for some broadly human notion of near. */\nexport const based_near = /*#__PURE__*/ ns(\"based_near\");\n/** Title (Mr, Mrs, Ms, Dr. etc) */\nexport const title = /*#__PURE__*/ ns(\"title\");\n/** A short informal nickname characterising an agent (includes login identifiers, IRC and other chat nicknames). */\nexport const nick = /*#__PURE__*/ ns(\"nick\");\n/** A jabber ID for something. */\nexport const jabberID = /*#__PURE__*/ ns(\"jabberID\");\n/** An AIM chat ID */\nexport const aimChatID = /*#__PURE__*/ ns(\"aimChatID\");\n/** A Skype ID */\nexport const skypeID = /*#__PURE__*/ ns(\"skypeID\");\n/** An ICQ chat ID */\nexport const icqChatID = /*#__PURE__*/ ns(\"icqChatID\");\n/** A Yahoo chat ID */\nexport const yahooChatID = /*#__PURE__*/ ns(\"yahooChatID\");\n/** An MSN chat ID */\nexport const msnChatID = /*#__PURE__*/ ns(\"msnChatID\");\n/** A name for some thing. */\nexport const name = /*#__PURE__*/ ns(\"name\");\n/** The first name of a person. */\nexport const firstName = /*#__PURE__*/ ns(\"firstName\");\n/** The last name of a person. */\nexport const lastName = /*#__PURE__*/ ns(\"lastName\");\n/** The given name of some person. */\nexport const givenName = /*#__PURE__*/ ns(\"givenName\");\n/** The given name of some person. */\nexport const givenname = /*#__PURE__*/ ns(\"givenname\");\n/** The surname of some person. */\nexport const surname = /*#__PURE__*/ ns(\"surname\");\n/** The family name of some person. */\nexport const family_name = /*#__PURE__*/ ns(\"family_name\");\n/** The family name of some person. */\nexport const familyName = /*#__PURE__*/ ns(\"familyName\");\n/** A phone, specified using fully qualified tel: URI scheme (refs: http://www.w3.org/Addressing/schemes.html#tel). */\nexport const phone = /*#__PURE__*/ ns(\"phone\");\n/** A homepage for some thing. */\nexport const homepage = /*#__PURE__*/ ns(\"homepage\");\n/** A weblog of some thing (whether person, group, company etc.). */\nexport const weblog = /*#__PURE__*/ ns(\"weblog\");\n/** An OpenID for an Agent. */\nexport const openid = /*#__PURE__*/ ns(\"openid\");\n/** A tipjar document for this agent, describing means for payment and reward. */\nexport const tipjar = /*#__PURE__*/ ns(\"tipjar\");\n/** A .plan comment, in the tradition of finger and '.plan' files. */\nexport const plan = /*#__PURE__*/ ns(\"plan\");\n/** Something that was made by this agent. */\nexport const made = /*#__PURE__*/ ns(\"made\");\n/** An agent that\nmade this thing. */\nexport const maker = /*#__PURE__*/ ns(\"maker\");\n/** An image that can be used to represent some thing (ie. those depictions which are particularly representative of something, eg. one's photo on a homepage). */\nexport const img = /*#__PURE__*/ ns(\"img\");\n/** A depiction of some thing. */\nexport const depiction = /*#__PURE__*/ ns(\"depiction\");\n/** A thing depicted in this representation. */\nexport const depicts = /*#__PURE__*/ ns(\"depicts\");\n/** A derived thumbnail image. */\nexport const thumbnail = /*#__PURE__*/ ns(\"thumbnail\");\n/** A Myers Briggs (MBTI) personality classification. */\nexport const myersBriggs = /*#__PURE__*/ ns(\"myersBriggs\");\n/** A workplace homepage of some person; the homepage of an organization they work for. */\nexport const workplaceHomepage = /*#__PURE__*/ ns(\"workplaceHomepage\");\n/** A work info homepage of some person; a page about their work for some organization. */\nexport const workInfoHomepage = /*#__PURE__*/ ns(\"workInfoHomepage\");\n/** A homepage of a school attended by the person. */\nexport const schoolHomepage = /*#__PURE__*/ ns(\"schoolHomepage\");\n/** A person known by this person (indicating some level of reciprocated interaction between the parties). */\nexport const knows = /*#__PURE__*/ ns(\"knows\");\n/** A page about a topic of interest to this person. */\nexport const interest = /*#__PURE__*/ ns(\"interest\");\n/** A thing of interest to this person. */\nexport const topic_interest = /*#__PURE__*/ ns(\"topic_interest\");\n/** A link to the publications of this person. */\nexport const publications = /*#__PURE__*/ ns(\"publications\");\n/** A current project this person works on. */\nexport const currentProject = /*#__PURE__*/ ns(\"currentProject\");\n/** A project this person has previously worked on. */\nexport const pastProject = /*#__PURE__*/ ns(\"pastProject\");\n/** An organization funding a project or person. */\nexport const fundedBy = /*#__PURE__*/ ns(\"fundedBy\");\n/** A logo representing some thing. */\nexport const logo = /*#__PURE__*/ ns(\"logo\");\n/** A topic of some page or document. */\nexport const topic = /*#__PURE__*/ ns(\"topic\");\n/** The primary topic of some page or document. */\nexport const primaryTopic = /*#__PURE__*/ ns(\"primaryTopic\");\n/** The underlying or 'focal' entity associated with some SKOS-described concept. */\nexport const focus = /*#__PURE__*/ ns(\"focus\");\n/** A document that this thing is the primary topic of. */\nexport const isPrimaryTopicOf = /*#__PURE__*/ ns(\"isPrimaryTopicOf\");\n/** A page or document about this thing. */\nexport const page = /*#__PURE__*/ ns(\"page\");\n/** A theme. */\nexport const theme = /*#__PURE__*/ ns(\"theme\");\n/** Indicates an account held by this agent. */\nexport const account = /*#__PURE__*/ ns(\"account\");\n/** Indicates an account held by this agent. */\nexport const holdsAccount = /*#__PURE__*/ ns(\"holdsAccount\");\n/** Indicates a homepage of the service provide for this online account. */\nexport const accountServiceHomepage = /*#__PURE__*/ ns(\"accountServiceHomepage\");\n/** Indicates the name (identifier) associated with this online account. */\nexport const accountName = /*#__PURE__*/ ns(\"accountName\");\n/** Indicates a member of a Group */\nexport const member = /*#__PURE__*/ ns(\"member\");\n/** Indicates the class of individuals that are a member of a Group */\nexport const membershipClass = /*#__PURE__*/ ns(\"membershipClass\");\n/** The birthday of this Agent, represented in mm-dd string form, eg. '12-31'. */\nexport const birthday = /*#__PURE__*/ ns(\"birthday\");\n/** The age in years of some agent. */\nexport const age = /*#__PURE__*/ ns(\"age\");\n/** A string expressing what the user is happy for the general public (normally) to know about their current activity. */\nexport const status = /*#__PURE__*/ ns(\"status\");\n/* Other terms */\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'Resource Description Framework' ontology */\nexport const ns = createNS(\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\");\n/* Classes */\n/** The datatype of RDF literals storing fragments of HTML content */\nexport const HTML = /*#__PURE__*/ ns(\"HTML\");\n/** The datatype of language-tagged string values */\nexport const langString = /*#__PURE__*/ ns(\"langString\");\n/** The class of plain (i.e. untyped) literal values, as used in RIF and OWL 2 */\nexport const PlainLiteral = /*#__PURE__*/ ns(\"PlainLiteral\");\n/** The class of RDF properties. */\nexport const Property = /*#__PURE__*/ ns(\"Property\");\n/** The class of RDF statements. */\nexport const Statement = /*#__PURE__*/ ns(\"Statement\");\n/** The class of unordered containers. */\nexport const Bag = /*#__PURE__*/ ns(\"Bag\");\n/** The class of ordered containers. */\nexport const Seq = /*#__PURE__*/ ns(\"Seq\");\n/** The class of containers of alternatives. */\nexport const Alt = /*#__PURE__*/ ns(\"Alt\");\n/** The class of RDF Lists. */\nexport const List = /*#__PURE__*/ ns(\"List\");\n/** The empty list, with no items in it. If the rest of a list is nil then the list has no more items in it. */\nexport const nil = /*#__PURE__*/ ns(\"nil\");\n/** The datatype of XML literal values. */\nexport const XMLLiteral = /*#__PURE__*/ ns(\"XMLLiteral\");\n/* Properties */\n/** The subject is an instance of a class. */\nexport const type = /*#__PURE__*/ ns(\"type\");\n/** The subject of the subject RDF statement. */\nexport const subject = /*#__PURE__*/ ns(\"subject\");\n/** The predicate of the subject RDF statement. */\nexport const predicate = /*#__PURE__*/ ns(\"predicate\");\n/** The object of the subject RDF statement. */\nexport const object = /*#__PURE__*/ ns(\"object\");\n/** Idiomatic property used for structured values. */\nexport const value = /*#__PURE__*/ ns(\"value\");\n/** The first item in the subject RDF list. */\nexport const first = /*#__PURE__*/ ns(\"first\");\n/** The rest of the subject RDF list after the first item. */\nexport const rest = /*#__PURE__*/ ns(\"rest\");\n/* Other terms */\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'RDF-Schema' ontology */\nexport const ns = createNS(\"http://www.w3.org/2000/01/rdf-schema#\");\n/* Classes */\n/** The class resource, everything. */\nexport const Resource = /*#__PURE__*/ ns(\"Resource\");\n/** The class of classes. */\nexport const Class = /*#__PURE__*/ ns(\"Class\");\n/** The class of literal values, eg. textual strings and integers. */\nexport const Literal = /*#__PURE__*/ ns(\"Literal\");\n/** The class of RDF containers. */\nexport const Container = /*#__PURE__*/ ns(\"Container\");\n/** The class of container membership properties, rdf:_1, rdf:_2, ...,\n all of which are sub-properties of 'member'. */\nexport const ContainerMembershipProperty = /*#__PURE__*/ ns(\"ContainerMembershipProperty\");\n/** The class of RDF datatypes. */\nexport const Datatype = /*#__PURE__*/ ns(\"Datatype\");\n/* Properties */\n/** The subject is a subclass of a class. */\nexport const subClassOf = /*#__PURE__*/ ns(\"subClassOf\");\n/** The subject is a subproperty of a property. */\nexport const subPropertyOf = /*#__PURE__*/ ns(\"subPropertyOf\");\n/** A description of the subject resource. */\nexport const comment = /*#__PURE__*/ ns(\"comment\");\n/** A human-readable name for the subject. */\nexport const label = /*#__PURE__*/ ns(\"label\");\n/** A domain of the subject property. */\nexport const domain = /*#__PURE__*/ ns(\"domain\");\n/** A range of the subject property. */\nexport const range = /*#__PURE__*/ ns(\"range\");\n/** Further information about the subject resource. */\nexport const seeAlso = /*#__PURE__*/ ns(\"seeAlso\");\n/** The defininition of the subject resource. */\nexport const isDefinedBy = /*#__PURE__*/ ns(\"isDefinedBy\");\n/** A member of the subject resource. */\nexport const member = /*#__PURE__*/ ns(\"member\");\n/* Other terms */\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'Schema.org' ontology */\nexport const ns = createNS(\"http://schema.org/\");\n/* Classes */\n/** A radio channel that uses AM. */\nexport const AMRadioChannel = /*#__PURE__*/ ns(\"AMRadioChannel\");\n/** Reference documentation for application programming interfaces (APIs). */\nexport const APIReference = /*#__PURE__*/ ns(\"APIReference\");\n/** Web page type: About page. */\nexport const AboutPage = /*#__PURE__*/ ns(\"AboutPage\");\n/** The act of committing to/adopting an object.

\n\nRelated actions:

\n\n
\n */\nexport const AcceptAction = /*#__PURE__*/ ns(\"AcceptAction\");\n/** An accommodation is a place that can accommodate human beings, e.g. a hotel room, a camping pitch, or a meeting room. Many accommodations are for overnight stays, but this is not a mandatory requirement.\nFor more specific types of accommodations not defined in schema.org, one can use additionalType with external vocabularies.\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const Accommodation = /*#__PURE__*/ ns(\"Accommodation\");\n/** Accountancy business.

\n\nAs a LocalBusiness it can be described as a provider of one or more Service(s). */\nexport const AccountingService = /*#__PURE__*/ ns(\"AccountingService\");\n/** The act of accomplishing something via previous efforts. It is an instantaneous action rather than an ongoing process. */\nexport const AchieveAction = /*#__PURE__*/ ns(\"AchieveAction\");\n/** An action performed by a direct agent and indirect participants upon a direct object. Optionally happens at a location with the help of an inanimate instrument. The execution of the action may produce a result. Specific action sub-type documentation specifies the exact expectation of each argument/role.

\n\nSee also blog post and Actions overview document. */\nexport const Action = /*#__PURE__*/ ns(\"Action\");\n/** A set of requirements that a must be fulfilled in order to perform an Action. */\nexport const ActionAccessSpecification = /*#__PURE__*/ ns(\"ActionAccessSpecification\");\n/** The status of an Action. */\nexport const ActionStatusType = /*#__PURE__*/ ns(\"ActionStatusType\");\n/** The act of starting or activating a device or application (e.g. starting a timer or turning on a flashlight). */\nexport const ActivateAction = /*#__PURE__*/ ns(\"ActivateAction\");\n/** The act of editing by adding an object to a collection. */\nexport const AddAction = /*#__PURE__*/ ns(\"AddAction\");\n/** A geographical region, typically under the jurisdiction of a particular government. */\nexport const AdministrativeArea = /*#__PURE__*/ ns(\"AdministrativeArea\");\n/** An adult entertainment establishment. */\nexport const AdultEntertainment = /*#__PURE__*/ ns(\"AdultEntertainment\");\n/** When a single product is associated with multiple offers (for example, the same pair of shoes is offered by different merchants), then AggregateOffer can be used. */\nexport const AggregateOffer = /*#__PURE__*/ ns(\"AggregateOffer\");\n/** The average rating based on multiple ratings or reviews. */\nexport const AggregateRating = /*#__PURE__*/ ns(\"AggregateRating\");\n/** The act of expressing a consistency of opinion with the object. An agent agrees to/about an object (a proposition, topic or theme) with participants. */\nexport const AgreeAction = /*#__PURE__*/ ns(\"AgreeAction\");\n/** An organization that provides flights for passengers. */\nexport const Airline = /*#__PURE__*/ ns(\"Airline\");\n/** An airport. */\nexport const Airport = /*#__PURE__*/ ns(\"Airport\");\n/** An intangible item that describes an alignment between a learning resource and a node in an educational framework. */\nexport const AlignmentObject = /*#__PURE__*/ ns(\"AlignmentObject\");\n/** The act of organizing tasks/objects/events by associating resources to it. */\nexport const AllocateAction = /*#__PURE__*/ ns(\"AllocateAction\");\n/** An amusement park. */\nexport const AmusementPark = /*#__PURE__*/ ns(\"AmusementPark\");\n/** Animal shelter. */\nexport const AnimalShelter = /*#__PURE__*/ ns(\"AnimalShelter\");\n/** An answer offered to a question; perhaps correct, perhaps opinionated or wrong. */\nexport const Answer = /*#__PURE__*/ ns(\"Answer\");\n/** An apartment (in American English) or flat (in British English) is a self-contained housing unit (a type of residential real estate) that occupies only part of a building (Source: Wikipedia, the free encyclopedia, see http://en.wikipedia.org/wiki/Apartment). */\nexport const Apartment = /*#__PURE__*/ ns(\"Apartment\");\n/** Residence type: Apartment complex. */\nexport const ApartmentComplex = /*#__PURE__*/ ns(\"ApartmentComplex\");\n/** The act of inserting at the end if an ordered collection. */\nexport const AppendAction = /*#__PURE__*/ ns(\"AppendAction\");\n/** The act of registering to an organization/service without the guarantee to receive it.

\n\nRelated actions:

\n\n
    \n
  • RegisterAction: Unlike RegisterAction, ApplyAction has no guarantees that the application will be accepted.
  • \n
\n */\nexport const ApplyAction = /*#__PURE__*/ ns(\"ApplyAction\");\n/** Aquarium. */\nexport const Aquarium = /*#__PURE__*/ ns(\"Aquarium\");\n/** The act of arriving at a place. An agent arrives at a destination from a fromLocation, optionally with participants. */\nexport const ArriveAction = /*#__PURE__*/ ns(\"ArriveAction\");\n/** An art gallery. */\nexport const ArtGallery = /*#__PURE__*/ ns(\"ArtGallery\");\n/** An article, such as a news article or piece of investigative report. Newspapers and magazines have articles of many different types and this is intended to cover them all.

\n\nSee also blog post. */\nexport const Article = /*#__PURE__*/ ns(\"Article\");\n/** The act of posing a question / favor to someone.

\n\nRelated actions:

\n\n
    \n
  • ReplyAction: Appears generally as a response to AskAction.
  • \n
\n */\nexport const AskAction = /*#__PURE__*/ ns(\"AskAction\");\n/** The act of forming one's opinion, reaction or sentiment. */\nexport const AssessAction = /*#__PURE__*/ ns(\"AssessAction\");\n/** The act of allocating an action/event/task to some destination (someone or something). */\nexport const AssignAction = /*#__PURE__*/ ns(\"AssignAction\");\n/** Professional service: Attorney.

\n\nThis type is deprecated - LegalService is more inclusive and less ambiguous. */\nexport const Attorney = /*#__PURE__*/ ns(\"Attorney\");\n/** Intended audience for an item, i.e. the group for whom the item was created. */\nexport const Audience = /*#__PURE__*/ ns(\"Audience\");\n/** An audio file. */\nexport const AudioObject = /*#__PURE__*/ ns(\"AudioObject\");\n/** The act of granting permission to an object. */\nexport const AuthorizeAction = /*#__PURE__*/ ns(\"AuthorizeAction\");\n/** Auto body shop. */\nexport const AutoBodyShop = /*#__PURE__*/ ns(\"AutoBodyShop\");\n/** An car dealership. */\nexport const AutoDealer = /*#__PURE__*/ ns(\"AutoDealer\");\n/** An auto parts store. */\nexport const AutoPartsStore = /*#__PURE__*/ ns(\"AutoPartsStore\");\n/** A car rental business. */\nexport const AutoRental = /*#__PURE__*/ ns(\"AutoRental\");\n/** Car repair business. */\nexport const AutoRepair = /*#__PURE__*/ ns(\"AutoRepair\");\n/** A car wash business. */\nexport const AutoWash = /*#__PURE__*/ ns(\"AutoWash\");\n/** ATM/cash machine. */\nexport const AutomatedTeller = /*#__PURE__*/ ns(\"AutomatedTeller\");\n/** Car repair, sales, or parts. */\nexport const AutomotiveBusiness = /*#__PURE__*/ ns(\"AutomotiveBusiness\");\n/** A bakery. */\nexport const Bakery = /*#__PURE__*/ ns(\"Bakery\");\n/** A product or service offered by a bank whereby one may deposit, withdraw or transfer money and in some cases be paid interest. */\nexport const BankAccount = /*#__PURE__*/ ns(\"BankAccount\");\n/** Bank or credit union. */\nexport const BankOrCreditUnion = /*#__PURE__*/ ns(\"BankOrCreditUnion\");\n/** A bar or pub. */\nexport const BarOrPub = /*#__PURE__*/ ns(\"BarOrPub\");\n/** An image of a visual machine-readable code such as a barcode or QR code. */\nexport const Barcode = /*#__PURE__*/ ns(\"Barcode\");\n/** Beach. */\nexport const Beach = /*#__PURE__*/ ns(\"Beach\");\n/** Beauty salon. */\nexport const BeautySalon = /*#__PURE__*/ ns(\"BeautySalon\");\n/** Bed and breakfast.\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const BedAndBreakfast = /*#__PURE__*/ ns(\"BedAndBreakfast\");\n/** An entity holding detailed information about the available bed types, e.g. the quantity of twin beds for a hotel room. For the single case of just one bed of a certain type, you can use bed directly with a text. See also BedType (under development). */\nexport const BedDetails = /*#__PURE__*/ ns(\"BedDetails\");\n/** A type of bed. This is used for indicating the bed or beds available in an accommodation. */\nexport const BedType = /*#__PURE__*/ ns(\"BedType\");\n/** The act of forming a personal connection with someone (object) mutually/bidirectionally/symmetrically.

\n\nRelated actions:

\n\n
    \n
  • FollowAction: Unlike FollowAction, BefriendAction implies that the connection is reciprocal.
  • \n
\n */\nexport const BefriendAction = /*#__PURE__*/ ns(\"BefriendAction\");\n/** A bike store. */\nexport const BikeStore = /*#__PURE__*/ ns(\"BikeStore\");\n/** A blog. */\nexport const Blog = /*#__PURE__*/ ns(\"Blog\");\n/** A blog post. */\nexport const BlogPosting = /*#__PURE__*/ ns(\"BlogPosting\");\n/** A type of boarding policy used by an airline. */\nexport const BoardingPolicyType = /*#__PURE__*/ ns(\"BoardingPolicyType\");\n/** A body of water, such as a sea, ocean, or lake. */\nexport const BodyOfWater = /*#__PURE__*/ ns(\"BodyOfWater\");\n/** A book. */\nexport const Book = /*#__PURE__*/ ns(\"Book\");\n/** The publication format of the book. */\nexport const BookFormatType = /*#__PURE__*/ ns(\"BookFormatType\");\n/** A series of books. Included books can be indicated with the hasPart property. */\nexport const BookSeries = /*#__PURE__*/ ns(\"BookSeries\");\n/** A bookstore. */\nexport const BookStore = /*#__PURE__*/ ns(\"BookStore\");\n/** An agent bookmarks/flags/labels/tags/marks an object. */\nexport const BookmarkAction = /*#__PURE__*/ ns(\"BookmarkAction\");\n/** Boolean: True or False. */\nexport const Boolean = /*#__PURE__*/ ns(\"Boolean\");\n/** The act of obtaining an object under an agreement to return it at a later date. Reciprocal of LendAction.

\n\nRelated actions:

\n\n\n */\nexport const BorrowAction = /*#__PURE__*/ ns(\"BorrowAction\");\n/** A bowling alley. */\nexport const BowlingAlley = /*#__PURE__*/ ns(\"BowlingAlley\");\n/** A brand is a name used by an organization or business person for labeling a product, product group, or similar. */\nexport const Brand = /*#__PURE__*/ ns(\"Brand\");\n/** A BreadcrumbList is an ItemList consisting of a chain of linked Web pages, typically described using at least their URL and their name, and typically ending with the current page.

\n\nThe position property is used to reconstruct the order of the items in a BreadcrumbList The convention is that a breadcrumb list has an itemListOrder of ItemListOrderAscending (lower values listed first), and that the first items in this list correspond to the \"top\" or beginning of the breadcrumb trail, e.g. with a site or section homepage. The specific values of 'position' are not assigned meaning for a BreadcrumbList, but they should be integers, e.g. beginning with '1' for the first item in the list. */\nexport const BreadcrumbList = /*#__PURE__*/ ns(\"BreadcrumbList\");\n/** Brewery. */\nexport const Brewery = /*#__PURE__*/ ns(\"Brewery\");\n/** A bridge. */\nexport const Bridge = /*#__PURE__*/ ns(\"Bridge\");\n/** A unique instance of a BroadcastService on a CableOrSatelliteService lineup. */\nexport const BroadcastChannel = /*#__PURE__*/ ns(\"BroadcastChannel\");\n/** An over the air or online broadcast event. */\nexport const BroadcastEvent = /*#__PURE__*/ ns(\"BroadcastEvent\");\n/** The frequency in MHz and the modulation used for a particular BroadcastService. */\nexport const BroadcastFrequencySpecification = /*#__PURE__*/ ns(\"BroadcastFrequencySpecification\");\n/** A delivery service through which content is provided via broadcast over the air or online. */\nexport const BroadcastService = /*#__PURE__*/ ns(\"BroadcastService\");\n/** A Buddhist temple. */\nexport const BuddhistTemple = /*#__PURE__*/ ns(\"BuddhistTemple\");\n/** A reservation for bus travel.

\n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. For offers of tickets, use Offer. */\nexport const BusReservation = /*#__PURE__*/ ns(\"BusReservation\");\n/** A bus station. */\nexport const BusStation = /*#__PURE__*/ ns(\"BusStation\");\n/** A bus stop. */\nexport const BusStop = /*#__PURE__*/ ns(\"BusStop\");\n/** A trip on a commercial bus line. */\nexport const BusTrip = /*#__PURE__*/ ns(\"BusTrip\");\n/** A set of characteristics belonging to businesses, e.g. who compose an item's target audience. */\nexport const BusinessAudience = /*#__PURE__*/ ns(\"BusinessAudience\");\n/** A business entity type is a conceptual entity representing the legal form, the size, the main line of business, the position in the value chain, or any combination thereof, of an organization or business person.

\n\nCommonly used values:

\n\n
    \n
  • http://purl.org/goodrelations/v1#Business
  • \n
  • http://purl.org/goodrelations/v1#Enduser
  • \n
  • http://purl.org/goodrelations/v1#PublicInstitution
  • \n
  • http://purl.org/goodrelations/v1#Reseller
  • \n
\n */\nexport const BusinessEntityType = /*#__PURE__*/ ns(\"BusinessEntityType\");\n/** Event type: Business event. */\nexport const BusinessEvent = /*#__PURE__*/ ns(\"BusinessEvent\");\n/** The business function specifies the type of activity or access (i.e., the bundle of rights) offered by the organization or business person through the offer. Typical are sell, rental or lease, maintenance or repair, manufacture / produce, recycle / dispose, engineering / construction, or installation. Proprietary specifications of access rights are also instances of this class.

\n\nCommonly used values:

\n\n
    \n
  • http://purl.org/goodrelations/v1#ConstructionInstallation
  • \n
  • http://purl.org/goodrelations/v1#Dispose
  • \n
  • http://purl.org/goodrelations/v1#LeaseOut
  • \n
  • http://purl.org/goodrelations/v1#Maintain
  • \n
  • http://purl.org/goodrelations/v1#ProvideService
  • \n
  • http://purl.org/goodrelations/v1#Repair
  • \n
  • http://purl.org/goodrelations/v1#Sell
  • \n
  • http://purl.org/goodrelations/v1#Buy
  • \n
\n */\nexport const BusinessFunction = /*#__PURE__*/ ns(\"BusinessFunction\");\n/** The act of giving money to a seller in exchange for goods or services rendered. An agent buys an object, product, or service from a seller for a price. Reciprocal of SellAction. */\nexport const BuyAction = /*#__PURE__*/ ns(\"BuyAction\");\n/** A service which provides access to media programming like TV or radio. Access may be via cable or satellite. */\nexport const CableOrSatelliteService = /*#__PURE__*/ ns(\"CableOrSatelliteService\");\n/** A cafe or coffee shop. */\nexport const CafeOrCoffeeShop = /*#__PURE__*/ ns(\"CafeOrCoffeeShop\");\n/** A camping site, campsite, or Campground is a place used for overnight stay in the outdoors, typically containing individual CampingPitch locations.

\n\nIn British English a campsite is an area, usually divided into a number of pitches, where people can camp overnight using tents or camper vans or caravans; this British English use of the word is synonymous with the American English expression campground. In American English the term campsite generally means an area where an individual, family, group, or military unit can pitch a tent or park a camper; a campground may contain many campsites (Source: Wikipedia see https://en.wikipedia.org/wiki/Campsite).

\n\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const Campground = /*#__PURE__*/ ns(\"Campground\");\n/** A CampingPitch is an individual place for overnight stay in the outdoors, typically being part of a larger camping site, or Campground.

\n\nIn British English a campsite, or campground, is an area, usually divided into a number of pitches, where people can camp overnight using tents or camper vans or caravans; this British English use of the word is synonymous with the American English expression campground. In American English the term campsite generally means an area where an individual, family, group, or military unit can pitch a tent or park a camper; a campground may contain many campsites.\n(Source: Wikipedia see https://en.wikipedia.org/wiki/Campsite).

\n\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const CampingPitch = /*#__PURE__*/ ns(\"CampingPitch\");\n/** A canal, like the Panama Canal. */\nexport const Canal = /*#__PURE__*/ ns(\"Canal\");\n/** The act of asserting that a future event/action is no longer going to happen.

\n\nRelated actions:

\n\n\n */\nexport const CancelAction = /*#__PURE__*/ ns(\"CancelAction\");\n/** A car is a wheeled, self-powered motor vehicle used for transportation. */\nexport const Car = /*#__PURE__*/ ns(\"Car\");\n/** A casino. */\nexport const Casino = /*#__PURE__*/ ns(\"Casino\");\n/** A Catholic church. */\nexport const CatholicChurch = /*#__PURE__*/ ns(\"CatholicChurch\");\n/** A graveyard. */\nexport const Cemetery = /*#__PURE__*/ ns(\"Cemetery\");\n/** An agent inspects, determines, investigates, inquires, or examines an object's accuracy, quality, condition, or state. */\nexport const CheckAction = /*#__PURE__*/ ns(\"CheckAction\");\n/** The act of an agent communicating (service provider, social media, etc) their arrival by registering/confirming for a previously reserved service (e.g. flight check in) or at a place (e.g. hotel), possibly resulting in a result (boarding pass, etc).

\n\nRelated actions:

\n\n
    \n
  • CheckOutAction: The antonym of CheckInAction.
  • \n
  • ArriveAction: Unlike ArriveAction, CheckInAction implies that the agent is informing/confirming the start of a previously reserved service.
  • \n
  • ConfirmAction: Unlike ConfirmAction, CheckInAction implies that the agent is informing/confirming the start of a previously reserved service rather than its validity/existence.
  • \n
\n */\nexport const CheckInAction = /*#__PURE__*/ ns(\"CheckInAction\");\n/** The act of an agent communicating (service provider, social media, etc) their departure of a previously reserved service (e.g. flight check in) or place (e.g. hotel).

\n\nRelated actions:

\n\n
    \n
  • CheckInAction: The antonym of CheckOutAction.
  • \n
  • DepartAction: Unlike DepartAction, CheckOutAction implies that the agent is informing/confirming the end of a previously reserved service.
  • \n
  • CancelAction: Unlike CancelAction, CheckOutAction implies that the agent is informing/confirming the end of a previously reserved service.
  • \n
\n */\nexport const CheckOutAction = /*#__PURE__*/ ns(\"CheckOutAction\");\n/** Web page type: Checkout page. */\nexport const CheckoutPage = /*#__PURE__*/ ns(\"CheckoutPage\");\n/** A Childcare center. */\nexport const ChildCare = /*#__PURE__*/ ns(\"ChildCare\");\n/** Event type: Children's event. */\nexport const ChildrensEvent = /*#__PURE__*/ ns(\"ChildrensEvent\");\n/** The act of expressing a preference from a set of options or a large or unbounded set of choices/options. */\nexport const ChooseAction = /*#__PURE__*/ ns(\"ChooseAction\");\n/** A church. */\nexport const Church = /*#__PURE__*/ ns(\"Church\");\n/** A city or town. */\nexport const City = /*#__PURE__*/ ns(\"City\");\n/** A city hall. */\nexport const CityHall = /*#__PURE__*/ ns(\"CityHall\");\n/** A public structure, such as a town hall or concert hall. */\nexport const CivicStructure = /*#__PURE__*/ ns(\"CivicStructure\");\n/** A fact-checking review of claims made (or reported) in some creative work (referenced via itemReviewed). */\nexport const ClaimReview = /*#__PURE__*/ ns(\"ClaimReview\");\n/** A short TV or radio program or a segment/part of a program. */\nexport const Clip = /*#__PURE__*/ ns(\"Clip\");\n/** A clothing store. */\nexport const ClothingStore = /*#__PURE__*/ ns(\"ClothingStore\");\n/** Computer programming source code. Example: Full (compile ready) solutions, code snippet samples, scripts, templates. */\nexport const Code = /*#__PURE__*/ ns(\"Code\");\n/** Web page type: Collection page. */\nexport const CollectionPage = /*#__PURE__*/ ns(\"CollectionPage\");\n/** A college, university, or other third-level educational institution. */\nexport const CollegeOrUniversity = /*#__PURE__*/ ns(\"CollegeOrUniversity\");\n/** A comedy club. */\nexport const ComedyClub = /*#__PURE__*/ ns(\"ComedyClub\");\n/** Event type: Comedy event. */\nexport const ComedyEvent = /*#__PURE__*/ ns(\"ComedyEvent\");\n/** A comment on an item - for example, a comment on a blog post. The comment's content is expressed via the text property, and its topic via about, properties shared with all CreativeWorks. */\nexport const Comment = /*#__PURE__*/ ns(\"Comment\");\n/** The act of generating a comment about a subject. */\nexport const CommentAction = /*#__PURE__*/ ns(\"CommentAction\");\n/** The act of conveying information to another person via a communication medium (instrument) such as speech, email, or telephone conversation. */\nexport const CommunicateAction = /*#__PURE__*/ ns(\"CommunicateAction\");\n/** A compound price specification is one that bundles multiple prices that all apply in combination for different dimensions of consumption. Use the name property of the attached unit price specification for indicating the dimension of a price component (e.g. \"electricity\" or \"final cleaning\"). */\nexport const CompoundPriceSpecification = /*#__PURE__*/ ns(\"CompoundPriceSpecification\");\n/** This type covers computer programming languages such as Scheme and Lisp, as well as other language-like computer representations. Natural languages are best represented with the Language type. */\nexport const ComputerLanguage = /*#__PURE__*/ ns(\"ComputerLanguage\");\n/** A computer store. */\nexport const ComputerStore = /*#__PURE__*/ ns(\"ComputerStore\");\n/** The act of notifying someone that a future event/action is going to happen as expected.

\n\nRelated actions:

\n\n\n */\nexport const ConfirmAction = /*#__PURE__*/ ns(\"ConfirmAction\");\n/** The act of ingesting information/resources/food. */\nexport const ConsumeAction = /*#__PURE__*/ ns(\"ConsumeAction\");\n/** Web page type: Contact page. */\nexport const ContactPage = /*#__PURE__*/ ns(\"ContactPage\");\n/** A contact point—for example, a Customer Complaints department. */\nexport const ContactPoint = /*#__PURE__*/ ns(\"ContactPoint\");\n/** Enumerated options related to a ContactPoint. */\nexport const ContactPointOption = /*#__PURE__*/ ns(\"ContactPointOption\");\n/** One of the continents (for example, Europe or Africa). */\nexport const Continent = /*#__PURE__*/ ns(\"Continent\");\n/** An agent controls a device or application. */\nexport const ControlAction = /*#__PURE__*/ ns(\"ControlAction\");\n/** A convenience store. */\nexport const ConvenienceStore = /*#__PURE__*/ ns(\"ConvenienceStore\");\n/** One or more messages between organizations or people on a particular topic. Individual messages can be linked to the conversation with isPartOf or hasPart properties. */\nexport const Conversation = /*#__PURE__*/ ns(\"Conversation\");\n/** The act of producing/preparing food. */\nexport const CookAction = /*#__PURE__*/ ns(\"CookAction\");\n/** Organization: A business corporation. */\nexport const Corporation = /*#__PURE__*/ ns(\"Corporation\");\n/** A country. */\nexport const Country = /*#__PURE__*/ ns(\"Country\");\n/** A description of an educational course which may be offered as distinct instances at which take place at different times or take place at different locations, or be offered through different media or modes of study. An educational course is a sequence of one or more educational events and/or creative works which aims to build knowledge, competence or ability of learners. */\nexport const Course = /*#__PURE__*/ ns(\"Course\");\n/** An instance of a Course which is distinct from other instances because it is offered at a different time or location or through different media or modes of study or to a specific section of students. */\nexport const CourseInstance = /*#__PURE__*/ ns(\"CourseInstance\");\n/** A courthouse. */\nexport const Courthouse = /*#__PURE__*/ ns(\"Courthouse\");\n/** The act of deliberately creating/producing/generating/building a result out of the agent. */\nexport const CreateAction = /*#__PURE__*/ ns(\"CreateAction\");\n/** The most generic kind of creative work, including books, movies, photographs, software programs, etc. */\nexport const CreativeWork = /*#__PURE__*/ ns(\"CreativeWork\");\n/** A media season e.g. tv, radio, video game etc. */\nexport const CreativeWorkSeason = /*#__PURE__*/ ns(\"CreativeWorkSeason\");\n/** A CreativeWorkSeries in schema.org is a group of related items, typically but not necessarily of the same kind. CreativeWorkSeries are usually organized into some order, often chronological. Unlike ItemList which is a general purpose data structure for lists of things, the emphasis with CreativeWorkSeries is on published materials (written e.g. books and periodicals, or media such as tv, radio and games).

\n\nSpecific subtypes are available for describing TVSeries, RadioSeries, MovieSeries, BookSeries, Periodical and VideoGameSeries. In each case, the hasPart / isPartOf properties can be used to relate the CreativeWorkSeries to its parts. The general CreativeWorkSeries type serves largely just to organize these more specific and practical subtypes.

\n\nIt is common for properties applicable to an item from the series to be usefully applied to the containing group. Schema.org attempts to anticipate some of these cases, but publishers should be free to apply properties of the series parts to the series as a whole wherever they seem appropriate. */\nexport const CreativeWorkSeries = /*#__PURE__*/ ns(\"CreativeWorkSeries\");\n/** A card payment method of a particular brand or name. Used to mark up a particular payment method and/or the financial product/service that supplies the card account.

\n\nCommonly used values:

\n\n
    \n
  • http://purl.org/goodrelations/v1#AmericanExpress
  • \n
  • http://purl.org/goodrelations/v1#DinersClub
  • \n
  • http://purl.org/goodrelations/v1#Discover
  • \n
  • http://purl.org/goodrelations/v1#JCB
  • \n
  • http://purl.org/goodrelations/v1#MasterCard
  • \n
  • http://purl.org/goodrelations/v1#VISA
  • \n
\n */\nexport const CreditCard = /*#__PURE__*/ ns(\"CreditCard\");\n/** A crematorium. */\nexport const Crematorium = /*#__PURE__*/ ns(\"Crematorium\");\n/** A service to convert funds from one currency to another currency. */\nexport const CurrencyConversionService = /*#__PURE__*/ ns(\"CurrencyConversionService\");\n/** Event type: A social dance. */\nexport const DanceEvent = /*#__PURE__*/ ns(\"DanceEvent\");\n/** A dance group—for example, the Alvin Ailey Dance Theater or Riverdance. */\nexport const DanceGroup = /*#__PURE__*/ ns(\"DanceGroup\");\n/** A collection of datasets. */\nexport const DataCatalog = /*#__PURE__*/ ns(\"DataCatalog\");\n/** A dataset in downloadable form. */\nexport const DataDownload = /*#__PURE__*/ ns(\"DataDownload\");\n/** A single feed providing structured information about one or more entities or topics. */\nexport const DataFeed = /*#__PURE__*/ ns(\"DataFeed\");\n/** A single item within a larger data feed. */\nexport const DataFeedItem = /*#__PURE__*/ ns(\"DataFeedItem\");\n/** The basic data types such as Integers, Strings, etc. */\nexport const DataType = /*#__PURE__*/ ns(\"DataType\");\n/** A body of structured information describing some topic(s) of interest. */\nexport const Dataset = /*#__PURE__*/ ns(\"Dataset\");\n/** A date value in ISO 8601 date format. */\nexport const Date = /*#__PURE__*/ ns(\"Date\");\n/** A combination of date and time of day in the form [-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm] (see Chapter 5.4 of ISO 8601). */\nexport const DateTime = /*#__PURE__*/ ns(\"DateTime\");\n/** A DatedMoneySpecification represents monetary values with optional start and end dates. For example, this could represent an employee's salary over a specific period of time. Note: This type has been superseded by MonetaryAmount use of that type is recommended */\nexport const DatedMoneySpecification = /*#__PURE__*/ ns(\"DatedMoneySpecification\");\n/** The day of the week, e.g. used to specify to which day the opening hours of an OpeningHoursSpecification refer.

\n\nOriginally, URLs from GoodRelations were used (for Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday plus a special entry for PublicHolidays); these have now been integrated directly into schema.org. */\nexport const DayOfWeek = /*#__PURE__*/ ns(\"DayOfWeek\");\n/** A day spa. */\nexport const DaySpa = /*#__PURE__*/ ns(\"DaySpa\");\n/** The act of stopping or deactivating a device or application (e.g. stopping a timer or turning off a flashlight). */\nexport const DeactivateAction = /*#__PURE__*/ ns(\"DeactivateAction\");\n/** A defence establishment, such as an army or navy base. */\nexport const DefenceEstablishment = /*#__PURE__*/ ns(\"DefenceEstablishment\");\n/** The act of editing a recipient by removing one of its objects. */\nexport const DeleteAction = /*#__PURE__*/ ns(\"DeleteAction\");\n/** The price for the delivery of an offer using a particular delivery method. */\nexport const DeliveryChargeSpecification = /*#__PURE__*/ ns(\"DeliveryChargeSpecification\");\n/** An event involving the delivery of an item. */\nexport const DeliveryEvent = /*#__PURE__*/ ns(\"DeliveryEvent\");\n/** A delivery method is a standardized procedure for transferring the product or service to the destination of fulfillment chosen by the customer. Delivery methods are characterized by the means of transportation used, and by the organization or group that is the contracting party for the sending organization or person.

\n\nCommonly used values:

\n\n
    \n
  • http://purl.org/goodrelations/v1#DeliveryModeDirectDownload
  • \n
  • http://purl.org/goodrelations/v1#DeliveryModeFreight
  • \n
  • http://purl.org/goodrelations/v1#DeliveryModeMail
  • \n
  • http://purl.org/goodrelations/v1#DeliveryModeOwnFleet
  • \n
  • http://purl.org/goodrelations/v1#DeliveryModePickUp
  • \n
  • http://purl.org/goodrelations/v1#DHL
  • \n
  • http://purl.org/goodrelations/v1#FederalExpress
  • \n
  • http://purl.org/goodrelations/v1#UPS
  • \n
\n */\nexport const DeliveryMethod = /*#__PURE__*/ ns(\"DeliveryMethod\");\n/** A demand entity represents the public, not necessarily binding, not necessarily exclusive, announcement by an organization or person to seek a certain type of goods or services. For describing demand using this type, the very same properties used for Offer apply. */\nexport const Demand = /*#__PURE__*/ ns(\"Demand\");\n/** A dentist. */\nexport const Dentist = /*#__PURE__*/ ns(\"Dentist\");\n/** The act of departing from a place. An agent departs from an fromLocation for a destination, optionally with participants. */\nexport const DepartAction = /*#__PURE__*/ ns(\"DepartAction\");\n/** A department store. */\nexport const DepartmentStore = /*#__PURE__*/ ns(\"DepartmentStore\");\n/** A type of Bank Account with a main purpose of depositing funds to gain interest or other benefits. */\nexport const DepositAccount = /*#__PURE__*/ ns(\"DepositAccount\");\n/** An electronic file or document. */\nexport const DigitalDocument = /*#__PURE__*/ ns(\"DigitalDocument\");\n/** A permission for a particular person or group to access a particular file. */\nexport const DigitalDocumentPermission = /*#__PURE__*/ ns(\"DigitalDocumentPermission\");\n/** A type of permission which can be granted for accessing a digital document. */\nexport const DigitalDocumentPermissionType = /*#__PURE__*/ ns(\"DigitalDocumentPermissionType\");\n/** The act of expressing a difference of opinion with the object. An agent disagrees to/about an object (a proposition, topic or theme) with participants. */\nexport const DisagreeAction = /*#__PURE__*/ ns(\"DisagreeAction\");\n/** The act of discovering/finding an object. */\nexport const DiscoverAction = /*#__PURE__*/ ns(\"DiscoverAction\");\n/** A posting to a discussion forum. */\nexport const DiscussionForumPosting = /*#__PURE__*/ ns(\"DiscussionForumPosting\");\n/** The act of expressing a negative sentiment about the object. An agent dislikes an object (a proposition, topic or theme) with participants. */\nexport const DislikeAction = /*#__PURE__*/ ns(\"DislikeAction\");\n/** Properties that take Distances as values are of the form '<Number> <Length unit of measure>'. E.g., '7 ft'. */\nexport const Distance = /*#__PURE__*/ ns(\"Distance\");\n/** A distillery. */\nexport const Distillery = /*#__PURE__*/ ns(\"Distillery\");\n/** The act of providing goods, services, or money without compensation, often for philanthropic reasons. */\nexport const DonateAction = /*#__PURE__*/ ns(\"DonateAction\");\n/** The act of downloading an object. */\nexport const DownloadAction = /*#__PURE__*/ ns(\"DownloadAction\");\n/** The act of producing a visual/graphical representation of an object, typically with a pen/pencil and paper as instruments. */\nexport const DrawAction = /*#__PURE__*/ ns(\"DrawAction\");\n/** The act of swallowing liquids. */\nexport const DrinkAction = /*#__PURE__*/ ns(\"DrinkAction\");\n/** A value indicating which roadwheels will receive torque. */\nexport const DriveWheelConfigurationValue = /*#__PURE__*/ ns(\"DriveWheelConfigurationValue\");\n/** A dry-cleaning business. */\nexport const DryCleaningOrLaundry = /*#__PURE__*/ ns(\"DryCleaningOrLaundry\");\n/** Quantity: Duration (use ISO 8601 duration format). */\nexport const Duration = /*#__PURE__*/ ns(\"Duration\");\n/** The act of swallowing solid objects. */\nexport const EatAction = /*#__PURE__*/ ns(\"EatAction\");\n/** Event type: Education event. */\nexport const EducationEvent = /*#__PURE__*/ ns(\"EducationEvent\");\n/** An EducationalAudience. */\nexport const EducationalAudience = /*#__PURE__*/ ns(\"EducationalAudience\");\n/** An educational organization. */\nexport const EducationalOrganization = /*#__PURE__*/ ns(\"EducationalOrganization\");\n/** An electrician. */\nexport const Electrician = /*#__PURE__*/ ns(\"Electrician\");\n/** An electronics store. */\nexport const ElectronicsStore = /*#__PURE__*/ ns(\"ElectronicsStore\");\n/** An elementary school. */\nexport const ElementarySchool = /*#__PURE__*/ ns(\"ElementarySchool\");\n/** An email message. */\nexport const EmailMessage = /*#__PURE__*/ ns(\"EmailMessage\");\n/** An embassy. */\nexport const Embassy = /*#__PURE__*/ ns(\"Embassy\");\n/** An emergency service, such as a fire station or ER. */\nexport const EmergencyService = /*#__PURE__*/ ns(\"EmergencyService\");\n/** A subclass of OrganizationRole used to describe employee relationships. */\nexport const EmployeeRole = /*#__PURE__*/ ns(\"EmployeeRole\");\n/** An aggregate rating of an Organization related to its role as an employer. */\nexport const EmployerAggregateRating = /*#__PURE__*/ ns(\"EmployerAggregateRating\");\n/** An employment agency. */\nexport const EmploymentAgency = /*#__PURE__*/ ns(\"EmploymentAgency\");\n/** An agent approves/certifies/likes/supports/sanction an object. */\nexport const EndorseAction = /*#__PURE__*/ ns(\"EndorseAction\");\n/** An EndorsementRating is a rating that expresses some level of endorsement, for example inclusion in a \"critic's pick\" blog, a\n\"Like\" or \"+1\" on a social network. It can be considered the result of an EndorseAction in which the object of the action is rated positively by\nsome agent. As is common elsewhere in schema.org, it is sometimes more useful to describe the results of such an action without explicitly describing the Action.

\n\nAn EndorsementRating may be part of a numeric scale or organized system, but this is not required: having an explicit type for indicating a positive,\nendorsement rating is particularly useful in the absence of numeric scales as it helps consumers understand that the rating is broadly positive. */\nexport const EndorsementRating = /*#__PURE__*/ ns(\"EndorsementRating\");\n/** Properties that take Energy as values are of the form '<Number> <Energy unit of measure>'. */\nexport const Energy = /*#__PURE__*/ ns(\"Energy\");\n/** Information about the engine of the vehicle. A vehicle can have multiple engines represented by multiple engine specification entities. */\nexport const EngineSpecification = /*#__PURE__*/ ns(\"EngineSpecification\");\n/** A business providing entertainment. */\nexport const EntertainmentBusiness = /*#__PURE__*/ ns(\"EntertainmentBusiness\");\n/** An entry point, within some Web-based protocol. */\nexport const EntryPoint = /*#__PURE__*/ ns(\"EntryPoint\");\n/** Lists or enumerations—for example, a list of cuisines or music genres, etc. */\nexport const Enumeration = /*#__PURE__*/ ns(\"Enumeration\");\n/** A media episode (e.g. TV, radio, video game) which can be part of a series or season. */\nexport const Episode = /*#__PURE__*/ ns(\"Episode\");\n/** An event happening at a certain time and location, such as a concert, lecture, or festival. Ticketing information may be added via the offers property. Repeated events may be structured as separate Event objects. */\nexport const Event = /*#__PURE__*/ ns(\"Event\");\n/** A reservation for an event like a concert, sporting event, or lecture.

\n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. For offers of tickets, use Offer. */\nexport const EventReservation = /*#__PURE__*/ ns(\"EventReservation\");\n/** EventStatusType is an enumeration type whose instances represent several states that an Event may be in. */\nexport const EventStatusType = /*#__PURE__*/ ns(\"EventStatusType\");\n/** An event venue. */\nexport const EventVenue = /*#__PURE__*/ ns(\"EventVenue\");\n/** The act of participating in exertive activity for the purposes of improving health and fitness. */\nexport const ExerciseAction = /*#__PURE__*/ ns(\"ExerciseAction\");\n/** A gym. */\nexport const ExerciseGym = /*#__PURE__*/ ns(\"ExerciseGym\");\n/** Event type: Exhibition event, e.g. at a museum, library, archive, tradeshow, ... */\nexport const ExhibitionEvent = /*#__PURE__*/ ns(\"ExhibitionEvent\");\n/** A FAQPage is a WebPage presenting one or more \"Frequently asked questions\" (see also QAPage). */\nexport const FAQPage = /*#__PURE__*/ ns(\"FAQPage\");\n/** A radio channel that uses FM. */\nexport const FMRadioChannel = /*#__PURE__*/ ns(\"FMRadioChannel\");\n/** A fast-food restaurant. */\nexport const FastFoodRestaurant = /*#__PURE__*/ ns(\"FastFoodRestaurant\");\n/** Event type: Festival. */\nexport const Festival = /*#__PURE__*/ ns(\"Festival\");\n/** The act of capturing sound and moving images on film, video, or digitally. */\nexport const FilmAction = /*#__PURE__*/ ns(\"FilmAction\");\n/** A product provided to consumers and businesses by financial institutions such as banks, insurance companies, brokerage firms, consumer finance companies, and investment companies which comprise the financial services industry. */\nexport const FinancialProduct = /*#__PURE__*/ ns(\"FinancialProduct\");\n/** Financial services business. */\nexport const FinancialService = /*#__PURE__*/ ns(\"FinancialService\");\n/** The act of finding an object.

\n\nRelated actions:

\n\n
    \n
  • SearchAction: FindAction is generally lead by a SearchAction, but not necessarily.
  • \n
\n */\nexport const FindAction = /*#__PURE__*/ ns(\"FindAction\");\n/** A fire station. With firemen. */\nexport const FireStation = /*#__PURE__*/ ns(\"FireStation\");\n/** An airline flight. */\nexport const Flight = /*#__PURE__*/ ns(\"Flight\");\n/** A reservation for air travel.

\n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. For offers of tickets, use Offer. */\nexport const FlightReservation = /*#__PURE__*/ ns(\"FlightReservation\");\n/** Data type: Floating number. */\nexport const Float = /*#__PURE__*/ ns(\"Float\");\n/** A florist. */\nexport const Florist = /*#__PURE__*/ ns(\"Florist\");\n/** The act of forming a personal connection with someone/something (object) unidirectionally/asymmetrically to get updates polled from.

\n\nRelated actions:

\n\n
    \n
  • BefriendAction: Unlike BefriendAction, FollowAction implies that the connection is not necessarily reciprocal.
  • \n
  • SubscribeAction: Unlike SubscribeAction, FollowAction implies that the follower acts as an active agent constantly/actively polling for updates.
  • \n
  • RegisterAction: Unlike RegisterAction, FollowAction implies that the agent is interested in continuing receiving updates from the object.
  • \n
  • JoinAction: Unlike JoinAction, FollowAction implies that the agent is interested in getting updates from the object.
  • \n
  • TrackAction: Unlike TrackAction, FollowAction refers to the polling of updates of all aspects of animate objects rather than the location of inanimate objects (e.g. you track a package, but you don't follow it).
  • \n
\n */\nexport const FollowAction = /*#__PURE__*/ ns(\"FollowAction\");\n/** A food-related business. */\nexport const FoodEstablishment = /*#__PURE__*/ ns(\"FoodEstablishment\");\n/** A reservation to dine at a food-related business.

\n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. */\nexport const FoodEstablishmentReservation = /*#__PURE__*/ ns(\"FoodEstablishmentReservation\");\n/** Event type: Food event. */\nexport const FoodEvent = /*#__PURE__*/ ns(\"FoodEvent\");\n/** A food service, like breakfast, lunch, or dinner. */\nexport const FoodService = /*#__PURE__*/ ns(\"FoodService\");\n/** A furniture store. */\nexport const FurnitureStore = /*#__PURE__*/ ns(\"FurnitureStore\");\n/** The Game type represents things which are games. These are typically rule-governed recreational activities, e.g. role-playing games in which players assume the role of characters in a fictional setting. */\nexport const Game = /*#__PURE__*/ ns(\"Game\");\n/** Indicates whether this game is multi-player, co-op or single-player. */\nexport const GamePlayMode = /*#__PURE__*/ ns(\"GamePlayMode\");\n/** Server that provides game interaction in a multiplayer game. */\nexport const GameServer = /*#__PURE__*/ ns(\"GameServer\");\n/** Status of a game server. */\nexport const GameServerStatus = /*#__PURE__*/ ns(\"GameServerStatus\");\n/** A garden store. */\nexport const GardenStore = /*#__PURE__*/ ns(\"GardenStore\");\n/** A gas station. */\nexport const GasStation = /*#__PURE__*/ ns(\"GasStation\");\n/** Residence type: Gated community. */\nexport const GatedResidenceCommunity = /*#__PURE__*/ ns(\"GatedResidenceCommunity\");\n/** An enumeration of genders. */\nexport const GenderType = /*#__PURE__*/ ns(\"GenderType\");\n/** A general contractor. */\nexport const GeneralContractor = /*#__PURE__*/ ns(\"GeneralContractor\");\n/** A GeoCircle is a GeoShape representing a circular geographic area. As it is a GeoShape\n it provides the simple textual property 'circle', but also allows the combination of postalCode alongside geoRadius.\n The center of the circle can be indicated via the 'geoMidpoint' property, or more approximately using 'address', 'postalCode'. */\nexport const GeoCircle = /*#__PURE__*/ ns(\"GeoCircle\");\n/** The geographic coordinates of a place or event. */\nexport const GeoCoordinates = /*#__PURE__*/ ns(\"GeoCoordinates\");\n/** The geographic shape of a place. A GeoShape can be described using several properties whose values are based on latitude/longitude pairs. Either whitespace or commas can be used to separate latitude and longitude; whitespace should be used when writing a list of several such points. */\nexport const GeoShape = /*#__PURE__*/ ns(\"GeoShape\");\n/** The act of transferring ownership of an object to a destination. Reciprocal of TakeAction.

\n\nRelated actions:

\n\n
    \n
  • TakeAction: Reciprocal of GiveAction.
  • \n
  • SendAction: Unlike SendAction, GiveAction implies that ownership is being transferred (e.g. I may send my laptop to you, but that doesn't mean I'm giving it to you).
  • \n
\n */\nexport const GiveAction = /*#__PURE__*/ ns(\"GiveAction\");\n/** A golf course. */\nexport const GolfCourse = /*#__PURE__*/ ns(\"GolfCourse\");\n/** A government building. */\nexport const GovernmentBuilding = /*#__PURE__*/ ns(\"GovernmentBuilding\");\n/** A government office—for example, an IRS or DMV office. */\nexport const GovernmentOffice = /*#__PURE__*/ ns(\"GovernmentOffice\");\n/** A governmental organization or agency. */\nexport const GovernmentOrganization = /*#__PURE__*/ ns(\"GovernmentOrganization\");\n/** A permit issued by a government agency. */\nexport const GovernmentPermit = /*#__PURE__*/ ns(\"GovernmentPermit\");\n/** A service provided by a government organization, e.g. food stamps, veterans benefits, etc. */\nexport const GovernmentService = /*#__PURE__*/ ns(\"GovernmentService\");\n/** A grocery store. */\nexport const GroceryStore = /*#__PURE__*/ ns(\"GroceryStore\");\n/** A business that provide Heating, Ventilation and Air Conditioning services. */\nexport const HVACBusiness = /*#__PURE__*/ ns(\"HVACBusiness\");\n/** A hair salon. */\nexport const HairSalon = /*#__PURE__*/ ns(\"HairSalon\");\n/** A hardware store. */\nexport const HardwareStore = /*#__PURE__*/ ns(\"HardwareStore\");\n/** Health and beauty. */\nexport const HealthAndBeautyBusiness = /*#__PURE__*/ ns(\"HealthAndBeautyBusiness\");\n/** A health club. */\nexport const HealthClub = /*#__PURE__*/ ns(\"HealthClub\");\n/** A high school. */\nexport const HighSchool = /*#__PURE__*/ ns(\"HighSchool\");\n/** A Hindu temple. */\nexport const HinduTemple = /*#__PURE__*/ ns(\"HinduTemple\");\n/** A store that sells materials useful or necessary for various hobbies. */\nexport const HobbyShop = /*#__PURE__*/ ns(\"HobbyShop\");\n/** A construction business.

\n\nA HomeAndConstructionBusiness is a LocalBusiness that provides services around homes and buildings.

\n\nAs a LocalBusiness it can be described as a provider of one or more Service(s). */\nexport const HomeAndConstructionBusiness = /*#__PURE__*/ ns(\"HomeAndConstructionBusiness\");\n/** A home goods store. */\nexport const HomeGoodsStore = /*#__PURE__*/ ns(\"HomeGoodsStore\");\n/** A hospital. */\nexport const Hospital = /*#__PURE__*/ ns(\"Hospital\");\n/** A hostel - cheap accommodation, often in shared dormitories.\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const Hostel = /*#__PURE__*/ ns(\"Hostel\");\n/** A hotel is an establishment that provides lodging paid on a short-term basis (Source: Wikipedia, the free encyclopedia, see http://en.wikipedia.org/wiki/Hotel).\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const Hotel = /*#__PURE__*/ ns(\"Hotel\");\n/** A hotel room is a single room in a hotel.\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const HotelRoom = /*#__PURE__*/ ns(\"HotelRoom\");\n/** A house is a building or structure that has the ability to be occupied for habitation by humans or other creatures (Source: Wikipedia, the free encyclopedia, see http://en.wikipedia.org/wiki/House). */\nexport const House = /*#__PURE__*/ ns(\"House\");\n/** A house painting service. */\nexport const HousePainter = /*#__PURE__*/ ns(\"HousePainter\");\n/** Instructions that explain how to achieve a result by performing a sequence of steps. */\nexport const HowTo = /*#__PURE__*/ ns(\"HowTo\");\n/** A direction indicating a single action to do in the instructions for how to achieve a result. */\nexport const HowToDirection = /*#__PURE__*/ ns(\"HowToDirection\");\n/** An item used as either a tool or supply when performing the instructions for how to to achieve a result. */\nexport const HowToItem = /*#__PURE__*/ ns(\"HowToItem\");\n/** A sub-grouping of steps in the instructions for how to achieve a result (e.g. steps for making a pie crust within a pie recipe). */\nexport const HowToSection = /*#__PURE__*/ ns(\"HowToSection\");\n/** A step in the instructions for how to achieve a result. It is an ordered list with HowToDirection and/or HowToTip items. */\nexport const HowToStep = /*#__PURE__*/ ns(\"HowToStep\");\n/** A supply consumed when performing the instructions for how to achieve a result. */\nexport const HowToSupply = /*#__PURE__*/ ns(\"HowToSupply\");\n/** An explanation in the instructions for how to achieve a result. It provides supplementary information about a technique, supply, author's preference, etc. It can explain what could be done, or what should not be done, but doesn't specify what should be done (see HowToDirection). */\nexport const HowToTip = /*#__PURE__*/ ns(\"HowToTip\");\n/** A tool used (but not consumed) when performing instructions for how to achieve a result. */\nexport const HowToTool = /*#__PURE__*/ ns(\"HowToTool\");\n/** An ice cream shop. */\nexport const IceCreamShop = /*#__PURE__*/ ns(\"IceCreamShop\");\n/** The act of intentionally disregarding the object. An agent ignores an object. */\nexport const IgnoreAction = /*#__PURE__*/ ns(\"IgnoreAction\");\n/** Web page type: Image gallery page. */\nexport const ImageGallery = /*#__PURE__*/ ns(\"ImageGallery\");\n/** An image file. */\nexport const ImageObject = /*#__PURE__*/ ns(\"ImageObject\");\n/** A single, identifiable product instance (e.g. a laptop with a particular serial number). */\nexport const IndividualProduct = /*#__PURE__*/ ns(\"IndividualProduct\");\n/** The act of notifying someone of information pertinent to them, with no expectation of a response. */\nexport const InformAction = /*#__PURE__*/ ns(\"InformAction\");\n/** The act of adding at a specific location in an ordered collection. */\nexport const InsertAction = /*#__PURE__*/ ns(\"InsertAction\");\n/** The act of installing an application. */\nexport const InstallAction = /*#__PURE__*/ ns(\"InstallAction\");\n/** An Insurance agency. */\nexport const InsuranceAgency = /*#__PURE__*/ ns(\"InsuranceAgency\");\n/** A utility class that serves as the umbrella for a number of 'intangible' things such as quantities, structured values, etc. */\nexport const Intangible = /*#__PURE__*/ ns(\"Intangible\");\n/** Data type: Integer. */\nexport const Integer = /*#__PURE__*/ ns(\"Integer\");\n/** The act of interacting with another person or organization. */\nexport const InteractAction = /*#__PURE__*/ ns(\"InteractAction\");\n/** A summary of how users have interacted with this CreativeWork. In most cases, authors will use a subtype to specify the specific type of interaction. */\nexport const InteractionCounter = /*#__PURE__*/ ns(\"InteractionCounter\");\n/** An internet cafe. */\nexport const InternetCafe = /*#__PURE__*/ ns(\"InternetCafe\");\n/** A type of financial product that typically requires the client to transfer funds to a financial service in return for potential beneficial financial return. */\nexport const InvestmentOrDeposit = /*#__PURE__*/ ns(\"InvestmentOrDeposit\");\n/** The act of asking someone to attend an event. Reciprocal of RsvpAction. */\nexport const InviteAction = /*#__PURE__*/ ns(\"InviteAction\");\n/** A statement of the money due for goods or services; a bill. */\nexport const Invoice = /*#__PURE__*/ ns(\"Invoice\");\n/** A list of possible product availability options. */\nexport const ItemAvailability = /*#__PURE__*/ ns(\"ItemAvailability\");\n/** A list of items of any sort—for example, Top 10 Movies About Weathermen, or Top 100 Party Songs. Not to be confused with HTML lists, which are often used only for formatting. */\nexport const ItemList = /*#__PURE__*/ ns(\"ItemList\");\n/** Enumerated for values for itemListOrder for indicating how an ordered ItemList is organized. */\nexport const ItemListOrderType = /*#__PURE__*/ ns(\"ItemListOrderType\");\n/** A page devoted to a single item, such as a particular product or hotel. */\nexport const ItemPage = /*#__PURE__*/ ns(\"ItemPage\");\n/** A jewelry store. */\nexport const JewelryStore = /*#__PURE__*/ ns(\"JewelryStore\");\n/** A listing that describes a job opening in a certain organization. */\nexport const JobPosting = /*#__PURE__*/ ns(\"JobPosting\");\n/** An agent joins an event/group with participants/friends at a location.

\n\nRelated actions:

\n\n
    \n
  • RegisterAction: Unlike RegisterAction, JoinAction refers to joining a group/team of people.
  • \n
  • SubscribeAction: Unlike SubscribeAction, JoinAction does not imply that you'll be receiving updates.
  • \n
  • FollowAction: Unlike FollowAction, JoinAction does not imply that you'll be polling for updates.
  • \n
\n */\nexport const JoinAction = /*#__PURE__*/ ns(\"JoinAction\");\n/** A lake (for example, Lake Pontrachain). */\nexport const LakeBodyOfWater = /*#__PURE__*/ ns(\"LakeBodyOfWater\");\n/** A landform or physical feature. Landform elements include mountains, plains, lakes, rivers, seascape and oceanic waterbody interface features such as bays, peninsulas, seas and so forth, including sub-aqueous terrain features such as submersed mountain ranges, volcanoes, and the great ocean basins. */\nexport const Landform = /*#__PURE__*/ ns(\"Landform\");\n/** An historical landmark or building. */\nexport const LandmarksOrHistoricalBuildings = /*#__PURE__*/ ns(\"LandmarksOrHistoricalBuildings\");\n/** Natural languages such as Spanish, Tamil, Hindi, English, etc. Formal language code tags expressed in BCP 47 can be used via the alternateName property. The Language type previously also covered programming languages such as Scheme and Lisp, which are now best represented using ComputerLanguage. */\nexport const Language = /*#__PURE__*/ ns(\"Language\");\n/** An agent leaves an event / group with participants/friends at a location.

\n\nRelated actions:

\n\n
    \n
  • JoinAction: The antonym of LeaveAction.
  • \n
  • UnRegisterAction: Unlike UnRegisterAction, LeaveAction implies leaving a group/team of people rather than a service.
  • \n
\n */\nexport const LeaveAction = /*#__PURE__*/ ns(\"LeaveAction\");\n/** A LegalService is a business that provides legally-oriented services, advice and representation, e.g. law firms.

\n\nAs a LocalBusiness it can be described as a provider of one or more Service(s). */\nexport const LegalService = /*#__PURE__*/ ns(\"LegalService\");\n/** A legislative building—for example, the state capitol. */\nexport const LegislativeBuilding = /*#__PURE__*/ ns(\"LegislativeBuilding\");\n/** The act of providing an object under an agreement that it will be returned at a later date. Reciprocal of BorrowAction.

\n\nRelated actions:

\n\n\n */\nexport const LendAction = /*#__PURE__*/ ns(\"LendAction\");\n/** A library. */\nexport const Library = /*#__PURE__*/ ns(\"Library\");\n/** The act of expressing a positive sentiment about the object. An agent likes an object (a proposition, topic or theme) with participants. */\nexport const LikeAction = /*#__PURE__*/ ns(\"LikeAction\");\n/** A shop that sells alcoholic drinks such as wine, beer, whisky and other spirits. */\nexport const LiquorStore = /*#__PURE__*/ ns(\"LiquorStore\");\n/** An list item, e.g. a step in a checklist or how-to description. */\nexport const ListItem = /*#__PURE__*/ ns(\"ListItem\");\n/** The act of consuming audio content. */\nexport const ListenAction = /*#__PURE__*/ ns(\"ListenAction\");\n/** Event type: Literary event. */\nexport const LiteraryEvent = /*#__PURE__*/ ns(\"LiteraryEvent\");\n/** A blog post intended to provide a rolling textual coverage of an ongoing event through continuous updates. */\nexport const LiveBlogPosting = /*#__PURE__*/ ns(\"LiveBlogPosting\");\n/** A financial product for the loaning of an amount of money under agreed terms and charges. */\nexport const LoanOrCredit = /*#__PURE__*/ ns(\"LoanOrCredit\");\n/** A particular physical business or branch of an organization. Examples of LocalBusiness include a restaurant, a particular branch of a restaurant chain, a branch of a bank, a medical practice, a club, a bowling alley, etc. */\nexport const LocalBusiness = /*#__PURE__*/ ns(\"LocalBusiness\");\n/** Specifies a location feature by providing a structured value representing a feature of an accommodation as a property-value pair of varying degrees of formality. */\nexport const LocationFeatureSpecification = /*#__PURE__*/ ns(\"LocationFeatureSpecification\");\n/** A DeliveryMethod in which an item is made available via locker. */\nexport const LockerDelivery = /*#__PURE__*/ ns(\"LockerDelivery\");\n/** A locksmith. */\nexport const Locksmith = /*#__PURE__*/ ns(\"Locksmith\");\n/** A lodging business, such as a motel, hotel, or inn. */\nexport const LodgingBusiness = /*#__PURE__*/ ns(\"LodgingBusiness\");\n/** A reservation for lodging at a hotel, motel, inn, etc.

\n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. */\nexport const LodgingReservation = /*#__PURE__*/ ns(\"LodgingReservation\");\n/** The act of being defeated in a competitive activity. */\nexport const LoseAction = /*#__PURE__*/ ns(\"LoseAction\");\n/** A map. */\nexport const Map = /*#__PURE__*/ ns(\"Map\");\n/** An enumeration of several kinds of Map. */\nexport const MapCategoryType = /*#__PURE__*/ ns(\"MapCategoryType\");\n/** The act of marrying a person. */\nexport const MarryAction = /*#__PURE__*/ ns(\"MarryAction\");\n/** Properties that take Mass as values are of the form '<Number> <Mass unit of measure>'. E.g., '7 kg'. */\nexport const Mass = /*#__PURE__*/ ns(\"Mass\");\n/** A media object, such as an image, video, or audio object embedded in a web page or a downloadable dataset i.e. DataDownload. Note that a creative work may have many media objects associated with it on the same web page. For example, a page about a single song (MusicRecording) may have a music video (VideoObject), and a high and low bandwidth audio stream (2 AudioObject's). */\nexport const MediaObject = /*#__PURE__*/ ns(\"MediaObject\");\n/** A subscription which allows a user to access media including audio, video, books, etc. */\nexport const MediaSubscription = /*#__PURE__*/ ns(\"MediaSubscription\");\n/** A medical organization (physical or not), such as hospital, institution or clinic. */\nexport const MedicalOrganization = /*#__PURE__*/ ns(\"MedicalOrganization\");\n/** A meeting room, conference room, or conference hall is a room provided for singular events such as business conferences and meetings (Source: Wikipedia, the free encyclopedia, see http://en.wikipedia.org/wiki/Conference_hall).\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const MeetingRoom = /*#__PURE__*/ ns(\"MeetingRoom\");\n/** A men's clothing store. */\nexport const MensClothingStore = /*#__PURE__*/ ns(\"MensClothingStore\");\n/** A structured representation of food or drink items available from a FoodEstablishment. */\nexport const Menu = /*#__PURE__*/ ns(\"Menu\");\n/** A food or drink item listed in a menu or menu section. */\nexport const MenuItem = /*#__PURE__*/ ns(\"MenuItem\");\n/** A sub-grouping of food or drink items in a menu. E.g. courses (such as 'Dinner', 'Breakfast', etc.), specific type of dishes (such as 'Meat', 'Vegan', 'Drinks', etc.), or some other classification made by the menu provider. */\nexport const MenuSection = /*#__PURE__*/ ns(\"MenuSection\");\n/** A single message from a sender to one or more organizations or people. */\nexport const Message = /*#__PURE__*/ ns(\"Message\");\n/** A middle school (typically for children aged around 11-14, although this varies somewhat). */\nexport const MiddleSchool = /*#__PURE__*/ ns(\"MiddleSchool\");\n/** A software application designed specifically to work well on a mobile device such as a telephone. */\nexport const MobileApplication = /*#__PURE__*/ ns(\"MobileApplication\");\n/** A store that sells mobile phones and related accessories. */\nexport const MobilePhoneStore = /*#__PURE__*/ ns(\"MobilePhoneStore\");\n/** A monetary value or range. This type can be used to describe an amount of money such as $50 USD, or a range as in describing a bank account being suitable for a balance between £1,000 and £1,000,000 GBP, or the value of a salary, etc. It is recommended to use PriceSpecification Types to describe the price of an Offer, Invoice, etc. */\nexport const MonetaryAmount = /*#__PURE__*/ ns(\"MonetaryAmount\");\n/** A statistical distribution of monetary amounts. */\nexport const MonetaryAmountDistribution = /*#__PURE__*/ ns(\"MonetaryAmountDistribution\");\n/** A mosque. */\nexport const Mosque = /*#__PURE__*/ ns(\"Mosque\");\n/** A motel.\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const Motel = /*#__PURE__*/ ns(\"Motel\");\n/** A motorcycle dealer. */\nexport const MotorcycleDealer = /*#__PURE__*/ ns(\"MotorcycleDealer\");\n/** A motorcycle repair shop. */\nexport const MotorcycleRepair = /*#__PURE__*/ ns(\"MotorcycleRepair\");\n/** A mountain, like Mount Whitney or Mount Everest. */\nexport const Mountain = /*#__PURE__*/ ns(\"Mountain\");\n/** The act of an agent relocating to a place.

\n\nRelated actions:

\n\n
    \n
  • TransferAction: Unlike TransferAction, the subject of the move is a living Person or Organization rather than an inanimate object.
  • \n
\n */\nexport const MoveAction = /*#__PURE__*/ ns(\"MoveAction\");\n/** A movie. */\nexport const Movie = /*#__PURE__*/ ns(\"Movie\");\n/** A short segment/part of a movie. */\nexport const MovieClip = /*#__PURE__*/ ns(\"MovieClip\");\n/** A movie rental store. */\nexport const MovieRentalStore = /*#__PURE__*/ ns(\"MovieRentalStore\");\n/** A series of movies. Included movies can be indicated with the hasPart property. */\nexport const MovieSeries = /*#__PURE__*/ ns(\"MovieSeries\");\n/** A movie theater. */\nexport const MovieTheater = /*#__PURE__*/ ns(\"MovieTheater\");\n/** A moving company. */\nexport const MovingCompany = /*#__PURE__*/ ns(\"MovingCompany\");\n/** A museum. */\nexport const Museum = /*#__PURE__*/ ns(\"Museum\");\n/** A collection of music tracks. */\nexport const MusicAlbum = /*#__PURE__*/ ns(\"MusicAlbum\");\n/** Classification of the album by it's type of content: soundtrack, live album, studio album, etc. */\nexport const MusicAlbumProductionType = /*#__PURE__*/ ns(\"MusicAlbumProductionType\");\n/** The kind of release which this album is: single, EP or album. */\nexport const MusicAlbumReleaseType = /*#__PURE__*/ ns(\"MusicAlbumReleaseType\");\n/** A musical composition. */\nexport const MusicComposition = /*#__PURE__*/ ns(\"MusicComposition\");\n/** Event type: Music event. */\nexport const MusicEvent = /*#__PURE__*/ ns(\"MusicEvent\");\n/** A musical group, such as a band, an orchestra, or a choir. Can also be a solo musician. */\nexport const MusicGroup = /*#__PURE__*/ ns(\"MusicGroup\");\n/** A collection of music tracks in playlist form. */\nexport const MusicPlaylist = /*#__PURE__*/ ns(\"MusicPlaylist\");\n/** A music recording (track), usually a single song. */\nexport const MusicRecording = /*#__PURE__*/ ns(\"MusicRecording\");\n/** A MusicRelease is a specific release of a music album. */\nexport const MusicRelease = /*#__PURE__*/ ns(\"MusicRelease\");\n/** Format of this release (the type of recording media used, ie. compact disc, digital media, LP, etc.). */\nexport const MusicReleaseFormatType = /*#__PURE__*/ ns(\"MusicReleaseFormatType\");\n/** A music store. */\nexport const MusicStore = /*#__PURE__*/ ns(\"MusicStore\");\n/** A music venue. */\nexport const MusicVenue = /*#__PURE__*/ ns(\"MusicVenue\");\n/** A music video file. */\nexport const MusicVideoObject = /*#__PURE__*/ ns(\"MusicVideoObject\");\n/** Organization: Non-governmental Organization. */\nexport const NGO = /*#__PURE__*/ ns(\"NGO\");\n/** A nail salon. */\nexport const NailSalon = /*#__PURE__*/ ns(\"NailSalon\");\n/** A NewsArticle is an article whose content reports news, or provides background context and supporting materials for understanding the news.

\n\nA more detailed overview of schema.org News markup is also available. */\nexport const NewsArticle = /*#__PURE__*/ ns(\"NewsArticle\");\n/** A nightclub or discotheque. */\nexport const NightClub = /*#__PURE__*/ ns(\"NightClub\");\n/** A notary. */\nexport const Notary = /*#__PURE__*/ ns(\"Notary\");\n/** A file containing a note, primarily for the author. */\nexport const NoteDigitalDocument = /*#__PURE__*/ ns(\"NoteDigitalDocument\");\n/** Data type: Number.

\n\nUsage guidelines:

\n\n
    \n
  • Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.
  • \n
  • Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
  • \n
\n */\nexport const Number = /*#__PURE__*/ ns(\"Number\");\n/** Nutritional information about the recipe. */\nexport const NutritionInformation = /*#__PURE__*/ ns(\"NutritionInformation\");\n/** A profession, may involve prolonged training and/or a formal qualification. */\nexport const Occupation = /*#__PURE__*/ ns(\"Occupation\");\n/** An ocean (for example, the Pacific). */\nexport const OceanBodyOfWater = /*#__PURE__*/ ns(\"OceanBodyOfWater\");\n/** An offer to transfer some rights to an item or to provide a service — for example, an offer to sell tickets to an event, to rent the DVD of a movie, to stream a TV show over the internet, to repair a motorcycle, or to loan a book.

\n\nFor GTIN-related fields, see Check Digit calculator and validation guide from GS1. */\nexport const Offer = /*#__PURE__*/ ns(\"Offer\");\n/** An OfferCatalog is an ItemList that contains related Offers and/or further OfferCatalogs that are offeredBy the same provider. */\nexport const OfferCatalog = /*#__PURE__*/ ns(\"OfferCatalog\");\n/** A list of possible conditions for the item. */\nexport const OfferItemCondition = /*#__PURE__*/ ns(\"OfferItemCondition\");\n/** An office equipment store. */\nexport const OfficeEquipmentStore = /*#__PURE__*/ ns(\"OfficeEquipmentStore\");\n/** A publication event e.g. catch-up TV or radio podcast, during which a program is available on-demand. */\nexport const OnDemandEvent = /*#__PURE__*/ ns(\"OnDemandEvent\");\n/** A structured value providing information about the opening hours of a place or a certain service inside a place.

\n\nThe place is open if the opens property is specified, and closed otherwise.

\n\nIf the value for the closes property is less than the value for the opens property then the hour range is assumed to span over the next day. */\nexport const OpeningHoursSpecification = /*#__PURE__*/ ns(\"OpeningHoursSpecification\");\n/** An order is a confirmation of a transaction (a receipt), which can contain multiple line items, each represented by an Offer that has been accepted by the customer. */\nexport const Order = /*#__PURE__*/ ns(\"Order\");\n/** An agent orders an object/product/service to be delivered/sent. */\nexport const OrderAction = /*#__PURE__*/ ns(\"OrderAction\");\n/** An order item is a line of an order. It includes the quantity and shipping details of a bought offer. */\nexport const OrderItem = /*#__PURE__*/ ns(\"OrderItem\");\n/** Enumerated status values for Order. */\nexport const OrderStatus = /*#__PURE__*/ ns(\"OrderStatus\");\n/** An organization such as a school, NGO, corporation, club, etc. */\nexport const Organization = /*#__PURE__*/ ns(\"Organization\");\n/** A subclass of Role used to describe roles within organizations. */\nexport const OrganizationRole = /*#__PURE__*/ ns(\"OrganizationRole\");\n/** The act of manipulating/administering/supervising/controlling one or more objects. */\nexport const OrganizeAction = /*#__PURE__*/ ns(\"OrganizeAction\");\n/** An outlet store. */\nexport const OutletStore = /*#__PURE__*/ ns(\"OutletStore\");\n/** A structured value providing information about when a certain organization or person owned a certain product. */\nexport const OwnershipInfo = /*#__PURE__*/ ns(\"OwnershipInfo\");\n/** The act of producing a painting, typically with paint and canvas as instruments. */\nexport const PaintAction = /*#__PURE__*/ ns(\"PaintAction\");\n/** A painting. */\nexport const Painting = /*#__PURE__*/ ns(\"Painting\");\n/** The delivery of a parcel either via the postal service or a commercial service. */\nexport const ParcelDelivery = /*#__PURE__*/ ns(\"ParcelDelivery\");\n/** A private parcel service as the delivery mode available for a certain offer.

\n\nCommonly used values:

\n\n
    \n
  • http://purl.org/goodrelations/v1#DHL
  • \n
  • http://purl.org/goodrelations/v1#FederalExpress
  • \n
  • http://purl.org/goodrelations/v1#UPS
  • \n
\n */\nexport const ParcelService = /*#__PURE__*/ ns(\"ParcelService\");\n/** A set of characteristics describing parents, who can be interested in viewing some content. */\nexport const ParentAudience = /*#__PURE__*/ ns(\"ParentAudience\");\n/** A park. */\nexport const Park = /*#__PURE__*/ ns(\"Park\");\n/** A parking lot or other parking facility. */\nexport const ParkingFacility = /*#__PURE__*/ ns(\"ParkingFacility\");\n/** A shop that will buy, or lend money against the security of, personal possessions. */\nexport const PawnShop = /*#__PURE__*/ ns(\"PawnShop\");\n/** An agent pays a price to a participant. */\nexport const PayAction = /*#__PURE__*/ ns(\"PayAction\");\n/** A payment method using a credit, debit, store or other card to associate the payment with an account. */\nexport const PaymentCard = /*#__PURE__*/ ns(\"PaymentCard\");\n/** The costs of settling the payment using a particular payment method. */\nexport const PaymentChargeSpecification = /*#__PURE__*/ ns(\"PaymentChargeSpecification\");\n/** A payment method is a standardized procedure for transferring the monetary amount for a purchase. Payment methods are characterized by the legal and technical structures used, and by the organization or group carrying out the transaction.

\n\nCommonly used values:

\n\n
    \n
  • http://purl.org/goodrelations/v1#ByBankTransferInAdvance
  • \n
  • http://purl.org/goodrelations/v1#ByInvoice
  • \n
  • http://purl.org/goodrelations/v1#Cash
  • \n
  • http://purl.org/goodrelations/v1#CheckInAdvance
  • \n
  • http://purl.org/goodrelations/v1#COD
  • \n
  • http://purl.org/goodrelations/v1#DirectDebit
  • \n
  • http://purl.org/goodrelations/v1#GoogleCheckout
  • \n
  • http://purl.org/goodrelations/v1#PayPal
  • \n
  • http://purl.org/goodrelations/v1#PaySwarm
  • \n
\n */\nexport const PaymentMethod = /*#__PURE__*/ ns(\"PaymentMethod\");\n/** A Service to transfer funds from a person or organization to a beneficiary person or organization. */\nexport const PaymentService = /*#__PURE__*/ ns(\"PaymentService\");\n/** A specific payment status. For example, PaymentDue, PaymentComplete, etc. */\nexport const PaymentStatusType = /*#__PURE__*/ ns(\"PaymentStatusType\");\n/** A set of characteristics belonging to people, e.g. who compose an item's target audience. */\nexport const PeopleAudience = /*#__PURE__*/ ns(\"PeopleAudience\");\n/** The act of participating in performance arts. */\nexport const PerformAction = /*#__PURE__*/ ns(\"PerformAction\");\n/** A PerformanceRole is a Role that some entity places with regard to a theatrical performance, e.g. in a Movie, TVSeries etc. */\nexport const PerformanceRole = /*#__PURE__*/ ns(\"PerformanceRole\");\n/** A theater or other performing art center. */\nexport const PerformingArtsTheater = /*#__PURE__*/ ns(\"PerformingArtsTheater\");\n/** A performance group, such as a band, an orchestra, or a circus. */\nexport const PerformingGroup = /*#__PURE__*/ ns(\"PerformingGroup\");\n/** A publication in any medium issued in successive parts bearing numerical or chronological designations and intended, such as a magazine, scholarly journal, or newspaper to continue indefinitely.

\n\nSee also blog post. */\nexport const Periodical = /*#__PURE__*/ ns(\"Periodical\");\n/** A permit issued by an organization, e.g. a parking pass. */\nexport const Permit = /*#__PURE__*/ ns(\"Permit\");\n/** A person (alive, dead, undead, or fictional). */\nexport const Person = /*#__PURE__*/ ns(\"Person\");\n/** A pet store. */\nexport const PetStore = /*#__PURE__*/ ns(\"PetStore\");\n/** A pharmacy or drugstore. */\nexport const Pharmacy = /*#__PURE__*/ ns(\"Pharmacy\");\n/** A photograph. */\nexport const Photograph = /*#__PURE__*/ ns(\"Photograph\");\n/** The act of capturing still images of objects using a camera. */\nexport const PhotographAction = /*#__PURE__*/ ns(\"PhotographAction\");\n/** A doctor's office. */\nexport const Physician = /*#__PURE__*/ ns(\"Physician\");\n/** Entities that have a somewhat fixed, physical extension. */\nexport const Place = /*#__PURE__*/ ns(\"Place\");\n/** Place of worship, such as a church, synagogue, or mosque. */\nexport const PlaceOfWorship = /*#__PURE__*/ ns(\"PlaceOfWorship\");\n/** The act of planning the execution of an event/task/action/reservation/plan to a future date. */\nexport const PlanAction = /*#__PURE__*/ ns(\"PlanAction\");\n/** The act of playing/exercising/training/performing for enjoyment, leisure, recreation, Competition or exercise.

\n\nRelated actions:

\n\n
    \n
  • ListenAction: Unlike ListenAction (which is under ConsumeAction), PlayAction refers to performing for an audience or at an event, rather than consuming music.
  • \n
  • WatchAction: Unlike WatchAction (which is under ConsumeAction), PlayAction refers to showing/displaying for an audience or at an event, rather than consuming visual content.
  • \n
\n */\nexport const PlayAction = /*#__PURE__*/ ns(\"PlayAction\");\n/** A playground. */\nexport const Playground = /*#__PURE__*/ ns(\"Playground\");\n/** A plumbing service. */\nexport const Plumber = /*#__PURE__*/ ns(\"Plumber\");\n/** A police station. */\nexport const PoliceStation = /*#__PURE__*/ ns(\"PoliceStation\");\n/** A pond. */\nexport const Pond = /*#__PURE__*/ ns(\"Pond\");\n/** A post office. */\nexport const PostOffice = /*#__PURE__*/ ns(\"PostOffice\");\n/** The mailing address. */\nexport const PostalAddress = /*#__PURE__*/ ns(\"PostalAddress\");\n/** An agent orders a (not yet released) object/product/service to be delivered/sent. */\nexport const PreOrderAction = /*#__PURE__*/ ns(\"PreOrderAction\");\n/** The act of inserting at the beginning if an ordered collection. */\nexport const PrependAction = /*#__PURE__*/ ns(\"PrependAction\");\n/** A preschool. */\nexport const Preschool = /*#__PURE__*/ ns(\"Preschool\");\n/** A file containing slides or used for a presentation. */\nexport const PresentationDigitalDocument = /*#__PURE__*/ ns(\"PresentationDigitalDocument\");\n/** A structured value representing a price or price range. Typically, only the subclasses of this type are used for markup. It is recommended to use MonetaryAmount to describe independent amounts of money such as a salary, credit card limits, etc. */\nexport const PriceSpecification = /*#__PURE__*/ ns(\"PriceSpecification\");\n/** Any offered product or service. For example: a pair of shoes; a concert ticket; the rental of a car; a haircut; or an episode of a TV show streamed online. */\nexport const Product = /*#__PURE__*/ ns(\"Product\");\n/** A datasheet or vendor specification of a product (in the sense of a prototypical description). */\nexport const ProductModel = /*#__PURE__*/ ns(\"ProductModel\");\n/** Original definition: \"provider of professional services.\"

\n\nThe general ProfessionalService type for local businesses was deprecated due to confusion with Service. For reference, the types that it included were: Dentist,\n AccountingService, Attorney, Notary, as well as types for several kinds of HomeAndConstructionBusiness: Electrician, GeneralContractor,\n HousePainter, Locksmith, Plumber, RoofingContractor. LegalService was introduced as a more inclusive supertype of Attorney. */\nexport const ProfessionalService = /*#__PURE__*/ ns(\"ProfessionalService\");\n/** Web page type: Profile page. */\nexport const ProfilePage = /*#__PURE__*/ ns(\"ProfilePage\");\n/** Used to describe membership in a loyalty programs (e.g. \"StarAliance\"), traveler clubs (e.g. \"AAA\"), purchase clubs (\"Safeway Club\"), etc. */\nexport const ProgramMembership = /*#__PURE__*/ ns(\"ProgramMembership\");\n/** A property-value pair, e.g. representing a feature of a product or place. Use the 'name' property for the name of the property. If there is an additional human-readable version of the value, put that into the 'description' property.

\n\nAlways use specific schema.org properties when a) they exist and b) you can populate them. Using PropertyValue as a substitute will typically not trigger the same effect as using the original, specific property. */\nexport const PropertyValue = /*#__PURE__*/ ns(\"PropertyValue\");\n/** A Property value specification. */\nexport const PropertyValueSpecification = /*#__PURE__*/ ns(\"PropertyValueSpecification\");\n/** A public swimming pool. */\nexport const PublicSwimmingPool = /*#__PURE__*/ ns(\"PublicSwimmingPool\");\n/** A PublicationEvent corresponds indifferently to the event of publication for a CreativeWork of any type e.g. a broadcast event, an on-demand event, a book/journal publication via a variety of delivery media. */\nexport const PublicationEvent = /*#__PURE__*/ ns(\"PublicationEvent\");\n/** A part of a successively published publication such as a periodical or publication volume, often numbered, usually containing a grouping of works such as articles.

\n\nSee also blog post. */\nexport const PublicationIssue = /*#__PURE__*/ ns(\"PublicationIssue\");\n/** A part of a successively published publication such as a periodical or multi-volume work, often numbered. It may represent a time span, such as a year.

\n\nSee also blog post. */\nexport const PublicationVolume = /*#__PURE__*/ ns(\"PublicationVolume\");\n/** A QAPage is a WebPage focussed on a specific Question and its Answer(s), e.g. in a question answering site or documenting Frequently Asked Questions (FAQs). */\nexport const QAPage = /*#__PURE__*/ ns(\"QAPage\");\n/** A predefined value for a product characteristic, e.g. the power cord plug type 'US' or the garment sizes 'S', 'M', 'L', and 'XL'. */\nexport const QualitativeValue = /*#__PURE__*/ ns(\"QualitativeValue\");\n/** A point value or interval for product characteristics and other purposes. */\nexport const QuantitativeValue = /*#__PURE__*/ ns(\"QuantitativeValue\");\n/** A statistical distribution of values. */\nexport const QuantitativeValueDistribution = /*#__PURE__*/ ns(\"QuantitativeValueDistribution\");\n/** Quantities such as distance, time, mass, weight, etc. Particular instances of say Mass are entities like '3 Kg' or '4 milligrams'. */\nexport const Quantity = /*#__PURE__*/ ns(\"Quantity\");\n/** A specific question - e.g. from a user seeking answers online, or collected in a Frequently Asked Questions (FAQ) document. */\nexport const Question = /*#__PURE__*/ ns(\"Question\");\n/** An agent quotes/estimates/appraises an object/product/service with a price at a location/store. */\nexport const QuoteAction = /*#__PURE__*/ ns(\"QuoteAction\");\n/** A place offering space for \"Recreational Vehicles\", Caravans, mobile homes and the like. */\nexport const RVPark = /*#__PURE__*/ ns(\"RVPark\");\n/** A unique instance of a radio BroadcastService on a CableOrSatelliteService lineup. */\nexport const RadioChannel = /*#__PURE__*/ ns(\"RadioChannel\");\n/** A short radio program or a segment/part of a radio program. */\nexport const RadioClip = /*#__PURE__*/ ns(\"RadioClip\");\n/** A radio episode which can be part of a series or season. */\nexport const RadioEpisode = /*#__PURE__*/ ns(\"RadioEpisode\");\n/** Season dedicated to radio broadcast and associated online delivery. */\nexport const RadioSeason = /*#__PURE__*/ ns(\"RadioSeason\");\n/** CreativeWorkSeries dedicated to radio broadcast and associated online delivery. */\nexport const RadioSeries = /*#__PURE__*/ ns(\"RadioSeries\");\n/** A radio station. */\nexport const RadioStation = /*#__PURE__*/ ns(\"RadioStation\");\n/** A rating is an evaluation on a numeric scale, such as 1 to 5 stars. */\nexport const Rating = /*#__PURE__*/ ns(\"Rating\");\n/** The act of responding instinctively and emotionally to an object, expressing a sentiment. */\nexport const ReactAction = /*#__PURE__*/ ns(\"ReactAction\");\n/** The act of consuming written content. */\nexport const ReadAction = /*#__PURE__*/ ns(\"ReadAction\");\n/** A real-estate agent. */\nexport const RealEstateAgent = /*#__PURE__*/ ns(\"RealEstateAgent\");\n/** The act of physically/electronically taking delivery of an object thathas been transferred from an origin to a destination. Reciprocal of SendAction.

\n\nRelated actions:

\n\n
    \n
  • SendAction: The reciprocal of ReceiveAction.
  • \n
  • TakeAction: Unlike TakeAction, ReceiveAction does not imply that the ownership has been transfered (e.g. I can receive a package, but it does not mean the package is now mine).
  • \n
\n */\nexport const ReceiveAction = /*#__PURE__*/ ns(\"ReceiveAction\");\n/** A recipe. For dietary restrictions covered by the recipe, a few common restrictions are enumerated via suitableForDiet. The keywords property can also be used to add more detail. */\nexport const Recipe = /*#__PURE__*/ ns(\"Recipe\");\n/** A recycling center. */\nexport const RecyclingCenter = /*#__PURE__*/ ns(\"RecyclingCenter\");\n/** The act of registering to be a user of a service, product or web page.

\n\nRelated actions:

\n\n
    \n
  • JoinAction: Unlike JoinAction, RegisterAction implies you are registering to be a user of a service, not a group/team of people.
  • \n
  • [FollowAction]]: Unlike FollowAction, RegisterAction doesn't imply that the agent is expecting to poll for updates from the object.
  • \n
  • SubscribeAction: Unlike SubscribeAction, RegisterAction doesn't imply that the agent is expecting updates from the object.
  • \n
\n */\nexport const RegisterAction = /*#__PURE__*/ ns(\"RegisterAction\");\n/** The act of rejecting to/adopting an object.

\n\nRelated actions:

\n\n\n */\nexport const RejectAction = /*#__PURE__*/ ns(\"RejectAction\");\n/** The act of giving money in return for temporary use, but not ownership, of an object such as a vehicle or property. For example, an agent rents a property from a landlord in exchange for a periodic payment. */\nexport const RentAction = /*#__PURE__*/ ns(\"RentAction\");\n/** A reservation for a rental car.

\n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. */\nexport const RentalCarReservation = /*#__PURE__*/ ns(\"RentalCarReservation\");\n/** The act of editing a recipient by replacing an old object with a new object. */\nexport const ReplaceAction = /*#__PURE__*/ ns(\"ReplaceAction\");\n/** The act of responding to a question/message asked/sent by the object. Related to AskAction

\n\nRelated actions:

\n\n
    \n
  • AskAction: Appears generally as an origin of a ReplyAction.
  • \n
\n */\nexport const ReplyAction = /*#__PURE__*/ ns(\"ReplyAction\");\n/** A Report generated by governmental or non-governmental organization. */\nexport const Report = /*#__PURE__*/ ns(\"Report\");\n/** Describes a reservation for travel, dining or an event. Some reservations require tickets.

\n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. For offers of tickets, restaurant reservations, flights, or rental cars, use Offer. */\nexport const Reservation = /*#__PURE__*/ ns(\"Reservation\");\n/** A group of multiple reservations with common values for all sub-reservations. */\nexport const ReservationPackage = /*#__PURE__*/ ns(\"ReservationPackage\");\n/** Enumerated status values for Reservation. */\nexport const ReservationStatusType = /*#__PURE__*/ ns(\"ReservationStatusType\");\n/** Reserving a concrete object.

\n\nRelated actions:

\n\n
    \n
  • ScheduleAction: Unlike ScheduleAction, ReserveAction reserves concrete objects (e.g. a table, a hotel) towards a time slot / spatial allocation.
  • \n
\n */\nexport const ReserveAction = /*#__PURE__*/ ns(\"ReserveAction\");\n/** A reservoir of water, typically an artificially created lake, like the Lake Kariba reservoir. */\nexport const Reservoir = /*#__PURE__*/ ns(\"Reservoir\");\n/** The place where a person lives. */\nexport const Residence = /*#__PURE__*/ ns(\"Residence\");\n/** A resort is a place used for relaxation or recreation, attracting visitors for holidays or vacations. Resorts are places, towns or sometimes commercial establishment operated by a single company (Source: Wikipedia, the free encyclopedia, see http://en.wikipedia.org/wiki/Resort).\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const Resort = /*#__PURE__*/ ns(\"Resort\");\n/** A restaurant. */\nexport const Restaurant = /*#__PURE__*/ ns(\"Restaurant\");\n/** A diet restricted to certain foods or preparations for cultural, religious, health or lifestyle reasons. */\nexport const RestrictedDiet = /*#__PURE__*/ ns(\"RestrictedDiet\");\n/** The act of resuming a device or application which was formerly paused (e.g. resume music playback or resume a timer). */\nexport const ResumeAction = /*#__PURE__*/ ns(\"ResumeAction\");\n/** The act of returning to the origin that which was previously received (concrete objects) or taken (ownership). */\nexport const ReturnAction = /*#__PURE__*/ ns(\"ReturnAction\");\n/** A review of an item - for example, of a restaurant, movie, or store. */\nexport const Review = /*#__PURE__*/ ns(\"Review\");\n/** The act of producing a balanced opinion about the object for an audience. An agent reviews an object with participants resulting in a review. */\nexport const ReviewAction = /*#__PURE__*/ ns(\"ReviewAction\");\n/** A river (for example, the broad majestic Shannon). */\nexport const RiverBodyOfWater = /*#__PURE__*/ ns(\"RiverBodyOfWater\");\n/** Represents additional information about a relationship or property. For example a Role can be used to say that a 'member' role linking some SportsTeam to a player occurred during a particular time period. Or that a Person's 'actor' role in a Movie was for some particular characterName. Such properties can be attached to a Role entity, which is then associated with the main entities using ordinary properties like 'member' or 'actor'.

\n\nSee also blog post. */\nexport const Role = /*#__PURE__*/ ns(\"Role\");\n/** A roofing contractor. */\nexport const RoofingContractor = /*#__PURE__*/ ns(\"RoofingContractor\");\n/** A room is a distinguishable space within a structure, usually separated from other spaces by interior walls. (Source: Wikipedia, the free encyclopedia, see http://en.wikipedia.org/wiki/Room).\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const Room = /*#__PURE__*/ ns(\"Room\");\n/** The act of notifying an event organizer as to whether you expect to attend the event. */\nexport const RsvpAction = /*#__PURE__*/ ns(\"RsvpAction\");\n/** RsvpResponseType is an enumeration type whose instances represent responding to an RSVP request. */\nexport const RsvpResponseType = /*#__PURE__*/ ns(\"RsvpResponseType\");\n/** Event type: Sales event. */\nexport const SaleEvent = /*#__PURE__*/ ns(\"SaleEvent\");\n/** Scheduling future actions, events, or tasks.

\n\nRelated actions:

\n\n
    \n
  • ReserveAction: Unlike ReserveAction, ScheduleAction allocates future actions (e.g. an event, a task, etc) towards a time slot / spatial allocation.
  • \n
\n */\nexport const ScheduleAction = /*#__PURE__*/ ns(\"ScheduleAction\");\n/** A scholarly article. */\nexport const ScholarlyArticle = /*#__PURE__*/ ns(\"ScholarlyArticle\");\n/** A school. */\nexport const School = /*#__PURE__*/ ns(\"School\");\n/** A screening of a movie or other video. */\nexport const ScreeningEvent = /*#__PURE__*/ ns(\"ScreeningEvent\");\n/** A piece of sculpture. */\nexport const Sculpture = /*#__PURE__*/ ns(\"Sculpture\");\n/** A sea (for example, the Caspian sea). */\nexport const SeaBodyOfWater = /*#__PURE__*/ ns(\"SeaBodyOfWater\");\n/** The act of searching for an object.

\n\nRelated actions:

\n\n
    \n
  • FindAction: SearchAction generally leads to a FindAction, but not necessarily.
  • \n
\n */\nexport const SearchAction = /*#__PURE__*/ ns(\"SearchAction\");\n/** Web page type: Search results page. */\nexport const SearchResultsPage = /*#__PURE__*/ ns(\"SearchResultsPage\");\n/** A media season e.g. tv, radio, video game etc. */\nexport const Season = /*#__PURE__*/ ns(\"Season\");\n/** Used to describe a seat, such as a reserved seat in an event reservation. */\nexport const Seat = /*#__PURE__*/ ns(\"Seat\");\n/** A self-storage facility. */\nexport const SelfStorage = /*#__PURE__*/ ns(\"SelfStorage\");\n/** The act of taking money from a buyer in exchange for goods or services rendered. An agent sells an object, product, or service to a buyer for a price. Reciprocal of BuyAction. */\nexport const SellAction = /*#__PURE__*/ ns(\"SellAction\");\n/** The act of physically/electronically dispatching an object for transfer from an origin to a destination.Related actions:

\n\n
    \n
  • ReceiveAction: The reciprocal of SendAction.
  • \n
  • GiveAction: Unlike GiveAction, SendAction does not imply the transfer of ownership (e.g. I can send you my laptop, but I'm not necessarily giving it to you).
  • \n
\n */\nexport const SendAction = /*#__PURE__*/ ns(\"SendAction\");\n/** A Series in schema.org is a group of related items, typically but not necessarily of the same kind. See also CreativeWorkSeries, EventSeries. */\nexport const Series = /*#__PURE__*/ ns(\"Series\");\n/** A service provided by an organization, e.g. delivery service, print services, etc. */\nexport const Service = /*#__PURE__*/ ns(\"Service\");\n/** A means for accessing a service, e.g. a government office location, web site, or phone number. */\nexport const ServiceChannel = /*#__PURE__*/ ns(\"ServiceChannel\");\n/** The act of distributing content to people for their amusement or edification. */\nexport const ShareAction = /*#__PURE__*/ ns(\"ShareAction\");\n/** A shoe store. */\nexport const ShoeStore = /*#__PURE__*/ ns(\"ShoeStore\");\n/** A shopping center or mall. */\nexport const ShoppingCenter = /*#__PURE__*/ ns(\"ShoppingCenter\");\n/** Residence type: Single-family home. */\nexport const SingleFamilyResidence = /*#__PURE__*/ ns(\"SingleFamilyResidence\");\n/** A navigation element of the page. */\nexport const SiteNavigationElement = /*#__PURE__*/ ns(\"SiteNavigationElement\");\n/** A ski resort. */\nexport const SkiResort = /*#__PURE__*/ ns(\"SkiResort\");\n/** Event type: Social event. */\nexport const SocialEvent = /*#__PURE__*/ ns(\"SocialEvent\");\n/** A post to a social media platform, including blog posts, tweets, Facebook posts, etc. */\nexport const SocialMediaPosting = /*#__PURE__*/ ns(\"SocialMediaPosting\");\n/** A software application. */\nexport const SoftwareApplication = /*#__PURE__*/ ns(\"SoftwareApplication\");\n/** Computer programming source code. Example: Full (compile ready) solutions, code snippet samples, scripts, templates. */\nexport const SoftwareSourceCode = /*#__PURE__*/ ns(\"SoftwareSourceCode\");\n/** A placeholder for multiple similar products of the same kind. */\nexport const SomeProducts = /*#__PURE__*/ ns(\"SomeProducts\");\n/** A SpeakableSpecification indicates (typically via xpath or cssSelector) sections of a document that are highlighted as particularly speakable. Instances of this type are expected to be used primarily as values of the speakable property. */\nexport const SpeakableSpecification = /*#__PURE__*/ ns(\"SpeakableSpecification\");\n/** Any branch of a field in which people typically develop specific expertise, usually after significant study, time, and effort. */\nexport const Specialty = /*#__PURE__*/ ns(\"Specialty\");\n/** A sporting goods store. */\nexport const SportingGoodsStore = /*#__PURE__*/ ns(\"SportingGoodsStore\");\n/** A sports location, such as a playing field. */\nexport const SportsActivityLocation = /*#__PURE__*/ ns(\"SportsActivityLocation\");\n/** A sports club. */\nexport const SportsClub = /*#__PURE__*/ ns(\"SportsClub\");\n/** Event type: Sports event. */\nexport const SportsEvent = /*#__PURE__*/ ns(\"SportsEvent\");\n/** Represents the collection of all sports organizations, including sports teams, governing bodies, and sports associations. */\nexport const SportsOrganization = /*#__PURE__*/ ns(\"SportsOrganization\");\n/** Organization: Sports team. */\nexport const SportsTeam = /*#__PURE__*/ ns(\"SportsTeam\");\n/** A spreadsheet file. */\nexport const SpreadsheetDigitalDocument = /*#__PURE__*/ ns(\"SpreadsheetDigitalDocument\");\n/** A stadium. */\nexport const StadiumOrArena = /*#__PURE__*/ ns(\"StadiumOrArena\");\n/** A state or province of a country. */\nexport const State = /*#__PURE__*/ ns(\"State\");\n/** A value indicating a steering position. */\nexport const SteeringPositionValue = /*#__PURE__*/ ns(\"SteeringPositionValue\");\n/** A retail good store. */\nexport const Store = /*#__PURE__*/ ns(\"Store\");\n/** Structured values are used when the value of a property has a more complex structure than simply being a textual value or a reference to another thing. */\nexport const StructuredValue = /*#__PURE__*/ ns(\"StructuredValue\");\n/** The act of forming a personal connection with someone/something (object) unidirectionally/asymmetrically to get updates pushed to.

\n\nRelated actions:

\n\n
    \n
  • FollowAction: Unlike FollowAction, SubscribeAction implies that the subscriber acts as a passive agent being constantly/actively pushed for updates.
  • \n
  • RegisterAction: Unlike RegisterAction, SubscribeAction implies that the agent is interested in continuing receiving updates from the object.
  • \n
  • JoinAction: Unlike JoinAction, SubscribeAction implies that the agent is interested in continuing receiving updates from the object.
  • \n
\n */\nexport const SubscribeAction = /*#__PURE__*/ ns(\"SubscribeAction\");\n/** A subway station. */\nexport const SubwayStation = /*#__PURE__*/ ns(\"SubwayStation\");\n/** A suite in a hotel or other public accommodation, denotes a class of luxury accommodations, the key feature of which is multiple rooms (Source: Wikipedia, the free encyclopedia, see http://en.wikipedia.org/wiki/Suite_(hotel)).\n

\nSee also the dedicated document on the use of schema.org for marking up hotels and other forms of accommodations. */\nexport const Suite = /*#__PURE__*/ ns(\"Suite\");\n/** The act of momentarily pausing a device or application (e.g. pause music playback or pause a timer). */\nexport const SuspendAction = /*#__PURE__*/ ns(\"SuspendAction\");\n/** A synagogue. */\nexport const Synagogue = /*#__PURE__*/ ns(\"Synagogue\");\n/** A short TV program or a segment/part of a TV program. */\nexport const TVClip = /*#__PURE__*/ ns(\"TVClip\");\n/** A TV episode which can be part of a series or season. */\nexport const TVEpisode = /*#__PURE__*/ ns(\"TVEpisode\");\n/** Season dedicated to TV broadcast and associated online delivery. */\nexport const TVSeason = /*#__PURE__*/ ns(\"TVSeason\");\n/** CreativeWorkSeries dedicated to TV broadcast and associated online delivery. */\nexport const TVSeries = /*#__PURE__*/ ns(\"TVSeries\");\n/** A table on a Web page. */\nexport const Table = /*#__PURE__*/ ns(\"Table\");\n/** The act of gaining ownership of an object from an origin. Reciprocal of GiveAction.

\n\nRelated actions:

\n\n
    \n
  • GiveAction: The reciprocal of TakeAction.
  • \n
  • ReceiveAction: Unlike ReceiveAction, TakeAction implies that ownership has been transfered.
  • \n
\n */\nexport const TakeAction = /*#__PURE__*/ ns(\"TakeAction\");\n/** A tattoo parlor. */\nexport const TattooParlor = /*#__PURE__*/ ns(\"TattooParlor\");\n/** A taxi. */\nexport const Taxi = /*#__PURE__*/ ns(\"Taxi\");\n/** A reservation for a taxi.

\n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. For offers of tickets, use Offer. */\nexport const TaxiReservation = /*#__PURE__*/ ns(\"TaxiReservation\");\n/** A service for a vehicle for hire with a driver for local travel. Fares are usually calculated based on distance traveled. */\nexport const TaxiService = /*#__PURE__*/ ns(\"TaxiService\");\n/** A taxi stand. */\nexport const TaxiStand = /*#__PURE__*/ ns(\"TaxiStand\");\n/** A technical article - Example: How-to (task) topics, step-by-step, procedural troubleshooting, specifications, etc. */\nexport const TechArticle = /*#__PURE__*/ ns(\"TechArticle\");\n/** A unique instance of a television BroadcastService on a CableOrSatelliteService lineup. */\nexport const TelevisionChannel = /*#__PURE__*/ ns(\"TelevisionChannel\");\n/** A television station. */\nexport const TelevisionStation = /*#__PURE__*/ ns(\"TelevisionStation\");\n/** A tennis complex. */\nexport const TennisComplex = /*#__PURE__*/ ns(\"TennisComplex\");\n/** Data type: Text. */\nexport const Text = /*#__PURE__*/ ns(\"Text\");\n/** A file composed primarily of text. */\nexport const TextDigitalDocument = /*#__PURE__*/ ns(\"TextDigitalDocument\");\n/** Event type: Theater performance. */\nexport const TheaterEvent = /*#__PURE__*/ ns(\"TheaterEvent\");\n/** A theater group or company, for example, the Royal Shakespeare Company or Druid Theatre. */\nexport const TheaterGroup = /*#__PURE__*/ ns(\"TheaterGroup\");\n/** The most generic type of item. */\nexport const Thing = /*#__PURE__*/ ns(\"Thing\");\n/** Used to describe a ticket to an event, a flight, a bus ride, etc. */\nexport const Ticket = /*#__PURE__*/ ns(\"Ticket\");\n/** The act of reaching a draw in a competitive activity. */\nexport const TieAction = /*#__PURE__*/ ns(\"TieAction\");\n/** A point in time recurring on multiple days in the form hh:mm:ss[Z|(+|-)hh:mm] (see XML schema for details). */\nexport const Time = /*#__PURE__*/ ns(\"Time\");\n/** The act of giving money voluntarily to a beneficiary in recognition of services rendered. */\nexport const TipAction = /*#__PURE__*/ ns(\"TipAction\");\n/** A tire shop. */\nexport const TireShop = /*#__PURE__*/ ns(\"TireShop\");\n/** A tourist attraction. In principle any Thing can be a TouristAttraction, from a Mountain and LandmarksOrHistoricalBuildings to a LocalBusiness. This Type can be used on its own to describe a general TouristAttraction, or be used as an additionalType to add tourist attraction properties to any other type. (See examples below) */\nexport const TouristAttraction = /*#__PURE__*/ ns(\"TouristAttraction\");\n/** A tourist information center. */\nexport const TouristInformationCenter = /*#__PURE__*/ ns(\"TouristInformationCenter\");\n/** A toy store. */\nexport const ToyStore = /*#__PURE__*/ ns(\"ToyStore\");\n/** An agent tracks an object for updates.

\n\nRelated actions:

\n\n
    \n
  • FollowAction: Unlike FollowAction, TrackAction refers to the interest on the location of innanimates objects.
  • \n
  • SubscribeAction: Unlike SubscribeAction, TrackAction refers to the interest on the location of innanimate objects.
  • \n
\n */\nexport const TrackAction = /*#__PURE__*/ ns(\"TrackAction\");\n/** The act of participating in an exchange of goods and services for monetary compensation. An agent trades an object, product or service with a participant in exchange for a one time or periodic payment. */\nexport const TradeAction = /*#__PURE__*/ ns(\"TradeAction\");\n/** A reservation for train travel.

\n\nNote: This type is for information about actual reservations, e.g. in confirmation emails or HTML pages with individual confirmations of reservations. For offers of tickets, use Offer. */\nexport const TrainReservation = /*#__PURE__*/ ns(\"TrainReservation\");\n/** A train station. */\nexport const TrainStation = /*#__PURE__*/ ns(\"TrainStation\");\n/** A trip on a commercial train line. */\nexport const TrainTrip = /*#__PURE__*/ ns(\"TrainTrip\");\n/** The act of transferring/moving (abstract or concrete) animate or inanimate objects from one place to another. */\nexport const TransferAction = /*#__PURE__*/ ns(\"TransferAction\");\n/** The act of traveling from an fromLocation to a destination by a specified mode of transport, optionally with participants. */\nexport const TravelAction = /*#__PURE__*/ ns(\"TravelAction\");\n/** A travel agency. */\nexport const TravelAgency = /*#__PURE__*/ ns(\"TravelAgency\");\n/** A trip or journey. An itinerary of visits to one or more places. */\nexport const Trip = /*#__PURE__*/ ns(\"Trip\");\n/** A structured value indicating the quantity, unit of measurement, and business function of goods included in a bundle offer. */\nexport const TypeAndQuantityNode = /*#__PURE__*/ ns(\"TypeAndQuantityNode\");\n/** Data type: URL. */\nexport const URL = /*#__PURE__*/ ns(\"URL\");\n/** The act of un-registering from a service.

\n\nRelated actions:

\n\n
    \n
  • RegisterAction: antonym of UnRegisterAction.
  • \n
  • LeaveAction: Unlike LeaveAction, UnRegisterAction implies that you are unregistering from a service you werer previously registered, rather than leaving a team/group of people.
  • \n
\n */\nexport const UnRegisterAction = /*#__PURE__*/ ns(\"UnRegisterAction\");\n/** The price asked for a given offer by the respective organization or person. */\nexport const UnitPriceSpecification = /*#__PURE__*/ ns(\"UnitPriceSpecification\");\n/** The act of managing by changing/editing the state of the object. */\nexport const UpdateAction = /*#__PURE__*/ ns(\"UpdateAction\");\n/** The act of applying an object to its intended purpose. */\nexport const UseAction = /*#__PURE__*/ ns(\"UseAction\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserBlocks = /*#__PURE__*/ ns(\"UserBlocks\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserCheckins = /*#__PURE__*/ ns(\"UserCheckins\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserComments = /*#__PURE__*/ ns(\"UserComments\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserDownloads = /*#__PURE__*/ ns(\"UserDownloads\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserInteraction = /*#__PURE__*/ ns(\"UserInteraction\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserLikes = /*#__PURE__*/ ns(\"UserLikes\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserPageVisits = /*#__PURE__*/ ns(\"UserPageVisits\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserPlays = /*#__PURE__*/ ns(\"UserPlays\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserPlusOnes = /*#__PURE__*/ ns(\"UserPlusOnes\");\n/** UserInteraction and its subtypes is an old way of talking about users interacting with pages. It is generally better to use Action-based vocabulary, alongside types such as Comment. */\nexport const UserTweets = /*#__PURE__*/ ns(\"UserTweets\");\n/** A vehicle is a device that is designed or used to transport people or cargo over land, water, air, or through space. */\nexport const Vehicle = /*#__PURE__*/ ns(\"Vehicle\");\n/** Web page type: Video gallery page. */\nexport const VideoGallery = /*#__PURE__*/ ns(\"VideoGallery\");\n/** A video game is an electronic game that involves human interaction with a user interface to generate visual feedback on a video device. */\nexport const VideoGame = /*#__PURE__*/ ns(\"VideoGame\");\n/** A short segment/part of a video game. */\nexport const VideoGameClip = /*#__PURE__*/ ns(\"VideoGameClip\");\n/** A video game series. */\nexport const VideoGameSeries = /*#__PURE__*/ ns(\"VideoGameSeries\");\n/** A video file. */\nexport const VideoObject = /*#__PURE__*/ ns(\"VideoObject\");\n/** The act of consuming static visual content. */\nexport const ViewAction = /*#__PURE__*/ ns(\"ViewAction\");\n/** Event type: Visual arts event. */\nexport const VisualArtsEvent = /*#__PURE__*/ ns(\"VisualArtsEvent\");\n/** A work of art that is primarily visual in character. */\nexport const VisualArtwork = /*#__PURE__*/ ns(\"VisualArtwork\");\n/** A volcano, like Fuji san. */\nexport const Volcano = /*#__PURE__*/ ns(\"Volcano\");\n/** The act of expressing a preference from a fixed/finite/structured set of choices/options. */\nexport const VoteAction = /*#__PURE__*/ ns(\"VoteAction\");\n/** An advertising section of the page. */\nexport const WPAdBlock = /*#__PURE__*/ ns(\"WPAdBlock\");\n/** The footer section of the page. */\nexport const WPFooter = /*#__PURE__*/ ns(\"WPFooter\");\n/** The header section of the page. */\nexport const WPHeader = /*#__PURE__*/ ns(\"WPHeader\");\n/** A sidebar section of the page. */\nexport const WPSideBar = /*#__PURE__*/ ns(\"WPSideBar\");\n/** The act of expressing a desire about the object. An agent wants an object. */\nexport const WantAction = /*#__PURE__*/ ns(\"WantAction\");\n/** A structured value representing the duration and scope of services that will be provided to a customer free of charge in case of a defect or malfunction of a product. */\nexport const WarrantyPromise = /*#__PURE__*/ ns(\"WarrantyPromise\");\n/** A range of of services that will be provided to a customer free of charge in case of a defect or malfunction of a product.

\n\nCommonly used values:

\n\n
    \n
  • http://purl.org/goodrelations/v1#Labor-BringIn
  • \n
  • http://purl.org/goodrelations/v1#PartsAndLabor-BringIn
  • \n
  • http://purl.org/goodrelations/v1#PartsAndLabor-PickUp
  • \n
\n */\nexport const WarrantyScope = /*#__PURE__*/ ns(\"WarrantyScope\");\n/** The act of consuming dynamic/moving visual content. */\nexport const WatchAction = /*#__PURE__*/ ns(\"WatchAction\");\n/** A waterfall, like Niagara. */\nexport const Waterfall = /*#__PURE__*/ ns(\"Waterfall\");\n/** The act of dressing oneself in clothing. */\nexport const WearAction = /*#__PURE__*/ ns(\"WearAction\");\n/** Web applications. */\nexport const WebApplication = /*#__PURE__*/ ns(\"WebApplication\");\n/** A web page. Every web page is implicitly assumed to be declared to be of type WebPage, so the various properties about that webpage, such as breadcrumb may be used. We recommend explicit declaration if these properties are specified, but if they are found outside of an itemscope, they will be assumed to be about the page. */\nexport const WebPage = /*#__PURE__*/ ns(\"WebPage\");\n/** A web page element, like a table or an image. */\nexport const WebPageElement = /*#__PURE__*/ ns(\"WebPageElement\");\n/** A WebSite is a set of related web pages and other items typically served from a single web domain and accessible via URLs. */\nexport const WebSite = /*#__PURE__*/ ns(\"WebSite\");\n/** A wholesale store. */\nexport const WholesaleStore = /*#__PURE__*/ ns(\"WholesaleStore\");\n/** The act of achieving victory in a competitive activity. */\nexport const WinAction = /*#__PURE__*/ ns(\"WinAction\");\n/** A winery. */\nexport const Winery = /*#__PURE__*/ ns(\"Winery\");\n/** A Workers Union (also known as a Labor Union, Labour Union, or Trade Union) is an organization that promotes the interests of its worker members by collectively bargaining with management, organizing, and political lobbying. */\nexport const WorkersUnion = /*#__PURE__*/ ns(\"WorkersUnion\");\n/** The act of authoring written creative content. */\nexport const WriteAction = /*#__PURE__*/ ns(\"WriteAction\");\n/** A zoo. */\nexport const Zoo = /*#__PURE__*/ ns(\"Zoo\");\n/* Properties */\n/** The answer(s) that has been accepted as best, typically on a Question/Answer site. Sites vary in their selection mechanisms, e.g. drawing on community opinion and/or the view of the Question author. */\nexport const acceptedAnswer = /*#__PURE__*/ ns(\"acceptedAnswer\");\n/** The offer(s) -- e.g., product, quantity and price combinations -- included in the order. */\nexport const acceptedOffer = /*#__PURE__*/ ns(\"acceptedOffer\");\n/** The payment method(s) accepted by seller for this offer. */\nexport const acceptedPaymentMethod = /*#__PURE__*/ ns(\"acceptedPaymentMethod\");\n/** Indicates whether a FoodEstablishment accepts reservations. Values can be Boolean, an URL at which reservations can be made or (for backwards compatibility) the strings Yes or No. */\nexport const acceptsReservations = /*#__PURE__*/ ns(\"acceptsReservations\");\n/** Password, PIN, or access code needed for delivery (e.g. from a locker). */\nexport const accessCode = /*#__PURE__*/ ns(\"accessCode\");\n/** The human sensory perceptual system or cognitive faculty through which a person may process or perceive information. Expected values include: auditory, tactile, textual, visual, colorDependent, chartOnVisual, chemOnVisual, diagramOnVisual, mathOnVisual, musicOnVisual, textOnVisual. */\nexport const accessMode = /*#__PURE__*/ ns(\"accessMode\");\n/** A list of single or combined accessModes that are sufficient to understand all the intellectual content of a resource. Expected values include: auditory, tactile, textual, visual. */\nexport const accessModeSufficient = /*#__PURE__*/ ns(\"accessModeSufficient\");\n/** Indicates that the resource is compatible with the referenced accessibility API (WebSchemas wiki lists possible values). */\nexport const accessibilityAPI = /*#__PURE__*/ ns(\"accessibilityAPI\");\n/** Identifies input methods that are sufficient to fully control the described resource (WebSchemas wiki lists possible values). */\nexport const accessibilityControl = /*#__PURE__*/ ns(\"accessibilityControl\");\n/** Content features of the resource, such as accessible media, alternatives and supported enhancements for accessibility (WebSchemas wiki lists possible values). */\nexport const accessibilityFeature = /*#__PURE__*/ ns(\"accessibilityFeature\");\n/** A characteristic of the described resource that is physiologically dangerous to some users. Related to WCAG 2.0 guideline 2.3 (WebSchemas wiki lists possible values). */\nexport const accessibilityHazard = /*#__PURE__*/ ns(\"accessibilityHazard\");\n/** A human-readable summary of specific accessibility features or deficiencies, consistent with the other accessibility metadata but expressing subtleties such as \"short descriptions are present but long descriptions will be needed for non-visual users\" or \"short descriptions are present and no long descriptions are needed.\" */\nexport const accessibilitySummary = /*#__PURE__*/ ns(\"accessibilitySummary\");\n/** The identifier for the account the payment will be applied to. */\nexport const accountId = /*#__PURE__*/ ns(\"accountId\");\n/** Specifies the Person that is legally accountable for the CreativeWork. */\nexport const accountablePerson = /*#__PURE__*/ ns(\"accountablePerson\");\n/** The organization or person from which the product was acquired. */\nexport const acquiredFrom = /*#__PURE__*/ ns(\"acquiredFrom\");\n/** A set of requirements that a must be fulfilled in order to perform an Action. If more than one value is specied, fulfilling one set of requirements will allow the Action to be performed. */\nexport const actionAccessibilityRequirement = /*#__PURE__*/ ns(\"actionAccessibilityRequirement\");\n/** The high level platform(s) where the Action can be performed for the given URL. To specify a specific application or operating system instance, use actionApplication. */\nexport const actionPlatform = /*#__PURE__*/ ns(\"actionPlatform\");\n/** Indicates the current disposition of the Action. */\nexport const actionStatus = /*#__PURE__*/ ns(\"actionStatus\");\n/** An actor, e.g. in tv, radio, movie, video games etc. Actors can be associated with individual items or with a series, episode, clip. */\nexport const actors = /*#__PURE__*/ ns(\"actors\");\n/** An additional offer that can only be obtained in combination with the first base offer (e.g. supplements and extensions that are available for a surcharge). */\nexport const addOn = /*#__PURE__*/ ns(\"addOn\");\n/** An additional name for a Person, can be used for a middle name. */\nexport const additionalName = /*#__PURE__*/ ns(\"additionalName\");\n/** If responding yes, the number of guests who will attend in addition to the invitee. */\nexport const additionalNumberOfGuests = /*#__PURE__*/ ns(\"additionalNumberOfGuests\");\n/** A property-value pair representing an additional characteristics of the entitity, e.g. a product feature or another characteristic for which there is no matching property in schema.org.

\n\nNote: Publishers should be aware that applications designed to use specific schema.org properties (e.g. http://schema.org/width, http://schema.org/color, http://schema.org/gtin13, ...) will typically expect such data to be provided using those properties, rather than using the generic property/value mechanism. */\nexport const additionalProperty = /*#__PURE__*/ ns(\"additionalProperty\");\n/** An additional type for the item, typically used for adding more specific types from external vocabularies in microdata syntax. This is a relationship between something and a class that the thing is in. In RDFa syntax, it is better to use the native RDFa syntax - the 'typeof' attribute - for multiple types. Schema.org tools may have only weaker understanding of extra types, in particular those defined externally. */\nexport const additionalType = /*#__PURE__*/ ns(\"additionalType\");\n/** Physical address of the item. */\nexport const address = /*#__PURE__*/ ns(\"address\");\n/** The country. For example, USA. You can also provide the two-letter ISO 3166-1 alpha-2 country code. */\nexport const addressCountry = /*#__PURE__*/ ns(\"addressCountry\");\n/** The locality in which the street address is, and which is in the region. For example, Mountain View. */\nexport const addressLocality = /*#__PURE__*/ ns(\"addressLocality\");\n/** The region in which the locality is, and which is in the country. For example, California or another appropriate first-level Administrative division */\nexport const addressRegion = /*#__PURE__*/ ns(\"addressRegion\");\n/** The amount of time that is required between accepting the offer and the actual usage of the resource or service. */\nexport const advanceBookingRequirement = /*#__PURE__*/ ns(\"advanceBookingRequirement\");\n/** An organization that this person is affiliated with. For example, a school/university, a club, or a team. */\nexport const affiliation = /*#__PURE__*/ ns(\"affiliation\");\n/** A media object representing the circumstances after performing this direction. */\nexport const afterMedia = /*#__PURE__*/ ns(\"afterMedia\");\n/** The direct performer or driver of the action (animate or inanimate). e.g. John wrote a book. */\nexport const agent = /*#__PURE__*/ ns(\"agent\");\n/** The overall rating, based on a collection of reviews or ratings, of the item. */\nexport const aggregateRating = /*#__PURE__*/ ns(\"aggregateRating\");\n/** The kind of aircraft (e.g., \"Boeing 747\"). */\nexport const aircraft = /*#__PURE__*/ ns(\"aircraft\");\n/** Classification of the album by it's type of content: soundtrack, live album, studio album, etc. */\nexport const albumProductionType = /*#__PURE__*/ ns(\"albumProductionType\");\n/** The kind of release which this album is: single, EP or album. */\nexport const albumReleaseType = /*#__PURE__*/ ns(\"albumReleaseType\");\n/** A collection of music albums. */\nexport const albums = /*#__PURE__*/ ns(\"albums\");\n/** A category of alignment between the learning resource and the framework node. Recommended values include: 'assesses', 'teaches', 'requires', 'textComplexity', 'readingLevel', 'educationalSubject', and 'educationalLevel'. */\nexport const alignmentType = /*#__PURE__*/ ns(\"alignmentType\");\n/** An alias for the item. */\nexport const alternateName = /*#__PURE__*/ ns(\"alternateName\");\n/** A secondary title of the CreativeWork. */\nexport const alternativeHeadline = /*#__PURE__*/ ns(\"alternativeHeadline\");\n/** An amenity feature (e.g. a characteristic or service) of the Accommodation. This generic property does not make a statement about whether the feature is included in an offer for the main accommodation or available at extra costs. */\nexport const amenityFeature = /*#__PURE__*/ ns(\"amenityFeature\");\n/** The amount of money. */\nexport const amount = /*#__PURE__*/ ns(\"amount\");\n/** The quantity of the goods included in the offer. */\nexport const amountOfThisGood = /*#__PURE__*/ ns(\"amountOfThisGood\");\n/** The annual rate that is charged for borrowing (or made by investing), expressed as a single percentage number that represents the actual yearly cost of funds over the term of a loan. This includes any fees or additional costs associated with the transaction. */\nexport const annualPercentageRate = /*#__PURE__*/ ns(\"annualPercentageRate\");\n/** The number of answers this question has received. */\nexport const answerCount = /*#__PURE__*/ ns(\"answerCount\");\n/** An application that can complete the request. */\nexport const application = /*#__PURE__*/ ns(\"application\");\n/** Type of software application, e.g. 'Game, Multimedia'. */\nexport const applicationCategory = /*#__PURE__*/ ns(\"applicationCategory\");\n/** Subcategory of the application, e.g. 'Arcade Game'. */\nexport const applicationSubCategory = /*#__PURE__*/ ns(\"applicationSubCategory\");\n/** The name of the application suite to which the application belongs (e.g. Excel belongs to Office). */\nexport const applicationSuite = /*#__PURE__*/ ns(\"applicationSuite\");\n/** The delivery method(s) to which the delivery charge or payment charge specification applies. */\nexport const appliesToDeliveryMethod = /*#__PURE__*/ ns(\"appliesToDeliveryMethod\");\n/** The payment method(s) to which the payment charge specification applies. */\nexport const appliesToPaymentMethod = /*#__PURE__*/ ns(\"appliesToPaymentMethod\");\n/** The area within which users can expect to reach the broadcast service. */\nexport const area = /*#__PURE__*/ ns(\"area\");\n/** The airport where the flight terminates. */\nexport const arrivalAirport = /*#__PURE__*/ ns(\"arrivalAirport\");\n/** The stop or station from which the bus arrives. */\nexport const arrivalBusStop = /*#__PURE__*/ ns(\"arrivalBusStop\");\n/** Identifier of the flight's arrival gate. */\nexport const arrivalGate = /*#__PURE__*/ ns(\"arrivalGate\");\n/** The platform where the train arrives. */\nexport const arrivalPlatform = /*#__PURE__*/ ns(\"arrivalPlatform\");\n/** The station where the train trip ends. */\nexport const arrivalStation = /*#__PURE__*/ ns(\"arrivalStation\");\n/** Identifier of the flight's arrival terminal. */\nexport const arrivalTerminal = /*#__PURE__*/ ns(\"arrivalTerminal\");\n/** The expected arrival time. */\nexport const arrivalTime = /*#__PURE__*/ ns(\"arrivalTime\");\n/** The number of copies when multiple copies of a piece of artwork are produced - e.g. for a limited edition of 20 prints, 'artEdition' refers to the total number of copies (in this example \"20\"). */\nexport const artEdition = /*#__PURE__*/ ns(\"artEdition\");\n/** The material used. (e.g. Oil, Watercolour, Acrylic, Linoprint, Marble, Cyanotype, Digital, Lithograph, DryPoint, Intaglio, Pastel, Woodcut, Pencil, Mixed Media, etc.) */\nexport const artMedium = /*#__PURE__*/ ns(\"artMedium\");\n/** e.g. Painting, Drawing, Sculpture, Print, Photograph, Assemblage, Collage, etc. */\nexport const artform = /*#__PURE__*/ ns(\"artform\");\n/** The actual body of the article. */\nexport const articleBody = /*#__PURE__*/ ns(\"articleBody\");\n/** Articles may belong to one or more 'sections' in a magazine or newspaper, such as Sports, Lifestyle, etc. */\nexport const articleSection = /*#__PURE__*/ ns(\"articleSection\");\n/** Library file name e.g., mscorlib.dll, system.web.dll. */\nexport const assembly = /*#__PURE__*/ ns(\"assembly\");\n/** Associated product/technology version. e.g., .NET Framework 4.5. */\nexport const assemblyVersion = /*#__PURE__*/ ns(\"assemblyVersion\");\n/** A NewsArticle associated with the Media Object. */\nexport const associatedArticle = /*#__PURE__*/ ns(\"associatedArticle\");\n/** A media object that encodes this CreativeWork. This property is a synonym for encoding. */\nexport const associatedMedia = /*#__PURE__*/ ns(\"associatedMedia\");\n/** A person that acts as performing member of a sports team; a player as opposed to a coach. */\nexport const athlete = /*#__PURE__*/ ns(\"athlete\");\n/** A person attending the event. */\nexport const attendees = /*#__PURE__*/ ns(\"attendees\");\n/** The target group associated with a given audience (e.g. veterans, car owners, musicians, etc.). */\nexport const audienceType = /*#__PURE__*/ ns(\"audienceType\");\n/** An embedded audio object. */\nexport const audio = /*#__PURE__*/ ns(\"audio\");\n/** The Organization responsible for authenticating the user's subscription. For example, many media apps require a cable/satellite provider to authenticate your subscription before playing media. */\nexport const authenticator = /*#__PURE__*/ ns(\"authenticator\");\n/** The author of this content or rating. Please note that author is special in that HTML 5 provides a special mechanism for indicating authorship via the rel tag. That is equivalent to this and may be used interchangeably. */\nexport const author = /*#__PURE__*/ ns(\"author\");\n/** The availability of this item—for example In stock, Out of stock, Pre-order, etc. */\nexport const availability = /*#__PURE__*/ ns(\"availability\");\n/** The end of the availability of the product or service included in the offer. */\nexport const availabilityEnds = /*#__PURE__*/ ns(\"availabilityEnds\");\n/** The beginning of the availability of the product or service included in the offer. */\nexport const availabilityStarts = /*#__PURE__*/ ns(\"availabilityStarts\");\n/** The place(s) from which the offer can be obtained (e.g. store locations). */\nexport const availableAtOrFrom = /*#__PURE__*/ ns(\"availableAtOrFrom\");\n/** A means of accessing the service (e.g. a phone bank, a web site, a location, etc.). */\nexport const availableChannel = /*#__PURE__*/ ns(\"availableChannel\");\n/** The delivery method(s) available for this offer. */\nexport const availableDeliveryMethod = /*#__PURE__*/ ns(\"availableDeliveryMethod\");\n/** When the item is available for pickup from the store, locker, etc. */\nexport const availableFrom = /*#__PURE__*/ ns(\"availableFrom\");\n/** A language someone may use with or at the item, service or place. Please use one of the language codes from the IETF BCP 47 standard. See also inLanguage */\nexport const availableLanguage = /*#__PURE__*/ ns(\"availableLanguage\");\n/** After this date, the item will no longer be available for pickup. */\nexport const availableThrough = /*#__PURE__*/ ns(\"availableThrough\");\n/** Awards won by or for this item. */\nexport const awards = /*#__PURE__*/ ns(\"awards\");\n/** The away team in a sports event. */\nexport const awayTeam = /*#__PURE__*/ ns(\"awayTeam\");\n/** The base salary of the job or of an employee in an EmployeeRole. */\nexport const baseSalary = /*#__PURE__*/ ns(\"baseSalary\");\n/** A sub property of recipient. The recipient blind copied on a message. */\nexport const bccRecipient = /*#__PURE__*/ ns(\"bccRecipient\");\n/** The type of bed or beds included in the accommodation. For the single case of just one bed of a certain type, you use bed directly with a text.\n If you want to indicate the quantity of a certain kind of bed, use an instance of BedDetails. For more detailed information, use the amenityFeature property. */\nexport const bed = /*#__PURE__*/ ns(\"bed\");\n/** A media object representing the circumstances before performing this direction. */\nexport const beforeMedia = /*#__PURE__*/ ns(\"beforeMedia\");\n/** Description of benefits associated with the job. */\nexport const benefits = /*#__PURE__*/ ns(\"benefits\");\n/** The highest value allowed in this rating system. If bestRating is omitted, 5 is assumed. */\nexport const bestRating = /*#__PURE__*/ ns(\"bestRating\");\n/** The billing address for the order. */\nexport const billingAddress = /*#__PURE__*/ ns(\"billingAddress\");\n/** This property specifies the minimal quantity and rounding increment that will be the basis for the billing. The unit of measurement is specified by the unitCode property. */\nexport const billingIncrement = /*#__PURE__*/ ns(\"billingIncrement\");\n/** The time interval used to compute the invoice. */\nexport const billingPeriod = /*#__PURE__*/ ns(\"billingPeriod\");\n/** Date of birth. */\nexport const birthDate = /*#__PURE__*/ ns(\"birthDate\");\n/** The place where the person was born. */\nexport const birthPlace = /*#__PURE__*/ ns(\"birthPlace\");\n/** The bitrate of the media object. */\nexport const bitrate = /*#__PURE__*/ ns(\"bitrate\");\n/** The postings that are part of this blog. */\nexport const blogPosts = /*#__PURE__*/ ns(\"blogPosts\");\n/** The airline-specific indicator of boarding order / preference. */\nexport const boardingGroup = /*#__PURE__*/ ns(\"boardingGroup\");\n/** The type of boarding policy used by the airline (e.g. zone-based or group-based). */\nexport const boardingPolicy = /*#__PURE__*/ ns(\"boardingPolicy\");\n/** The edition of the book. */\nexport const bookEdition = /*#__PURE__*/ ns(\"bookEdition\");\n/** The format of the book. */\nexport const bookFormat = /*#__PURE__*/ ns(\"bookFormat\");\n/** 'bookingAgent' is an out-dated term indicating a 'broker' that serves as a booking agent. */\nexport const bookingAgent = /*#__PURE__*/ ns(\"bookingAgent\");\n/** The date and time the reservation was booked. */\nexport const bookingTime = /*#__PURE__*/ ns(\"bookingTime\");\n/** A sub property of participant. The person that borrows the object being lent. */\nexport const borrower = /*#__PURE__*/ ns(\"borrower\");\n/** A box is the area enclosed by the rectangle formed by two points. The first point is the lower corner, the second point is the upper corner. A box is expressed as two points separated by a space character. */\nexport const box = /*#__PURE__*/ ns(\"box\");\n/** A short textual code (also called \"store code\") that uniquely identifies a place of business. The code is typically assigned by the parentOrganization and used in structured URLs.

\n\nFor example, in the URL http://www.starbucks.co.uk/store-locator/etc/detail/3047 the code \"3047\" is a branchCode for a particular branch. */\nexport const branchCode = /*#__PURE__*/ ns(\"branchCode\");\n/** The larger organization that this local business is a branch of, if any. Not to be confused with (anatomical)branch. */\nexport const branchOf = /*#__PURE__*/ ns(\"branchOf\");\n/** The brand(s) associated with a product or service, or the brand(s) maintained by an organization or business person. */\nexport const brand = /*#__PURE__*/ ns(\"brand\");\n/** A set of links that can help a user understand and navigate a website hierarchy. */\nexport const breadcrumb = /*#__PURE__*/ ns(\"breadcrumb\");\n/** The media network(s) whose content is broadcast on this station. */\nexport const broadcastAffiliateOf = /*#__PURE__*/ ns(\"broadcastAffiliateOf\");\n/** The unique address by which the BroadcastService can be identified in a provider lineup. In US, this is typically a number. */\nexport const broadcastChannelId = /*#__PURE__*/ ns(\"broadcastChannelId\");\n/** The name displayed in the channel guide. For many US affiliates, it is the network name. */\nexport const broadcastDisplayName = /*#__PURE__*/ ns(\"broadcastDisplayName\");\n/** The frequency used for over-the-air broadcasts. Numeric values or simple ranges e.g. 87-99. In addition a shortcut idiom is supported for frequences of AM and FM radio channels, e.g. \"87 FM\". */\nexport const broadcastFrequency = /*#__PURE__*/ ns(\"broadcastFrequency\");\n/** The frequency in MHz for a particular broadcast. */\nexport const broadcastFrequencyValue = /*#__PURE__*/ ns(\"broadcastFrequencyValue\");\n/** The event being broadcast such as a sporting event or awards ceremony. */\nexport const broadcastOfEvent = /*#__PURE__*/ ns(\"broadcastOfEvent\");\n/** The type of service required to have access to the channel (e.g. Standard or Premium). */\nexport const broadcastServiceTier = /*#__PURE__*/ ns(\"broadcastServiceTier\");\n/** The timezone in ISO 8601 format for which the service bases its broadcasts */\nexport const broadcastTimezone = /*#__PURE__*/ ns(\"broadcastTimezone\");\n/** The organization owning or operating the broadcast service. */\nexport const broadcaster = /*#__PURE__*/ ns(\"broadcaster\");\n/** Specifies browser requirements in human-readable text. For example, 'requires HTML5 support'. */\nexport const browserRequirements = /*#__PURE__*/ ns(\"browserRequirements\");\n/** The name of the bus (e.g. Bolt Express). */\nexport const busName = /*#__PURE__*/ ns(\"busName\");\n/** The unique identifier for the bus. */\nexport const busNumber = /*#__PURE__*/ ns(\"busNumber\");\n/** The business function (e.g. sell, lease, repair, dispose) of the offer or component of a bundle (TypeAndQuantityNode). The default is http://purl.org/goodrelations/v1#Sell. */\nexport const businessFunction = /*#__PURE__*/ ns(\"businessFunction\");\n/** A sub property of participant. The participant/person/organization that bought the object. */\nexport const buyer = /*#__PURE__*/ ns(\"buyer\");\n/** The artist that performed this album or recording. */\nexport const byArtist = /*#__PURE__*/ ns(\"byArtist\");\n/** The number of calories. */\nexport const calories = /*#__PURE__*/ ns(\"calories\");\n/** A sub property of object. The candidate subject of this action. */\nexport const candidate = /*#__PURE__*/ ns(\"candidate\");\n/** The caption for this object. For downloadable machine formats (closed caption, subtitles etc.) use MediaObject and indicate the encodingFormat. */\nexport const caption = /*#__PURE__*/ ns(\"caption\");\n/** The number of grams of carbohydrates. */\nexport const carbohydrateContent = /*#__PURE__*/ ns(\"carbohydrateContent\");\n/** The available volume for cargo or luggage. For automobiles, this is usually the trunk volume.

\n\nTypical unit code(s): LTR for liters, FTQ for cubic foot/feet

\n\nNote: You can use minValue and maxValue to indicate ranges. */\nexport const cargoVolume = /*#__PURE__*/ ns(\"cargoVolume\");\n/** 'carrier' is an out-dated term indicating the 'provider' for parcel delivery and flights. */\nexport const carrier = /*#__PURE__*/ ns(\"carrier\");\n/** Specifies specific carrier(s) requirements for the application (e.g. an application may only work on a specific carrier network). */\nexport const carrierRequirements = /*#__PURE__*/ ns(\"carrierRequirements\");\n/** A data catalog which contains this dataset. */\nexport const catalog = /*#__PURE__*/ ns(\"catalog\");\n/** The catalog number for the release. */\nexport const catalogNumber = /*#__PURE__*/ ns(\"catalogNumber\");\n/** A category for the item. Greater signs or slashes can be used to informally indicate a category hierarchy. */\nexport const category = /*#__PURE__*/ ns(\"category\");\n/** A sub property of recipient. The recipient copied on a message. */\nexport const ccRecipient = /*#__PURE__*/ ns(\"ccRecipient\");\n/** Fictional person connected with a creative work. */\nexport const character = /*#__PURE__*/ ns(\"character\");\n/** A piece of data that represents a particular aspect of a fictional character (skill, power, character points, advantage, disadvantage). */\nexport const characterAttribute = /*#__PURE__*/ ns(\"characterAttribute\");\n/** The name of a character played in some acting or performing role, i.e. in a PerformanceRole. */\nexport const characterName = /*#__PURE__*/ ns(\"characterName\");\n/** Cheat codes to the game. */\nexport const cheatCode = /*#__PURE__*/ ns(\"cheatCode\");\n/** The earliest someone may check into a lodging establishment. */\nexport const checkinTime = /*#__PURE__*/ ns(\"checkinTime\");\n/** The latest someone may check out of a lodging establishment. */\nexport const checkoutTime = /*#__PURE__*/ ns(\"checkoutTime\");\n/** Maximal age of the child. */\nexport const childMaxAge = /*#__PURE__*/ ns(\"childMaxAge\");\n/** Minimal age of the child. */\nexport const childMinAge = /*#__PURE__*/ ns(\"childMinAge\");\n/** A child of the person. */\nexport const children = /*#__PURE__*/ ns(\"children\");\n/** The number of milligrams of cholesterol. */\nexport const cholesterolContent = /*#__PURE__*/ ns(\"cholesterolContent\");\n/** A circle is the circular region of a specified radius centered at a specified latitude and longitude. A circle is expressed as a pair followed by a radius in meters. */\nexport const circle = /*#__PURE__*/ ns(\"circle\");\n/** A citation or reference to another creative work, such as another publication, web page, scholarly article, etc. */\nexport const citation = /*#__PURE__*/ ns(\"citation\");\n/** A short summary of the specific claims reviewed in a ClaimReview. */\nexport const claimReviewed = /*#__PURE__*/ ns(\"claimReviewed\");\n/** Position of the clip within an ordered group of clips. */\nexport const clipNumber = /*#__PURE__*/ ns(\"clipNumber\");\n/** The closing hour of the place or service on the given day(s) of the week. */\nexport const closes = /*#__PURE__*/ ns(\"closes\");\n/** A person that acts in a coaching role for a sports team. */\nexport const coach = /*#__PURE__*/ ns(\"coach\");\n/** Link to the repository where the un-compiled, human readable code and related code is located (SVN, github, CodePlex). */\nexport const codeRepository = /*#__PURE__*/ ns(\"codeRepository\");\n/** A colleague of the person. */\nexport const colleagues = /*#__PURE__*/ ns(\"colleagues\");\n/** A sub property of object. The collection target of the action. */\nexport const collection = /*#__PURE__*/ ns(\"collection\");\n/** The color of the product. */\nexport const color = /*#__PURE__*/ ns(\"color\");\n/** Comments, typically from users. */\nexport const comment = /*#__PURE__*/ ns(\"comment\");\n/** The number of comments this CreativeWork (e.g. Article, Question or Answer) has received. This is most applicable to works published in Web sites with commenting system; additional comments may exist elsewhere. */\nexport const commentCount = /*#__PURE__*/ ns(\"commentCount\");\n/** The text of the UserComment. */\nexport const commentText = /*#__PURE__*/ ns(\"commentText\");\n/** The time at which the UserComment was made. */\nexport const commentTime = /*#__PURE__*/ ns(\"commentTime\");\n/** The person or organization who wrote a composition, or who is the composer of a work performed at some event. */\nexport const composer = /*#__PURE__*/ ns(\"composer\");\n/** A number that confirms the given order or payment has been received. */\nexport const confirmationNumber = /*#__PURE__*/ ns(\"confirmationNumber\");\n/** An option available on this contact point (e.g. a toll-free number or support for hearing-impaired callers). */\nexport const contactOption = /*#__PURE__*/ ns(\"contactOption\");\n/** A contact point for a person or organization. */\nexport const contactPoints = /*#__PURE__*/ ns(\"contactPoints\");\n/** A person or organization can have different contact points, for different purposes. For example, a sales contact point, a PR contact point and so on. This property is used to specify the kind of contact point. */\nexport const contactType = /*#__PURE__*/ ns(\"contactType\");\n/** The basic containment relation between a place and one that contains it. */\nexport const containedIn = /*#__PURE__*/ ns(\"containedIn\");\n/** Official rating of a piece of content—for example,'MPAA PG-13'. */\nexport const contentRating = /*#__PURE__*/ ns(\"contentRating\");\n/** File size in (mega/kilo) bytes. */\nexport const contentSize = /*#__PURE__*/ ns(\"contentSize\");\n/** The supported content type(s) for an EntryPoint response. */\nexport const contentType = /*#__PURE__*/ ns(\"contentType\");\n/** Actual bytes of the media object, for example the image file or video file. */\nexport const contentUrl = /*#__PURE__*/ ns(\"contentUrl\");\n/** A secondary contributor to the CreativeWork or Event. */\nexport const contributor = /*#__PURE__*/ ns(\"contributor\");\n/** The time it takes to actually cook the dish, in ISO 8601 duration format. */\nexport const cookTime = /*#__PURE__*/ ns(\"cookTime\");\n/** The method of cooking, such as Frying, Steaming, ... */\nexport const cookingMethod = /*#__PURE__*/ ns(\"cookingMethod\");\n/** The party holding the legal copyright to the CreativeWork. */\nexport const copyrightHolder = /*#__PURE__*/ ns(\"copyrightHolder\");\n/** The year during which the claimed copyright for the CreativeWork was first asserted. */\nexport const copyrightYear = /*#__PURE__*/ ns(\"copyrightYear\");\n/** Countries for which the application is not supported. You can also provide the two-letter ISO 3166-1 alpha-2 country code. */\nexport const countriesNotSupported = /*#__PURE__*/ ns(\"countriesNotSupported\");\n/** Countries for which the application is supported. You can also provide the two-letter ISO 3166-1 alpha-2 country code. */\nexport const countriesSupported = /*#__PURE__*/ ns(\"countriesSupported\");\n/** The country of the principal offices of the production company or individual responsible for the movie or program. */\nexport const countryOfOrigin = /*#__PURE__*/ ns(\"countryOfOrigin\");\n/** A sub property of location. The course where this action was taken. */\nexport const course = /*#__PURE__*/ ns(\"course\");\n/** The identifier for the Course used by the course provider (e.g. CS101 or 6.001). */\nexport const courseCode = /*#__PURE__*/ ns(\"courseCode\");\n/** The medium or means of delivery of the course instance or the mode of study, either as a text label (e.g. \"online\", \"onsite\" or \"blended\"; \"synchronous\" or \"asynchronous\"; \"full-time\" or \"part-time\") or as a URL reference to a term from a controlled vocabulary (e.g. https://ceds.ed.gov/element/001311#Asynchronous ). */\nexport const courseMode = /*#__PURE__*/ ns(\"courseMode\");\n/** Requirements for taking the Course. May be completion of another Course or a textual description like \"permission of instructor\". Requirements may be a pre-requisite competency, referenced using AlignmentObject. */\nexport const coursePrerequisites = /*#__PURE__*/ ns(\"coursePrerequisites\");\n/** The time when the live blog will stop covering the Event. Note that coverage may continue after the Event concludes. */\nexport const coverageEndTime = /*#__PURE__*/ ns(\"coverageEndTime\");\n/** The time when the live blog will begin covering the Event. Note that coverage may begin before the Event's start time. The LiveBlogPosting may also be created before coverage begins. */\nexport const coverageStartTime = /*#__PURE__*/ ns(\"coverageStartTime\");\n/** The creator/author of this CreativeWork. This is the same as the Author property for CreativeWork. */\nexport const creator = /*#__PURE__*/ ns(\"creator\");\n/** The group the release is credited to if different than the byArtist. For example, Red and Blue is credited to \"Stefani Germanotta Band\", but by Lady Gaga. */\nexport const creditedTo = /*#__PURE__*/ ns(\"creditedTo\");\n/** A CSS selector, e.g. of a SpeakableSpecification or WebPageElement. In the latter case, multiple matches within a page can constitute a single conceptual \"Web page element\". */\nexport const cssSelector = /*#__PURE__*/ ns(\"cssSelector\");\n/** The currency accepted.

\n\nUse standard formats: ISO 4217 currency format e.g. \"USD\"; Ticker symbol for cryptocurrencies e.g. \"BTC\"; well known names for Local Exchange Tradings Systems (LETS) and other currency types e.g. \"Ithaca HOUR\". */\nexport const currenciesAccepted = /*#__PURE__*/ ns(\"currenciesAccepted\");\n/** The currency in which the monetary amount is expressed.

\n\nUse standard formats: ISO 4217 currency format e.g. \"USD\"; Ticker symbol for cryptocurrencies e.g. \"BTC\"; well known names for Local Exchange Tradings Systems (LETS) and other currency types e.g. \"Ithaca HOUR\". */\nexport const currency = /*#__PURE__*/ ns(\"currency\");\n/** Party placing the order or paying the invoice. */\nexport const customer = /*#__PURE__*/ ns(\"customer\");\n/** An item within in a data feed. Data feeds may have many elements. */\nexport const dataFeedElement = /*#__PURE__*/ ns(\"dataFeedElement\");\n/** The range of temporal applicability of a dataset, e.g. for a 2011 census dataset, the year 2011 (in ISO 8601 time interval format). */\nexport const datasetTimeInterval = /*#__PURE__*/ ns(\"datasetTimeInterval\");\n/** The date on which the CreativeWork was created or the item was added to a DataFeed. */\nexport const dateCreated = /*#__PURE__*/ ns(\"dateCreated\");\n/** The datetime the item was removed from the DataFeed. */\nexport const dateDeleted = /*#__PURE__*/ ns(\"dateDeleted\");\n/** The date the ticket was issued. */\nexport const dateIssued = /*#__PURE__*/ ns(\"dateIssued\");\n/** The date on which the CreativeWork was most recently modified or when the item's entry was modified within a DataFeed. */\nexport const dateModified = /*#__PURE__*/ ns(\"dateModified\");\n/** Publication date for the job posting. */\nexport const datePosted = /*#__PURE__*/ ns(\"datePosted\");\n/** Date of first broadcast/publication. */\nexport const datePublished = /*#__PURE__*/ ns(\"datePublished\");\n/** The date/time at which the message has been read by the recipient if a single recipient exists. */\nexport const dateRead = /*#__PURE__*/ ns(\"dateRead\");\n/** The date/time the message was received if a single recipient exists. */\nexport const dateReceived = /*#__PURE__*/ ns(\"dateReceived\");\n/** The date/time at which the message was sent. */\nexport const dateSent = /*#__PURE__*/ ns(\"dateSent\");\n/** The date of the first registration of the vehicle with the respective public authorities. */\nexport const dateVehicleFirstRegistered = /*#__PURE__*/ ns(\"dateVehicleFirstRegistered\");\n/** A dateline is a brief piece of text included in news articles that describes where and when the story was written or filed though the date is often omitted. Sometimes only a placename is provided.

\n\nStructured representations of dateline-related information can also be expressed more explicitly using locationCreated (which represents where a work was created e.g. where a news report was written). For location depicted or described in the content, use contentLocation.

\n\nDateline summaries are oriented more towards human readers than towards automated processing, and can vary substantially. Some examples: \"BEIRUT, Lebanon, June 2.\", \"Paris, France\", \"December 19, 2017 11:43AM Reporting from Washington\", \"Beijing/Moscow\", \"QUEZON CITY, Philippines\". */\nexport const dateline = /*#__PURE__*/ ns(\"dateline\");\n/** The day of the week for which these opening hours are valid. */\nexport const dayOfWeek = /*#__PURE__*/ ns(\"dayOfWeek\");\n/** Date of death. */\nexport const deathDate = /*#__PURE__*/ ns(\"deathDate\");\n/** The place where the person died. */\nexport const deathPlace = /*#__PURE__*/ ns(\"deathPlace\");\n/** The default value of the input. For properties that expect a literal, the default is a literal value, for properties that expect an object, it's an ID reference to one of the current values. */\nexport const defaultValue = /*#__PURE__*/ ns(\"defaultValue\");\n/** Destination address. */\nexport const deliveryAddress = /*#__PURE__*/ ns(\"deliveryAddress\");\n/** The typical delay between the receipt of the order and the goods either leaving the warehouse or being prepared for pickup, in case the delivery method is on site pickup. */\nexport const deliveryLeadTime = /*#__PURE__*/ ns(\"deliveryLeadTime\");\n/** A sub property of instrument. The method of delivery. */\nexport const deliveryMethod = /*#__PURE__*/ ns(\"deliveryMethod\");\n/** New entry added as the package passes through each leg of its journey (from shipment to final delivery). */\nexport const deliveryStatus = /*#__PURE__*/ ns(\"deliveryStatus\");\n/** A relationship between an organization and a department of that organization, also described as an organization (allowing different urls, logos, opening hours). For example: a store with a pharmacy, or a bakery with a cafe. */\nexport const department = /*#__PURE__*/ ns(\"department\");\n/** The airport where the flight originates. */\nexport const departureAirport = /*#__PURE__*/ ns(\"departureAirport\");\n/** The stop or station from which the bus departs. */\nexport const departureBusStop = /*#__PURE__*/ ns(\"departureBusStop\");\n/** Identifier of the flight's departure gate. */\nexport const departureGate = /*#__PURE__*/ ns(\"departureGate\");\n/** The platform from which the train departs. */\nexport const departurePlatform = /*#__PURE__*/ ns(\"departurePlatform\");\n/** The station from which the train departs. */\nexport const departureStation = /*#__PURE__*/ ns(\"departureStation\");\n/** Identifier of the flight's departure terminal. */\nexport const departureTerminal = /*#__PURE__*/ ns(\"departureTerminal\");\n/** The expected departure time. */\nexport const departureTime = /*#__PURE__*/ ns(\"departureTime\");\n/** Prerequisites needed to fulfill steps in article. */\nexport const dependencies = /*#__PURE__*/ ns(\"dependencies\");\n/** The depth of the item. */\nexport const depth = /*#__PURE__*/ ns(\"depth\");\n/** Device required to run the application. Used in cases where a specific make/model is required to run the application. */\nexport const device = /*#__PURE__*/ ns(\"device\");\n/** A director of e.g. tv, radio, movie, video games etc. content. Directors can be associated with individual items or with a series, episode, clip. */\nexport const directors = /*#__PURE__*/ ns(\"directors\");\n/** A sub property of description. A short description of the item used to disambiguate from other, similar items. Information from other properties (in particular, name) may be necessary for the description to be useful for disambiguation. */\nexport const disambiguatingDescription = /*#__PURE__*/ ns(\"disambiguatingDescription\");\n/** Any discount applied (to an Order). */\nexport const discount = /*#__PURE__*/ ns(\"discount\");\n/** Code used to redeem a discount. */\nexport const discountCode = /*#__PURE__*/ ns(\"discountCode\");\n/** The currency of the discount.

\n\nUse standard formats: ISO 4217 currency format e.g. \"USD\"; Ticker symbol for cryptocurrencies e.g. \"BTC\"; well known names for Local Exchange Tradings Systems (LETS) and other currency types e.g. \"Ithaca HOUR\". */\nexport const discountCurrency = /*#__PURE__*/ ns(\"discountCurrency\");\n/** Specifies the CreativeWork associated with the UserComment. */\nexport const discusses = /*#__PURE__*/ ns(\"discusses\");\n/** A link to the page containing the comments of the CreativeWork. */\nexport const discussionUrl = /*#__PURE__*/ ns(\"discussionUrl\");\n/** The date that this organization was dissolved. */\nexport const dissolutionDate = /*#__PURE__*/ ns(\"dissolutionDate\");\n/** The distance travelled, e.g. exercising or travelling. */\nexport const distance = /*#__PURE__*/ ns(\"distance\");\n/** A downloadable form of this dataset, at a specific location, in a specific format. */\nexport const distribution = /*#__PURE__*/ ns(\"distribution\");\n/** The time admission will commence. */\nexport const doorTime = /*#__PURE__*/ ns(\"doorTime\");\n/** If the file can be downloaded, URL to download the binary. */\nexport const downloadUrl = /*#__PURE__*/ ns(\"downloadUrl\");\n/** The number of downvotes this question, answer or comment has received from the community. */\nexport const downvoteCount = /*#__PURE__*/ ns(\"downvoteCount\");\n/** The drive wheel configuration, i.e. which roadwheels will receive torque from the vehicle's engine via the drivetrain. */\nexport const driveWheelConfiguration = /*#__PURE__*/ ns(\"driveWheelConfiguration\");\n/** Where a rental car can be dropped off. */\nexport const dropoffLocation = /*#__PURE__*/ ns(\"dropoffLocation\");\n/** When a rental car can be dropped off. */\nexport const dropoffTime = /*#__PURE__*/ ns(\"dropoffTime\");\n/** The Dun & Bradstreet DUNS number for identifying an organization or business person. */\nexport const duns = /*#__PURE__*/ ns(\"duns\");\n/** The duration of the warranty promise. Common unitCode values are ANN for year, MON for months, or DAY for days. */\nexport const durationOfWarranty = /*#__PURE__*/ ns(\"durationOfWarranty\");\n/** A media object representing the circumstances while performing this direction. */\nexport const duringMedia = /*#__PURE__*/ ns(\"duringMedia\");\n/** Specifies the Person who edited the CreativeWork. */\nexport const editor = /*#__PURE__*/ ns(\"editor\");\n/** An alignment to an established educational framework. */\nexport const educationalAlignment = /*#__PURE__*/ ns(\"educationalAlignment\");\n/** A description of the qualification, award, certificate, diploma or other educational credential awarded as a consequence of successful completion of this course or program. */\nexport const educationalCredentialAwarded = /*#__PURE__*/ ns(\"educationalCredentialAwarded\");\n/** The framework to which the resource being described is aligned. */\nexport const educationalFramework = /*#__PURE__*/ ns(\"educationalFramework\");\n/** An educationalRole of an EducationalAudience. */\nexport const educationalRole = /*#__PURE__*/ ns(\"educationalRole\");\n/** The purpose of a work in the context of education; for example, 'assignment', 'group work'. */\nexport const educationalUse = /*#__PURE__*/ ns(\"educationalUse\");\n/** The elevation of a location (WGS 84). Values may be of the form 'NUMBER UNITOFMEASUREMENT' (e.g., '1,000 m', '3,200 ft') while numbers alone should be assumed to be a value in meters. */\nexport const elevation = /*#__PURE__*/ ns(\"elevation\");\n/** The type(s) of customers for which the given offer is valid. */\nexport const eligibleCustomerType = /*#__PURE__*/ ns(\"eligibleCustomerType\");\n/** The duration for which the given offer is valid. */\nexport const eligibleDuration = /*#__PURE__*/ ns(\"eligibleDuration\");\n/** The interval and unit of measurement of ordering quantities for which the offer or price specification is valid. This allows e.g. specifying that a certain freight charge is valid only for a certain quantity. */\nexport const eligibleQuantity = /*#__PURE__*/ ns(\"eligibleQuantity\");\n/** The ISO 3166-1 (ISO 3166-1 alpha-2) or ISO 3166-2 code, the place, or the GeoShape for the geo-political region(s) for which the offer or delivery charge specification is valid.

\n\nSee also ineligibleRegion. */\nexport const eligibleRegion = /*#__PURE__*/ ns(\"eligibleRegion\");\n/** The transaction volume, in a monetary unit, for which the offer or price specification is valid, e.g. for indicating a minimal purchasing volume, to express free shipping above a certain order volume, or to limit the acceptance of credit cards to purchases to a certain minimal amount. */\nexport const eligibleTransactionVolume = /*#__PURE__*/ ns(\"eligibleTransactionVolume\");\n/** Email address. */\nexport const email = /*#__PURE__*/ ns(\"email\");\n/** A URL pointing to a player for a specific video. In general, this is the information in the src element of an embed tag and should not be the same as the content of the loc tag. */\nexport const embedUrl = /*#__PURE__*/ ns(\"embedUrl\");\n/** People working for this organization. */\nexport const employees = /*#__PURE__*/ ns(\"employees\");\n/** Type of employment (e.g. full-time, part-time, contract, temporary, seasonal, internship). */\nexport const employmentType = /*#__PURE__*/ ns(\"employmentType\");\n/** The supported encoding type(s) for an EntryPoint request. */\nexport const encodingType = /*#__PURE__*/ ns(\"encodingType\");\n/** A media object that encodes this CreativeWork. */\nexport const encodings = /*#__PURE__*/ ns(\"encodings\");\n/** The end date and time of the item (in ISO 8601 date format). */\nexport const endDate = /*#__PURE__*/ ns(\"endDate\");\n/** The endTime of something. For a reserved event or service (e.g. FoodEstablishmentReservation), the time that it is expected to end. For actions that span a period of time, when the action was performed. e.g. John wrote a book from January to December. For media, including audio and video, it's the time offset of the end of a clip within a larger file.

\n\nNote that Event uses startDate/endDate instead of startTime/endTime, even when describing dates with times. This situation may be clarified in future revisions. */\nexport const endTime = /*#__PURE__*/ ns(\"endTime\");\n/** A sub property of participant. The person/organization being supported. */\nexport const endorsee = /*#__PURE__*/ ns(\"endorsee\");\n/** A sub property of location. The entertainment business where the action occurred. */\nexport const entertainmentBusiness = /*#__PURE__*/ ns(\"entertainmentBusiness\");\n/** Position of the episode within an ordered group of episodes. */\nexport const episodeNumber = /*#__PURE__*/ ns(\"episodeNumber\");\n/** An episode of a TV/radio series or season. */\nexport const episodes = /*#__PURE__*/ ns(\"episodes\");\n/** This ordering relation for qualitative values indicates that the subject is equal to the object. */\nexport const equal = /*#__PURE__*/ ns(\"equal\");\n/** For failed actions, more information on the cause of the failure. */\nexport const error = /*#__PURE__*/ ns(\"error\");\n/** The estimated cost of the supply or supplies consumed when performing instructions. */\nexport const estimatedCost = /*#__PURE__*/ ns(\"estimatedCost\");\n/** The estimated time the flight will take. */\nexport const estimatedFlightDuration = /*#__PURE__*/ ns(\"estimatedFlightDuration\");\n/** An estimated salary for a job posting or occupation, based on a variety of variables including, but not limited to industry, job title, and location. Estimated salaries are often computed by outside organizations rather than the hiring organization, who may not have committed to the estimated value. */\nexport const estimatedSalary = /*#__PURE__*/ ns(\"estimatedSalary\");\n/** An eventStatus of an event represents its status; particularly useful when an event is cancelled or rescheduled. */\nexport const eventStatus = /*#__PURE__*/ ns(\"eventStatus\");\n/** Upcoming or past events associated with this place or organization. */\nexport const events = /*#__PURE__*/ ns(\"events\");\n/** exif data for this object. */\nexport const exifData = /*#__PURE__*/ ns(\"exifData\");\n/** The earliest date the package may arrive. */\nexport const expectedArrivalFrom = /*#__PURE__*/ ns(\"expectedArrivalFrom\");\n/** The latest date the package may arrive. */\nexport const expectedArrivalUntil = /*#__PURE__*/ ns(\"expectedArrivalUntil\");\n/** An Offer which must be accepted before the user can perform the Action. For example, the user may need to buy a movie before being able to watch it. */\nexport const expectsAcceptanceOf = /*#__PURE__*/ ns(\"expectsAcceptanceOf\");\n/** Description of skills and experience needed for the position or Occupation. */\nexport const experienceRequirements = /*#__PURE__*/ ns(\"experienceRequirements\");\n/** Date the content expires and is no longer useful or available. For example a VideoObject or NewsArticle whose availability or relevance is time-limited, or a ClaimReview fact check whose publisher wants to indicate that it may no longer be relevant (or helpful to highlight) after some date. */\nexport const expires = /*#__PURE__*/ ns(\"expires\");\n/** Family name. In the U.S., the last name of an Person. This can be used along with givenName instead of the name property. */\nexport const familyName = /*#__PURE__*/ ns(\"familyName\");\n/** The number of grams of fat. */\nexport const fatContent = /*#__PURE__*/ ns(\"fatContent\");\n/** The fax number. */\nexport const faxNumber = /*#__PURE__*/ ns(\"faxNumber\");\n/** Features or modules provided by this application (and possibly required by other applications). */\nexport const featureList = /*#__PURE__*/ ns(\"featureList\");\n/** Description of fees, commissions, and other terms applied either to a class of financial product, or by a financial service organization. */\nexport const feesAndCommissionsSpecification = /*#__PURE__*/ ns(\"feesAndCommissionsSpecification\");\n/** The number of grams of fiber. */\nexport const fiberContent = /*#__PURE__*/ ns(\"fiberContent\");\n/** Media type, typically MIME format (see IANA site) of the content e.g. application/zip of a SoftwareApplication binary. In cases where a CreativeWork has several media type representations, 'encoding' can be used to indicate each MediaObject alongside particular fileFormat information. Unregistered or niche file formats can be indicated instead via the most appropriate URL, e.g. defining Web page or a Wikipedia entry. */\nexport const fileFormat = /*#__PURE__*/ ns(\"fileFormat\");\n/** Size of the application / package (e.g. 18MB). In the absence of a unit (MB, KB etc.), KB will be assumed. */\nexport const fileSize = /*#__PURE__*/ ns(\"fileSize\");\n/** The date and place the work was first performed. */\nexport const firstPerformance = /*#__PURE__*/ ns(\"firstPerformance\");\n/** The distance of the flight. */\nexport const flightDistance = /*#__PURE__*/ ns(\"flightDistance\");\n/** The unique identifier for a flight including the airline IATA code. For example, if describing United flight 110, where the IATA code for United is 'UA', the flightNumber is 'UA110'. */\nexport const flightNumber = /*#__PURE__*/ ns(\"flightNumber\");\n/** The size of the accommodation, e.g. in square meter or squarefoot.\nTypical unit code(s): MTK for square meter, FTK for square foot, or YDK for square yard */\nexport const floorSize = /*#__PURE__*/ ns(\"floorSize\");\n/** A sub property of object. The person or organization being followed. */\nexport const followee = /*#__PURE__*/ ns(\"followee\");\n/** The most generic uni-directional social relation. */\nexport const follows = /*#__PURE__*/ ns(\"follows\");\n/** A sub property of location. The specific food establishment where the action occurred. */\nexport const foodEstablishment = /*#__PURE__*/ ns(\"foodEstablishment\");\n/** A sub property of location. The specific food event where the action occurred. */\nexport const foodEvent = /*#__PURE__*/ ns(\"foodEvent\");\n/** A person who founded this organization. */\nexport const founders = /*#__PURE__*/ ns(\"founders\");\n/** The date that this organization was founded. */\nexport const foundingDate = /*#__PURE__*/ ns(\"foundingDate\");\n/** The place where the Organization was founded. */\nexport const foundingLocation = /*#__PURE__*/ ns(\"foundingLocation\");\n/** A flag to signal that the item, event, or place is accessible for free. */\nexport const free = /*#__PURE__*/ ns(\"free\");\n/** A sub property of location. The original location of the object or the agent before the action. */\nexport const fromLocation = /*#__PURE__*/ ns(\"fromLocation\");\n/** The amount of fuel consumed for traveling a particular distance or temporal duration with the given vehicle (e.g. liters per 100 km).

\n\n
    \n
  • Note 1: There are unfortunately no standard unit codes for liters per 100 km. Use unitText to indicate the unit of measurement, e.g. L/100 km.
  • \n
  • Note 2: There are two ways of indicating the fuel consumption, fuelConsumption (e.g. 8 liters per 100 km) and fuelEfficiency (e.g. 30 miles per gallon). They are reciprocal.
  • \n
  • Note 3: Often, the absolute value is useful only when related to driving speed (\"at 80 km/h\") or usage pattern (\"city traffic\"). You can use valueReference to link the value for the fuel consumption to another value.
  • \n
\n */\nexport const fuelConsumption = /*#__PURE__*/ ns(\"fuelConsumption\");\n/** The distance traveled per unit of fuel used; most commonly miles per gallon (mpg) or kilometers per liter (km/L).

\n\n
    \n
  • Note 1: There are unfortunately no standard unit codes for miles per gallon or kilometers per liter. Use unitText to indicate the unit of measurement, e.g. mpg or km/L.
  • \n
  • Note 2: There are two ways of indicating the fuel consumption, fuelConsumption (e.g. 8 liters per 100 km) and fuelEfficiency (e.g. 30 miles per gallon). They are reciprocal.
  • \n
  • Note 3: Often, the absolute value is useful only when related to driving speed (\"at 80 km/h\") or usage pattern (\"city traffic\"). You can use valueReference to link the value for the fuel economy to another value.
  • \n
\n */\nexport const fuelEfficiency = /*#__PURE__*/ ns(\"fuelEfficiency\");\n/** The type of fuel suitable for the engine or engines of the vehicle. If the vehicle has only one engine, this property can be attached directly to the vehicle. */\nexport const fuelType = /*#__PURE__*/ ns(\"fuelType\");\n/** A person or organization that supports (sponsors) something through some kind of financial contribution. */\nexport const funder = /*#__PURE__*/ ns(\"funder\");\n/** An item is an object within the game world that can be collected by a player or, occasionally, a non-player character. */\nexport const gameItem = /*#__PURE__*/ ns(\"gameItem\");\n/** Real or fictional location of the game (or part of game). */\nexport const gameLocation = /*#__PURE__*/ ns(\"gameLocation\");\n/** The electronic systems used to play video games. */\nexport const gamePlatform = /*#__PURE__*/ ns(\"gamePlatform\");\n/** Links to tips, tactics, etc. */\nexport const gameTip = /*#__PURE__*/ ns(\"gameTip\");\n/** Gender of the person. While http://schema.org/Male and http://schema.org/Female may be used, text strings are also acceptable for people who do not identify as a binary gender. */\nexport const gender = /*#__PURE__*/ ns(\"gender\");\n/** Genre of the creative work, broadcast channel or group. */\nexport const genre = /*#__PURE__*/ ns(\"genre\");\n/** The geo coordinates of the place. */\nexport const geo = /*#__PURE__*/ ns(\"geo\");\n/** Represents a relationship between two geometries (or the places they represent), relating a containing geometry to a contained geometry. \"a contains b iff no points of b lie in the exterior of a, and at least one point of the interior of b lies in the interior of a\". As defined in DE-9IM. */\nexport const geoContains = /*#__PURE__*/ ns(\"geoContains\");\n/** Represents a relationship between two geometries (or the places they represent), relating a geometry to another that covers it. As defined in DE-9IM. */\nexport const geoCoveredBy = /*#__PURE__*/ ns(\"geoCoveredBy\");\n/** Represents a relationship between two geometries (or the places they represent), relating a covering geometry to a covered geometry. \"Every point of b is a point of (the interior or boundary of) a\". As defined in DE-9IM. */\nexport const geoCovers = /*#__PURE__*/ ns(\"geoCovers\");\n/** Represents a relationship between two geometries (or the places they represent), relating a geometry to another that crosses it: \"a crosses b: they have some but not all interior points in common, and the dimension of the intersection is less than that of at least one of them\". As defined in DE-9IM. */\nexport const geoCrosses = /*#__PURE__*/ ns(\"geoCrosses\");\n/** Represents spatial relations in which two geometries (or the places they represent) are topologically disjoint: they have no point in common. They form a set of disconnected geometries.\" (a symmetric relationship, as defined in DE-9IM) */\nexport const geoDisjoint = /*#__PURE__*/ ns(\"geoDisjoint\");\n/** Represents spatial relations in which two geometries (or the places they represent) are topologically equal, as defined in DE-9IM. \"Two geometries are topologically equal if their interiors intersect and no part of the interior or boundary of one geometry intersects the exterior of the other\" (a symmetric relationship) */\nexport const geoEquals = /*#__PURE__*/ ns(\"geoEquals\");\n/** Represents spatial relations in which two geometries (or the places they represent) have at least one point in common. As defined in DE-9IM. */\nexport const geoIntersects = /*#__PURE__*/ ns(\"geoIntersects\");\n/** Indicates the GeoCoordinates at the centre of a GeoShape e.g. GeoCircle. */\nexport const geoMidpoint = /*#__PURE__*/ ns(\"geoMidpoint\");\n/** Represents a relationship between two geometries (or the places they represent), relating a geometry to another that geospatially overlaps it, i.e. they have some but not all points in common. As defined in DE-9IM. */\nexport const geoOverlaps = /*#__PURE__*/ ns(\"geoOverlaps\");\n/** Indicates the approximate radius of a GeoCircle (metres unless indicated otherwise via Distance notation). */\nexport const geoRadius = /*#__PURE__*/ ns(\"geoRadius\");\n/** Represents spatial relations in which two geometries (or the places they represent) touch: they have at least one boundary point in common, but no interior points.\" (a symmetric relationship, as defined in DE-9IM ) */\nexport const geoTouches = /*#__PURE__*/ ns(\"geoTouches\");\n/** Represents a relationship between two geometries (or the places they represent), relating a geometry to one that contains it, i.e. it is inside (i.e. within) its interior. As defined in DE-9IM. */\nexport const geoWithin = /*#__PURE__*/ ns(\"geoWithin\");\n/** The geographic area associated with the audience. */\nexport const geographicArea = /*#__PURE__*/ ns(\"geographicArea\");\n/** Given name. In the U.S., the first name of a Person. This can be used along with familyName instead of the name property. */\nexport const givenName = /*#__PURE__*/ ns(\"givenName\");\n/** The Global Location Number (GLN, sometimes also referred to as International Location Number or ILN) of the respective organization, person, or place. The GLN is a 13-digit number used to identify parties and physical locations. */\nexport const globalLocationNumber = /*#__PURE__*/ ns(\"globalLocationNumber\");\n/** The person, organization, contact point, or audience that has been granted this permission. */\nexport const grantee = /*#__PURE__*/ ns(\"grantee\");\n/** This ordering relation for qualitative values indicates that the subject is greater than the object. */\nexport const greater = /*#__PURE__*/ ns(\"greater\");\n/** This ordering relation for qualitative values indicates that the subject is greater than or equal to the object. */\nexport const greaterOrEqual = /*#__PURE__*/ ns(\"greaterOrEqual\");\n/** The GTIN-12 code of the product, or the product to which the offer refers. The GTIN-12 is the 12-digit GS1 Identification Key composed of a U.P.C. Company Prefix, Item Reference, and Check Digit used to identify trade items. See GS1 GTIN Summary for more details. */\nexport const gtin12 = /*#__PURE__*/ ns(\"gtin12\");\n/** The GTIN-13 code of the product, or the product to which the offer refers. This is equivalent to 13-digit ISBN codes and EAN UCC-13. Former 12-digit UPC codes can be converted into a GTIN-13 code by simply adding a preceeding zero. See GS1 GTIN Summary for more details. */\nexport const gtin13 = /*#__PURE__*/ ns(\"gtin13\");\n/** The GTIN-14 code of the product, or the product to which the offer refers. See GS1 GTIN Summary for more details. */\nexport const gtin14 = /*#__PURE__*/ ns(\"gtin14\");\n/** The GTIN-8 code of the product, or the product to which the offer refers. This code is also known as EAN/UCC-8 or 8-digit EAN. See GS1 GTIN Summary for more details. */\nexport const gtin8 = /*#__PURE__*/ ns(\"gtin8\");\n/** An offering of the course at a specific time and place or through specific media or mode of study or to a specific section of students. */\nexport const hasCourseInstance = /*#__PURE__*/ ns(\"hasCourseInstance\");\n/** Method used for delivery or shipping. */\nexport const hasDeliveryMethod = /*#__PURE__*/ ns(\"hasDeliveryMethod\");\n/** A permission related to the access to this document (e.g. permission to read or write an electronic document). For a public document, specify a grantee with an Audience with audienceType equal to \"public\". */\nexport const hasDigitalDocumentPermission = /*#__PURE__*/ ns(\"hasDigitalDocumentPermission\");\n/** A food or drink item contained in a menu or menu section. */\nexport const hasMenuItem = /*#__PURE__*/ ns(\"hasMenuItem\");\n/** A subgrouping of the menu (by dishes, course, serving time period, etc.). */\nexport const hasMenuSection = /*#__PURE__*/ ns(\"hasMenuSection\");\n/** The Person's occupation. For past professions, use Role for expressing dates. */\nexport const hasOccupation = /*#__PURE__*/ ns(\"hasOccupation\");\n/** Indicates an OfferCatalog listing for this Organization, Person, or Service. */\nexport const hasOfferCatalog = /*#__PURE__*/ ns(\"hasOfferCatalog\");\n/** Points-of-Sales operated by the organization or person. */\nexport const hasPOS = /*#__PURE__*/ ns(\"hasPOS\");\n/** Headline of the article. */\nexport const headline = /*#__PURE__*/ ns(\"headline\");\n/** The height of the item. */\nexport const height = /*#__PURE__*/ ns(\"height\");\n/** The highest price of all offers available.

\n\nUsage guidelines:

\n\n
    \n
  • Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.
  • \n
  • Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
  • \n
\n */\nexport const highPrice = /*#__PURE__*/ ns(\"highPrice\");\n/** Organization offering the job position. */\nexport const hiringOrganization = /*#__PURE__*/ ns(\"hiringOrganization\");\n/** A contact location for a person's residence. */\nexport const homeLocation = /*#__PURE__*/ ns(\"homeLocation\");\n/** The home team in a sports event. */\nexport const homeTeam = /*#__PURE__*/ ns(\"homeTeam\");\n/** An honorific prefix preceding a Person's name such as Dr/Mrs/Mr. */\nexport const honorificPrefix = /*#__PURE__*/ ns(\"honorificPrefix\");\n/** An honorific suffix preceding a Person's name such as M.D. /PhD/MSCSW. */\nexport const honorificSuffix = /*#__PURE__*/ ns(\"honorificSuffix\");\n/** The organization (airline, travelers' club, etc.) the membership is made with. */\nexport const hostingOrganization = /*#__PURE__*/ ns(\"hostingOrganization\");\n/** The hours during which this service or contact is available. */\nexport const hoursAvailable = /*#__PURE__*/ ns(\"hoursAvailable\");\n/** An HTTP method that specifies the appropriate HTTP method for a request to an HTTP EntryPoint. Values are capitalized strings as used in HTTP. */\nexport const httpMethod = /*#__PURE__*/ ns(\"httpMethod\");\n/** IATA identifier for an airline or airport. */\nexport const iataCode = /*#__PURE__*/ ns(\"iataCode\");\n/** ICAO identifier for an airport. */\nexport const icaoCode = /*#__PURE__*/ ns(\"icaoCode\");\n/** The illustrator of the book. */\nexport const illustrator = /*#__PURE__*/ ns(\"illustrator\");\n/** The album to which this recording belongs. */\nexport const inAlbum = /*#__PURE__*/ ns(\"inAlbum\");\n/** The CableOrSatelliteService offering the channel. */\nexport const inBroadcastLineup = /*#__PURE__*/ ns(\"inBroadcastLineup\");\n/** The playlist to which this recording belongs. */\nexport const inPlaylist = /*#__PURE__*/ ns(\"inPlaylist\");\n/** Description of bonus and commission compensation aspects of the job. */\nexport const incentives = /*#__PURE__*/ ns(\"incentives\");\n/** Smaller compositions included in this work (e.g. a movement in a symphony). */\nexport const includedComposition = /*#__PURE__*/ ns(\"includedComposition\");\n/** A data catalog which contains this dataset (this property was previously 'catalog', preferred name is now 'includedInDataCatalog'). */\nexport const includedDataCatalog = /*#__PURE__*/ ns(\"includedDataCatalog\");\n/** This links to a node or nodes indicating the exact quantity of the products included in the offer. */\nexport const includesObject = /*#__PURE__*/ ns(\"includesObject\");\n/** The industry associated with the job position. */\nexport const industry = /*#__PURE__*/ ns(\"industry\");\n/** The ISO 3166-1 (ISO 3166-1 alpha-2) or ISO 3166-2 code, the place, or the GeoShape for the geo-political region(s) for which the offer or delivery charge specification is not valid, e.g. a region where the transaction is not allowed.

\n\nSee also eligibleRegion. */\nexport const ineligibleRegion = /*#__PURE__*/ ns(\"ineligibleRegion\");\n/** A single ingredient used in the recipe, e.g. sugar, flour or garlic. */\nexport const ingredients = /*#__PURE__*/ ns(\"ingredients\");\n/** URL at which the app may be installed, if different from the URL of the item. */\nexport const installUrl = /*#__PURE__*/ ns(\"installUrl\");\n/** A person assigned to instruct or provide instructional assistance for the CourseInstance. */\nexport const instructor = /*#__PURE__*/ ns(\"instructor\");\n/** This property is deprecated, alongside the UserInteraction types on which it depended. */\nexport const interactionCount = /*#__PURE__*/ ns(\"interactionCount\");\n/** The WebSite or SoftwareApplication where the interactions took place. */\nexport const interactionService = /*#__PURE__*/ ns(\"interactionService\");\n/** The Action representing the type of interaction. For up votes, +1s, etc. use LikeAction. For down votes use DislikeAction. Otherwise, use the most specific Action. */\nexport const interactionType = /*#__PURE__*/ ns(\"interactionType\");\n/** The predominant mode of learning supported by the learning resource. Acceptable values are 'active', 'expositive', or 'mixed'. */\nexport const interactivityType = /*#__PURE__*/ ns(\"interactivityType\");\n/** The interest rate, charged or paid, applicable to the financial product. Note: This is different from the calculated annualPercentageRate. */\nexport const interestRate = /*#__PURE__*/ ns(\"interestRate\");\n/** The current approximate inventory level for the item or items. */\nexport const inventoryLevel = /*#__PURE__*/ ns(\"inventoryLevel\");\n/** A pointer to another product (or multiple products) for which this product is an accessory or spare part. */\nexport const isAccessoryOrSparePartFor = /*#__PURE__*/ ns(\"isAccessoryOrSparePartFor\");\n/** A resource that was used in the creation of this resource. This term can be repeated for multiple sources. For example, http://example.com/great-multiplication-intro.html. */\nexport const isBasedOnUrl = /*#__PURE__*/ ns(\"isBasedOnUrl\");\n/** A pointer to another product (or multiple products) for which this product is a consumable. */\nexport const isConsumableFor = /*#__PURE__*/ ns(\"isConsumableFor\");\n/** Indicates whether this content is family friendly. */\nexport const isFamilyFriendly = /*#__PURE__*/ ns(\"isFamilyFriendly\");\n/** Was the offer accepted as a gift for someone other than the buyer. */\nexport const isGift = /*#__PURE__*/ ns(\"isGift\");\n/** True is the broadcast is of a live event. */\nexport const isLiveBroadcast = /*#__PURE__*/ ns(\"isLiveBroadcast\");\n/** A pointer to another, somehow related product (or multiple products). */\nexport const isRelatedTo = /*#__PURE__*/ ns(\"isRelatedTo\");\n/** A pointer to another, functionally similar product (or multiple products). */\nexport const isSimilarTo = /*#__PURE__*/ ns(\"isSimilarTo\");\n/** A pointer to a base product from which this product is a variant. It is safe to infer that the variant inherits all product features from the base model, unless defined locally. This is not transitive. */\nexport const isVariantOf = /*#__PURE__*/ ns(\"isVariantOf\");\n/** The ISBN of the book. */\nexport const isbn = /*#__PURE__*/ ns(\"isbn\");\n/** The International Standard of Industrial Classification of All Economic Activities (ISIC), Revision 4 code for a particular organization, business person, or place. */\nexport const isicV4 = /*#__PURE__*/ ns(\"isicV4\");\n/** The International Standard Recording Code for the recording. */\nexport const isrcCode = /*#__PURE__*/ ns(\"isrcCode\");\n/** The International Standard Serial Number (ISSN) that identifies this serial publication. You can repeat this property to identify different formats of, or the linking ISSN (ISSN-L) for, this serial publication. */\nexport const issn = /*#__PURE__*/ ns(\"issn\");\n/** Identifies the issue of publication; for example, \"iii\" or \"2\". */\nexport const issueNumber = /*#__PURE__*/ ns(\"issueNumber\");\n/** The organization issuing the ticket or permit. */\nexport const issuedBy = /*#__PURE__*/ ns(\"issuedBy\");\n/** The service through with the permit was granted. */\nexport const issuedThrough = /*#__PURE__*/ ns(\"issuedThrough\");\n/** The International Standard Musical Work Code for the composition. */\nexport const iswcCode = /*#__PURE__*/ ns(\"iswcCode\");\n/** An entity represented by an entry in a list or data feed (e.g. an 'artist' in a list of 'artists')’. */\nexport const item = /*#__PURE__*/ ns(\"item\");\n/** A predefined value from OfferItemCondition or a textual description of the condition of the product or service, or the products or services included in the offer. */\nexport const itemCondition = /*#__PURE__*/ ns(\"itemCondition\");\n/** For itemListElement values, you can use simple strings (e.g. \"Peter\", \"Paul\", \"Mary\"), existing entities, or use ListItem.

\n\nText values are best if the elements in the list are plain strings. Existing entities are best for a simple, unordered list of existing things in your data. ListItem is used with ordered lists when you want to provide additional context about the element in that list or when the same item might be in different places in different lists.

\n\nNote: The order of elements in your mark-up is not sufficient for indicating the order or elements. Use ListItem with a 'position' property in such cases. */\nexport const itemListElement = /*#__PURE__*/ ns(\"itemListElement\");\n/** Type of ordering (e.g. Ascending, Descending, Unordered). */\nexport const itemListOrder = /*#__PURE__*/ ns(\"itemListOrder\");\n/** The item being offered. */\nexport const itemOffered = /*#__PURE__*/ ns(\"itemOffered\");\n/** The item that is being reviewed/rated. */\nexport const itemReviewed = /*#__PURE__*/ ns(\"itemReviewed\");\n/** Item(s) being shipped. */\nexport const itemShipped = /*#__PURE__*/ ns(\"itemShipped\");\n/** A (typically single) geographic location associated with the job position. */\nexport const jobLocation = /*#__PURE__*/ ns(\"jobLocation\");\n/** Keywords or tags used to describe this content. Multiple entries in a keywords list are typically delimited by commas. */\nexport const keywords = /*#__PURE__*/ ns(\"keywords\");\n/** A textual description of known damages, both repaired and unrepaired. */\nexport const knownVehicleDamages = /*#__PURE__*/ ns(\"knownVehicleDamages\");\n/** The most generic bi-directional social/work relation. */\nexport const knows = /*#__PURE__*/ ns(\"knows\");\n/** A sub property of participant. The owner of the real estate property. */\nexport const landlord = /*#__PURE__*/ ns(\"landlord\");\n/** A sub property of instrument. The language used on this action. */\nexport const language = /*#__PURE__*/ ns(\"language\");\n/** Date on which the content on this web page was last reviewed for accuracy and/or completeness. */\nexport const lastReviewed = /*#__PURE__*/ ns(\"lastReviewed\");\n/** The latitude of a location. For example 37.42242 (WGS 84). */\nexport const latitude = /*#__PURE__*/ ns(\"latitude\");\n/** The predominant type or kind characterizing the learning resource. For example, 'presentation', 'handout'. */\nexport const learningResourceType = /*#__PURE__*/ ns(\"learningResourceType\");\n/** The official name of the organization, e.g. the registered company name. */\nexport const legalName = /*#__PURE__*/ ns(\"legalName\");\n/** An organization identifier that uniquely identifies a legal entity as defined in ISO 17442. */\nexport const leiCode = /*#__PURE__*/ ns(\"leiCode\");\n/** A sub property of participant. The person that lends the object being borrowed. */\nexport const lender = /*#__PURE__*/ ns(\"lender\");\n/** This ordering relation for qualitative values indicates that the subject is lesser than the object. */\nexport const lesser = /*#__PURE__*/ ns(\"lesser\");\n/** This ordering relation for qualitative values indicates that the subject is lesser than or equal to the object. */\nexport const lesserOrEqual = /*#__PURE__*/ ns(\"lesserOrEqual\");\n/** A license document that applies to this content, typically indicated by URL. */\nexport const license = /*#__PURE__*/ ns(\"license\");\n/** A line is a point-to-point path consisting of two or more points. A line is expressed as a series of two or more point objects separated by space. */\nexport const line = /*#__PURE__*/ ns(\"line\");\n/** An update to the LiveBlog. */\nexport const liveBlogUpdate = /*#__PURE__*/ ns(\"liveBlogUpdate\");\n/** The duration of the loan or credit agreement. */\nexport const loanTerm = /*#__PURE__*/ ns(\"loanTerm\");\n/** The location where the CreativeWork was created, which may not be the same as the location depicted in the CreativeWork. */\nexport const locationCreated = /*#__PURE__*/ ns(\"locationCreated\");\n/** A full description of the lodging unit. */\nexport const lodgingUnitDescription = /*#__PURE__*/ ns(\"lodgingUnitDescription\");\n/** Textual description of the unit type (including suite vs. room, size of bed, etc.). */\nexport const lodgingUnitType = /*#__PURE__*/ ns(\"lodgingUnitType\");\n/** An associated logo. */\nexport const logo = /*#__PURE__*/ ns(\"logo\");\n/** The longitude of a location. For example -122.08585 (WGS 84). */\nexport const longitude = /*#__PURE__*/ ns(\"longitude\");\n/** A sub property of participant. The loser of the action. */\nexport const loser = /*#__PURE__*/ ns(\"loser\");\n/** The lowest price of all offers available.

\n\nUsage guidelines:

\n\n
    \n
  • Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.
  • \n
  • Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
  • \n
\n */\nexport const lowPrice = /*#__PURE__*/ ns(\"lowPrice\");\n/** The person who wrote the words. */\nexport const lyricist = /*#__PURE__*/ ns(\"lyricist\");\n/** The words in the song. */\nexport const lyrics = /*#__PURE__*/ ns(\"lyrics\");\n/** Indicates if this web page element is the main subject of the page. */\nexport const mainContentOfPage = /*#__PURE__*/ ns(\"mainContentOfPage\");\n/** The manufacturer of the product. */\nexport const manufacturer = /*#__PURE__*/ ns(\"manufacturer\");\n/** A URL to a map of the place. */\nexport const map = /*#__PURE__*/ ns(\"map\");\n/** Indicates the kind of Map, from the MapCategoryType Enumeration. */\nexport const mapType = /*#__PURE__*/ ns(\"mapType\");\n/** A URL to a map of the place. */\nexport const maps = /*#__PURE__*/ ns(\"maps\");\n/** The highest price if the price is a range. */\nexport const maxPrice = /*#__PURE__*/ ns(\"maxPrice\");\n/** The upper value of some characteristic or property. */\nexport const maxValue = /*#__PURE__*/ ns(\"maxValue\");\n/** The total number of individuals that may attend an event or venue. */\nexport const maximumAttendeeCapacity = /*#__PURE__*/ ns(\"maximumAttendeeCapacity\");\n/** Description of the meals that will be provided or available for purchase. */\nexport const mealService = /*#__PURE__*/ ns(\"mealService\");\n/** The median value. */\nexport const median = /*#__PURE__*/ ns(\"median\");\n/** A member of this organization. */\nexport const members = /*#__PURE__*/ ns(\"members\");\n/** A unique identifier for the membership. */\nexport const membershipNumber = /*#__PURE__*/ ns(\"membershipNumber\");\n/** Minimum memory requirements. */\nexport const memoryRequirements = /*#__PURE__*/ ns(\"memoryRequirements\");\n/** Indicates that the CreativeWork contains a reference to, but is not necessarily about a concept. */\nexport const mentions = /*#__PURE__*/ ns(\"mentions\");\n/** Either the actual menu as a structured representation, as text, or a URL of the menu. */\nexport const menu = /*#__PURE__*/ ns(\"menu\");\n/** Additional menu item(s) such as a side dish of salad or side order of fries that can be added to this menu item. Additionally it can be a menu section containing allowed add-on menu items for this menu item. */\nexport const menuAddOn = /*#__PURE__*/ ns(\"menuAddOn\");\n/** 'merchant' is an out-dated term for 'seller'. */\nexport const merchant = /*#__PURE__*/ ns(\"merchant\");\n/** A CreativeWork attached to the message. */\nexport const messageAttachment = /*#__PURE__*/ ns(\"messageAttachment\");\n/** The total distance travelled by the particular vehicle since its initial production, as read from its odometer.

\n\nTypical unit code(s): KMT for kilometers, SMI for statute miles */\nexport const mileageFromOdometer = /*#__PURE__*/ ns(\"mileageFromOdometer\");\n/** The lowest price if the price is a range. */\nexport const minPrice = /*#__PURE__*/ ns(\"minPrice\");\n/** The lower value of some characteristic or property. */\nexport const minValue = /*#__PURE__*/ ns(\"minValue\");\n/** The minimum payment required at this time. */\nexport const minimumPaymentDue = /*#__PURE__*/ ns(\"minimumPaymentDue\");\n/** The model of the product. Use with the URL of a ProductModel or a textual representation of the model identifier. The URL of the ProductModel can be from an external source. It is recommended to additionally provide strong product identifiers via the gtin8/gtin13/gtin14 and mpn properties. */\nexport const model = /*#__PURE__*/ ns(\"model\");\n/** The date and time the reservation was modified. */\nexport const modifiedTime = /*#__PURE__*/ ns(\"modifiedTime\");\n/** The Manufacturer Part Number (MPN) of the product, or the product to which the offer refers. */\nexport const mpn = /*#__PURE__*/ ns(\"mpn\");\n/** Whether multiple values are allowed for the property. Default is false. */\nexport const multipleValues = /*#__PURE__*/ ns(\"multipleValues\");\n/** An arrangement derived from the composition. */\nexport const musicArrangement = /*#__PURE__*/ ns(\"musicArrangement\");\n/** The composer of the soundtrack. */\nexport const musicBy = /*#__PURE__*/ ns(\"musicBy\");\n/** The type of composition (e.g. overture, sonata, symphony, etc.). */\nexport const musicCompositionForm = /*#__PURE__*/ ns(\"musicCompositionForm\");\n/** A member of a music group—for example, John, Paul, George, or Ringo. */\nexport const musicGroupMember = /*#__PURE__*/ ns(\"musicGroupMember\");\n/** Format of this release (the type of recording media used, ie. compact disc, digital media, LP, etc.). */\nexport const musicReleaseFormat = /*#__PURE__*/ ns(\"musicReleaseFormat\");\n/** The key, mode, or scale this composition uses. */\nexport const musicalKey = /*#__PURE__*/ ns(\"musicalKey\");\n/** The North American Industry Classification System (NAICS) code for a particular organization or business person. */\nexport const naics = /*#__PURE__*/ ns(\"naics\");\n/** The name of the item. */\nexport const name = /*#__PURE__*/ ns(\"name\");\n/** A position played, performed or filled by a person or organization, as part of an organization. For example, an athlete in a SportsTeam might play in the position named 'Quarterback'. */\nexport const namedPosition = /*#__PURE__*/ ns(\"namedPosition\");\n/** Nationality of the person. */\nexport const nationality = /*#__PURE__*/ ns(\"nationality\");\n/** The total financial value of the person as calculated by subtracting assets from liabilities. */\nexport const netWorth = /*#__PURE__*/ ns(\"netWorth\");\n/** A link to the ListItem that follows the current one. */\nexport const nextItem = /*#__PURE__*/ ns(\"nextItem\");\n/** This ordering relation for qualitative values indicates that the subject is not equal to the object. */\nexport const nonEqual = /*#__PURE__*/ ns(\"nonEqual\");\n/** The number of adults staying in the unit. */\nexport const numAdults = /*#__PURE__*/ ns(\"numAdults\");\n/** The number of children staying in the unit. */\nexport const numChildren = /*#__PURE__*/ ns(\"numChildren\");\n/** The number of tracks in this album or playlist. */\nexport const numTracks = /*#__PURE__*/ ns(\"numTracks\");\n/** The number or type of airbags in the vehicle. */\nexport const numberOfAirbags = /*#__PURE__*/ ns(\"numberOfAirbags\");\n/** The number of axles.

\n\nTypical unit code(s): C62 */\nexport const numberOfAxles = /*#__PURE__*/ ns(\"numberOfAxles\");\n/** The quantity of the given bed type available in the HotelRoom, Suite, House, or Apartment. */\nexport const numberOfBeds = /*#__PURE__*/ ns(\"numberOfBeds\");\n/** The number of doors.

\n\nTypical unit code(s): C62 */\nexport const numberOfDoors = /*#__PURE__*/ ns(\"numberOfDoors\");\n/** The number of employees in an organization e.g. business. */\nexport const numberOfEmployees = /*#__PURE__*/ ns(\"numberOfEmployees\");\n/** The number of episodes in this season or series. */\nexport const numberOfEpisodes = /*#__PURE__*/ ns(\"numberOfEpisodes\");\n/** The total number of forward gears available for the transmission system of the vehicle.

\n\nTypical unit code(s): C62 */\nexport const numberOfForwardGears = /*#__PURE__*/ ns(\"numberOfForwardGears\");\n/** The number of items in an ItemList. Note that some descriptions might not fully describe all items in a list (e.g., multi-page pagination); in such cases, the numberOfItems would be for the entire list. */\nexport const numberOfItems = /*#__PURE__*/ ns(\"numberOfItems\");\n/** The number of pages in the book. */\nexport const numberOfPages = /*#__PURE__*/ ns(\"numberOfPages\");\n/** Indicate how many people can play this game (minimum, maximum, or range). */\nexport const numberOfPlayers = /*#__PURE__*/ ns(\"numberOfPlayers\");\n/** The number of owners of the vehicle, including the current one.

\n\nTypical unit code(s): C62 */\nexport const numberOfPreviousOwners = /*#__PURE__*/ ns(\"numberOfPreviousOwners\");\n/** The number of rooms (excluding bathrooms and closets) of the accommodation or lodging business.\nTypical unit code(s): ROM for room or C62 for no unit. The type of room can be put in the unitText property of the QuantitativeValue. */\nexport const numberOfRooms = /*#__PURE__*/ ns(\"numberOfRooms\");\n/** The number of seasons in this series. */\nexport const numberOfSeasons = /*#__PURE__*/ ns(\"numberOfSeasons\");\n/** A number associated with a role in an organization, for example, the number on an athlete's jersey. */\nexport const numberedPosition = /*#__PURE__*/ ns(\"numberedPosition\");\n/** Nutrition information about the recipe or menu item. */\nexport const nutrition = /*#__PURE__*/ ns(\"nutrition\");\n/** The allowed total occupancy for the accommodation in persons (including infants etc). For individual accommodations, this is not necessarily the legal maximum but defines the permitted usage as per the contractual agreement (e.g. a double room used by a single person).\nTypical unit code(s): C62 for person */\nexport const occupancy = /*#__PURE__*/ ns(\"occupancy\");\n/** The region/country for which this occupational description is appropriate. Note that educational requirements and qualifications can vary between jurisdictions. */\nexport const occupationLocation = /*#__PURE__*/ ns(\"occupationLocation\");\n/** A category describing the job, preferably using a term from a taxonomy such as BLS O*NET-SOC, ISCO-08 or similar, with the property repeated for each applicable value. Ideally the taxonomy should be identified, and both the textual label and formal code for the category should be provided.

\n\nNote: for historical reasons, any textual label and formal code provided as a literal may be assumed to be from O*NET-SOC. */\nexport const occupationalCategory = /*#__PURE__*/ ns(\"occupationalCategory\");\n/** The number of offers for the product. */\nexport const offerCount = /*#__PURE__*/ ns(\"offerCount\");\n/** An offer to provide this item—for example, an offer to sell a product, rent the DVD of a movie, perform a service, or give away tickets to an event. */\nexport const offers = /*#__PURE__*/ ns(\"offers\");\n/** The general opening hours for a business. Opening hours can be specified as a weekly time range, starting with days, then times per day. Multiple days can be listed with commas ',' separating each day. Day or time ranges are specified using a hyphen '-'.

\n\n
    \n
  • Days are specified using the following two-letter combinations: Mo, Tu, We, Th, Fr, Sa, Su.
  • \n
  • Times are specified using 24:00 time. For example, 3pm is specified as 15:00.
  • \n
  • Here is an example: <time itemprop=\"openingHours\" datetime="Tu,Th 16:00-20:00">Tuesdays and Thursdays 4-8pm</time>.
  • \n
  • If a business is open 7 days a week, then it can be specified as <time itemprop="openingHours" datetime="Mo-Su">Monday through Sunday, all day</time>.
  • \n
\n */\nexport const openingHours = /*#__PURE__*/ ns(\"openingHours\");\n/** The opening hours of a certain place. */\nexport const openingHoursSpecification = /*#__PURE__*/ ns(\"openingHoursSpecification\");\n/** The opening hour of the place or service on the given day(s) of the week. */\nexport const opens = /*#__PURE__*/ ns(\"opens\");\n/** Operating systems supported (Windows 7, OSX 10.6, Android 1.6). */\nexport const operatingSystem = /*#__PURE__*/ ns(\"operatingSystem\");\n/** A sub property of participant. The opponent on this action. */\nexport const opponent = /*#__PURE__*/ ns(\"opponent\");\n/** A sub property of object. The options subject to this action. */\nexport const option = /*#__PURE__*/ ns(\"option\");\n/** Date order was placed. */\nexport const orderDate = /*#__PURE__*/ ns(\"orderDate\");\n/** The delivery of the parcel related to this order or order item. */\nexport const orderDelivery = /*#__PURE__*/ ns(\"orderDelivery\");\n/** The identifier of the order item. */\nexport const orderItemNumber = /*#__PURE__*/ ns(\"orderItemNumber\");\n/** The current status of the order item. */\nexport const orderItemStatus = /*#__PURE__*/ ns(\"orderItemStatus\");\n/** The identifier of the transaction. */\nexport const orderNumber = /*#__PURE__*/ ns(\"orderNumber\");\n/** The number of the item ordered. If the property is not set, assume the quantity is one. */\nexport const orderQuantity = /*#__PURE__*/ ns(\"orderQuantity\");\n/** The current status of the order. */\nexport const orderStatus = /*#__PURE__*/ ns(\"orderStatus\");\n/** The item ordered. */\nexport const orderedItem = /*#__PURE__*/ ns(\"orderedItem\");\n/** An organizer of an Event. */\nexport const organizer = /*#__PURE__*/ ns(\"organizer\");\n/** Shipper's address. */\nexport const originAddress = /*#__PURE__*/ ns(\"originAddress\");\n/** The date and time of obtaining the product. */\nexport const ownedFrom = /*#__PURE__*/ ns(\"ownedFrom\");\n/** The date and time of giving up ownership on the product. */\nexport const ownedThrough = /*#__PURE__*/ ns(\"ownedThrough\");\n/** Products owned by the organization or person. */\nexport const owns = /*#__PURE__*/ ns(\"owns\");\n/** The page on which the work ends; for example \"138\" or \"xvi\". */\nexport const pageEnd = /*#__PURE__*/ ns(\"pageEnd\");\n/** The page on which the work starts; for example \"135\" or \"xiii\". */\nexport const pageStart = /*#__PURE__*/ ns(\"pageStart\");\n/** Any description of pages that is not separated into pageStart and pageEnd; for example, \"1-6, 9, 55\" or \"10-12, 46-49\". */\nexport const pagination = /*#__PURE__*/ ns(\"pagination\");\n/** The parent of a question, answer or item in general. */\nexport const parentItem = /*#__PURE__*/ ns(\"parentItem\");\n/** A broadcast service to which the broadcast service may belong to such as regional variations of a national channel. */\nexport const parentService = /*#__PURE__*/ ns(\"parentService\");\n/** A parents of the person. */\nexport const parents = /*#__PURE__*/ ns(\"parents\");\n/** The episode to which this clip belongs. */\nexport const partOfEpisode = /*#__PURE__*/ ns(\"partOfEpisode\");\n/** The order is being paid as part of the referenced Invoice. */\nexport const partOfInvoice = /*#__PURE__*/ ns(\"partOfInvoice\");\n/** The overall order the items in this delivery were included in. */\nexport const partOfOrder = /*#__PURE__*/ ns(\"partOfOrder\");\n/** The season to which this episode belongs. */\nexport const partOfSeason = /*#__PURE__*/ ns(\"partOfSeason\");\n/** The TV series to which this episode or season belongs. */\nexport const partOfTVSeries = /*#__PURE__*/ ns(\"partOfTVSeries\");\n/** Number of people the reservation should accommodate. */\nexport const partySize = /*#__PURE__*/ ns(\"partySize\");\n/** The priority status assigned to a passenger for security or boarding (e.g. FastTrack or Priority). */\nexport const passengerPriorityStatus = /*#__PURE__*/ ns(\"passengerPriorityStatus\");\n/** The passenger's sequence number as assigned by the airline. */\nexport const passengerSequenceNumber = /*#__PURE__*/ ns(\"passengerSequenceNumber\");\n/** Cash, Credit Card, Cryptocurrency, Local Exchange Tradings System, etc. */\nexport const paymentAccepted = /*#__PURE__*/ ns(\"paymentAccepted\");\n/** The date that payment is due. */\nexport const paymentDue = /*#__PURE__*/ ns(\"paymentDue\");\n/** The name of the credit card or other method of payment for the order. */\nexport const paymentMethod = /*#__PURE__*/ ns(\"paymentMethod\");\n/** An identifier for the method of payment used (e.g. the last 4 digits of the credit card). */\nexport const paymentMethodId = /*#__PURE__*/ ns(\"paymentMethodId\");\n/** The status of payment; whether the invoice has been paid or not. */\nexport const paymentStatus = /*#__PURE__*/ ns(\"paymentStatus\");\n/** The URL for sending a payment. */\nexport const paymentUrl = /*#__PURE__*/ ns(\"paymentUrl\");\n/** The 10th percentile value. */\nexport const percentile10 = /*#__PURE__*/ ns(\"percentile10\");\n/** The 25th percentile value. */\nexport const percentile25 = /*#__PURE__*/ ns(\"percentile25\");\n/** The 75th percentile value. */\nexport const percentile75 = /*#__PURE__*/ ns(\"percentile75\");\n/** The 90th percentile value. */\nexport const percentile90 = /*#__PURE__*/ ns(\"percentile90\");\n/** Event that this person is a performer or participant in. */\nexport const performerIn = /*#__PURE__*/ ns(\"performerIn\");\n/** The main performer or performers of the event—for example, a presenter, musician, or actor. */\nexport const performers = /*#__PURE__*/ ns(\"performers\");\n/** The type of permission granted the person, organization, or audience. */\nexport const permissionType = /*#__PURE__*/ ns(\"permissionType\");\n/** Permission(s) required to run the app (for example, a mobile app may require full internet access or may run only on wifi). */\nexport const permissions = /*#__PURE__*/ ns(\"permissions\");\n/** The target audience for this permit. */\nexport const permitAudience = /*#__PURE__*/ ns(\"permitAudience\");\n/** Indications regarding the permitted usage of the accommodation. */\nexport const permittedUsage = /*#__PURE__*/ ns(\"permittedUsage\");\n/** Indicates whether pets are allowed to enter the accommodation or lodging business. More detailed information can be put in a text value. */\nexport const petsAllowed = /*#__PURE__*/ ns(\"petsAllowed\");\n/** Photographs of this place. */\nexport const photos = /*#__PURE__*/ ns(\"photos\");\n/** Where a taxi will pick up a passenger or a rental car can be picked up. */\nexport const pickupLocation = /*#__PURE__*/ ns(\"pickupLocation\");\n/** When a taxi will pickup a passenger or a rental car can be picked up. */\nexport const pickupTime = /*#__PURE__*/ ns(\"pickupTime\");\n/** Indicates whether this game is multi-player, co-op or single-player. The game can be marked as multi-player, co-op and single-player at the same time. */\nexport const playMode = /*#__PURE__*/ ns(\"playMode\");\n/** Player type required—for example, Flash or Silverlight. */\nexport const playerType = /*#__PURE__*/ ns(\"playerType\");\n/** Number of players on the server. */\nexport const playersOnline = /*#__PURE__*/ ns(\"playersOnline\");\n/** A polygon is the area enclosed by a point-to-point path for which the starting and ending points are the same. A polygon is expressed as a series of four or more space delimited points where the first and final points are identical. */\nexport const polygon = /*#__PURE__*/ ns(\"polygon\");\n/** The post office box number for PO box addresses. */\nexport const postOfficeBoxNumber = /*#__PURE__*/ ns(\"postOfficeBoxNumber\");\n/** The postal code. For example, 94043. */\nexport const postalCode = /*#__PURE__*/ ns(\"postalCode\");\n/** Indicates a potential Action, which describes an idealized action in which this thing would play an 'object' role. */\nexport const potentialAction = /*#__PURE__*/ ns(\"potentialAction\");\n/** A pointer from a previous, often discontinued variant of the product to its newer variant. */\nexport const predecessorOf = /*#__PURE__*/ ns(\"predecessorOf\");\n/** The length of time it takes to prepare the items to be used in instructions or a direction, in ISO 8601 duration format. */\nexport const prepTime = /*#__PURE__*/ ns(\"prepTime\");\n/** A link to the ListItem that preceeds the current one. */\nexport const previousItem = /*#__PURE__*/ ns(\"previousItem\");\n/** Used in conjunction with eventStatus for rescheduled or cancelled events. This property contains the previously scheduled start date. For rescheduled events, the startDate property should be used for the newly scheduled start date. In the (rare) case of an event that has been postponed and rescheduled multiple times, this field may be repeated. */\nexport const previousStartDate = /*#__PURE__*/ ns(\"previousStartDate\");\n/** The offer price of a product, or of a price component when attached to PriceSpecification and its subtypes.

\n\nUsage guidelines:

\n\n
    \n
  • Use the priceCurrency property (with standard formats: ISO 4217 currency format e.g. \"USD\"; Ticker symbol for cryptocurrencies e.g. \"BTC\"; well known names for Local Exchange Tradings Systems (LETS) and other currency types e.g. \"Ithaca HOUR\") instead of including ambiguous symbols such as '$' in the value.
  • \n
  • Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
  • \n
  • Note that both RDFa and Microdata syntax allow the use of a \"content=\" attribute for publishing simple machine-readable values alongside more human-friendly formatting.
  • \n
  • Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.
  • \n
\n */\nexport const price = /*#__PURE__*/ ns(\"price\");\n/** This property links to all UnitPriceSpecification nodes that apply in parallel for the CompoundPriceSpecification node. */\nexport const priceComponent = /*#__PURE__*/ ns(\"priceComponent\");\n/** The currency of the price, or a price component when attached to PriceSpecification and its subtypes.

\n\nUse standard formats: ISO 4217 currency format e.g. \"USD\"; Ticker symbol for cryptocurrencies e.g. \"BTC\"; well known names for Local Exchange Tradings Systems (LETS) and other currency types e.g. \"Ithaca HOUR\". */\nexport const priceCurrency = /*#__PURE__*/ ns(\"priceCurrency\");\n/** The price range of the business, for example $$$. */\nexport const priceRange = /*#__PURE__*/ ns(\"priceRange\");\n/** One or more detailed price specifications, indicating the unit price and delivery or payment charges. */\nexport const priceSpecification = /*#__PURE__*/ ns(\"priceSpecification\");\n/** A short text or acronym indicating multiple price specifications for the same offer, e.g. SRP for the suggested retail price or INVOICE for the invoice price, mostly used in the car industry. */\nexport const priceType = /*#__PURE__*/ ns(\"priceType\");\n/** The date after which the price is no longer available. */\nexport const priceValidUntil = /*#__PURE__*/ ns(\"priceValidUntil\");\n/** Indicates the main image on the page. */\nexport const primaryImageOfPage = /*#__PURE__*/ ns(\"primaryImageOfPage\");\n/** The number of the column in which the NewsArticle appears in the print edition. */\nexport const printColumn = /*#__PURE__*/ ns(\"printColumn\");\n/** The edition of the print product in which the NewsArticle appears. */\nexport const printEdition = /*#__PURE__*/ ns(\"printEdition\");\n/** If this NewsArticle appears in print, this field indicates the name of the page on which the article is found. Please note that this field is intended for the exact page name (e.g. A5, B18). */\nexport const printPage = /*#__PURE__*/ ns(\"printPage\");\n/** If this NewsArticle appears in print, this field indicates the print section in which the article appeared. */\nexport const printSection = /*#__PURE__*/ ns(\"printSection\");\n/** Estimated processing time for the service using this channel. */\nexport const processingTime = /*#__PURE__*/ ns(\"processingTime\");\n/** Processor architecture required to run the application (e.g. IA64). */\nexport const processorRequirements = /*#__PURE__*/ ns(\"processorRequirements\");\n/** The person or organization who produced the work (e.g. music album, movie, tv/radio series etc.). */\nexport const producer = /*#__PURE__*/ ns(\"producer\");\n/** The tangible thing generated by the service, e.g. a passport, permit, etc. */\nexport const produces = /*#__PURE__*/ ns(\"produces\");\n/** The product identifier, such as ISBN. For example: meta itemprop=\"productID\" content=\"isbn:123-456-789\". */\nexport const productID = /*#__PURE__*/ ns(\"productID\");\n/** The product or service this support contact point is related to (such as product support for a particular product line). This can be a specific product or product line (e.g. \"iPhone\") or a general category of products or services (e.g. \"smartphones\"). */\nexport const productSupported = /*#__PURE__*/ ns(\"productSupported\");\n/** The production company or studio responsible for the item e.g. series, video game, episode etc. */\nexport const productionCompany = /*#__PURE__*/ ns(\"productionCompany\");\n/** The date of production of the item, e.g. vehicle. */\nexport const productionDate = /*#__PURE__*/ ns(\"productionDate\");\n/** Proficiency needed for this content; expected values: 'Beginner', 'Expert'. */\nexport const proficiencyLevel = /*#__PURE__*/ ns(\"proficiencyLevel\");\n/** Any membership in a frequent flyer, hotel loyalty program, etc. being applied to the reservation. */\nexport const programMembershipUsed = /*#__PURE__*/ ns(\"programMembershipUsed\");\n/** The program providing the membership. */\nexport const programName = /*#__PURE__*/ ns(\"programName\");\n/** The computer programming language. */\nexport const programmingLanguage = /*#__PURE__*/ ns(\"programmingLanguage\");\n/** Indicates whether API is managed or unmanaged. */\nexport const programmingModel = /*#__PURE__*/ ns(\"programmingModel\");\n/** A commonly used identifier for the characteristic represented by the property, e.g. a manufacturer or a standard code for a property. propertyID can be\n(1) a prefixed string, mainly meant to be used with standards for product properties; (2) a site-specific, non-prefixed string (e.g. the primary key of the property or the vendor-specific id of the property), or (3)\na URL indicating the type of the property, either pointing to an external vocabulary, or a Web resource that describes the property (e.g. a glossary entry).\nStandards bodies should promote a standard prefix for the identifiers of properties from their standards. */\nexport const propertyID = /*#__PURE__*/ ns(\"propertyID\");\n/** The number of grams of protein. */\nexport const proteinContent = /*#__PURE__*/ ns(\"proteinContent\");\n/** Indicates the mobility of a provided service (e.g. 'static', 'dynamic'). */\nexport const providerMobility = /*#__PURE__*/ ns(\"providerMobility\");\n/** The service provided by this channel. */\nexport const providesService = /*#__PURE__*/ ns(\"providesService\");\n/** A flag to signal that the Place is open to public visitors. If this property is omitted there is no assumed default boolean value */\nexport const publicAccess = /*#__PURE__*/ ns(\"publicAccess\");\n/** A publication event associated with the item. */\nexport const publication = /*#__PURE__*/ ns(\"publication\");\n/** A broadcast service associated with the publication event. */\nexport const publishedOn = /*#__PURE__*/ ns(\"publishedOn\");\n/** The publisher of the creative work. */\nexport const publisher = /*#__PURE__*/ ns(\"publisher\");\n/** The publishingPrinciples property indicates (typically via URL) a document describing the editorial principles of an Organization (or individual e.g. a Person writing a blog) that relate to their activities as a publisher, e.g. ethics or diversity policies. When applied to a CreativeWork (e.g. NewsArticle) the principles are those of the party primarily responsible for the creation of the CreativeWork.

\n\nWhile such policies are most typically expressed in natural language, sometimes related information (e.g. indicating a funder) can be expressed using schema.org terminology. */\nexport const publishingPrinciples = /*#__PURE__*/ ns(\"publishingPrinciples\");\n/** The date the item e.g. vehicle was purchased by the current owner. */\nexport const purchaseDate = /*#__PURE__*/ ns(\"purchaseDate\");\n/** A sub property of instrument. The query used on this action. */\nexport const query = /*#__PURE__*/ ns(\"query\");\n/** The task that a player-controlled character, or group of characters may complete in order to gain a reward. */\nexport const quest = /*#__PURE__*/ ns(\"quest\");\n/** A sub property of object. A question. */\nexport const question = /*#__PURE__*/ ns(\"question\");\n/** The count of total number of ratings. */\nexport const ratingCount = /*#__PURE__*/ ns(\"ratingCount\");\n/** The rating for the content.

\n\nUsage guidelines:

\n\n
    \n
  • Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.
  • \n
  • Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
  • \n
\n */\nexport const ratingValue = /*#__PURE__*/ ns(\"ratingValue\");\n/** Whether or not a property is mutable. Default is false. Specifying this for a property that also has a value makes it act similar to a \"hidden\" input in an HTML form. */\nexport const readonlyValue = /*#__PURE__*/ ns(\"readonlyValue\");\n/** A sub property of participant. The real estate agent involved in the action. */\nexport const realEstateAgent = /*#__PURE__*/ ns(\"realEstateAgent\");\n/** A sub property of instrument. The recipe/instructions used to perform the action. */\nexport const recipe = /*#__PURE__*/ ns(\"recipe\");\n/** The category of the recipe—for example, appetizer, entree, etc. */\nexport const recipeCategory = /*#__PURE__*/ ns(\"recipeCategory\");\n/** The cuisine of the recipe (for example, French or Ethiopian). */\nexport const recipeCuisine = /*#__PURE__*/ ns(\"recipeCuisine\");\n/** A step in making the recipe, in the form of a single item (document, video, etc.) or an ordered list with HowToStep and/or HowToSection items. */\nexport const recipeInstructions = /*#__PURE__*/ ns(\"recipeInstructions\");\n/** The quantity produced by the recipe (for example, number of people served, number of servings, etc). */\nexport const recipeYield = /*#__PURE__*/ ns(\"recipeYield\");\n/** The label that issued the release. */\nexport const recordLabel = /*#__PURE__*/ ns(\"recordLabel\");\n/** The reference quantity for which a certain price applies, e.g. 1 EUR per 4 kWh of electricity. This property is a replacement for unitOfMeasurement for the advanced cases where the price does not relate to a standard unit. */\nexport const referenceQuantity = /*#__PURE__*/ ns(\"referenceQuantity\");\n/** The Order(s) related to this Invoice. One or more Orders may be combined into a single Invoice. */\nexport const referencesOrder = /*#__PURE__*/ ns(\"referencesOrder\");\n/** The regions where the media is allowed. If not specified, then it's assumed to be allowed everywhere. Specify the countries in ISO 3166 format. */\nexport const regionsAllowed = /*#__PURE__*/ ns(\"regionsAllowed\");\n/** A link related to this web page, for example to other related web pages. */\nexport const relatedLink = /*#__PURE__*/ ns(\"relatedLink\");\n/** The most generic familial relation. */\nexport const relatedTo = /*#__PURE__*/ ns(\"relatedTo\");\n/** The release date of a product or product model. This can be used to distinguish the exact variant of a product. */\nexport const releaseDate = /*#__PURE__*/ ns(\"releaseDate\");\n/** Description of what changed in this version. */\nexport const releaseNotes = /*#__PURE__*/ ns(\"releaseNotes\");\n/** The place and time the release was issued, expressed as a PublicationEvent. */\nexport const releasedEvent = /*#__PURE__*/ ns(\"releasedEvent\");\n/** The Occupation for the JobPosting. */\nexport const relevantOccupation = /*#__PURE__*/ ns(\"relevantOccupation\");\n/** The number of attendee places for an event that remain unallocated. */\nexport const remainingAttendeeCapacity = /*#__PURE__*/ ns(\"remainingAttendeeCapacity\");\n/** A sub property of object. The object that is being replaced. */\nexport const replacee = /*#__PURE__*/ ns(\"replacee\");\n/** A sub property of object. The object that replaces. */\nexport const replacer = /*#__PURE__*/ ns(\"replacer\");\n/** The URL at which a reply may be posted to the specified UserComment. */\nexport const replyToUrl = /*#__PURE__*/ ns(\"replyToUrl\");\n/** The number or other unique designator assigned to a Report by the publishing organization. */\nexport const reportNumber = /*#__PURE__*/ ns(\"reportNumber\");\n/** Indicates whether this image is representative of the content of the page. */\nexport const representativeOfPage = /*#__PURE__*/ ns(\"representativeOfPage\");\n/** Assets required to secure loan or credit repayments. It may take form of third party pledge, goods, financial instruments (cash, securities, etc.) */\nexport const requiredCollateral = /*#__PURE__*/ ns(\"requiredCollateral\");\n/** Audiences defined by a person's gender. */\nexport const requiredGender = /*#__PURE__*/ ns(\"requiredGender\");\n/** Audiences defined by a person's maximum age. */\nexport const requiredMaxAge = /*#__PURE__*/ ns(\"requiredMaxAge\");\n/** Audiences defined by a person's minimum age. */\nexport const requiredMinAge = /*#__PURE__*/ ns(\"requiredMinAge\");\n/** The required quantity of the item(s). */\nexport const requiredQuantity = /*#__PURE__*/ ns(\"requiredQuantity\");\n/** Component dependency requirements for application. This includes runtime environments and shared libraries that are not included in the application distribution package, but required to run the application (Examples: DirectX, Java or .NET runtime). */\nexport const requirements = /*#__PURE__*/ ns(\"requirements\");\n/** Indicates if use of the media require a subscription (either paid or free). Allowed values are true or false (note that an earlier version had 'yes', 'no'). */\nexport const requiresSubscription = /*#__PURE__*/ ns(\"requiresSubscription\");\n/** The thing -- flight, event, restaurant,etc. being reserved. */\nexport const reservationFor = /*#__PURE__*/ ns(\"reservationFor\");\n/** A unique identifier for the reservation. */\nexport const reservationId = /*#__PURE__*/ ns(\"reservationId\");\n/** The current status of the reservation. */\nexport const reservationStatus = /*#__PURE__*/ ns(\"reservationStatus\");\n/** A ticket associated with the reservation. */\nexport const reservedTicket = /*#__PURE__*/ ns(\"reservedTicket\");\n/** Responsibilities associated with this role or Occupation. */\nexport const responsibilities = /*#__PURE__*/ ns(\"responsibilities\");\n/** A sub property of result. The Comment created or sent as a result of this action. */\nexport const resultComment = /*#__PURE__*/ ns(\"resultComment\");\n/** A sub property of result. The review that resulted in the performing of the action. */\nexport const resultReview = /*#__PURE__*/ ns(\"resultReview\");\n/** This Review or Rating is relevant to this part or facet of the itemReviewed. */\nexport const reviewAspect = /*#__PURE__*/ ns(\"reviewAspect\");\n/** The actual body of the review. */\nexport const reviewBody = /*#__PURE__*/ ns(\"reviewBody\");\n/** The count of total number of reviews. */\nexport const reviewCount = /*#__PURE__*/ ns(\"reviewCount\");\n/** The rating given in this review. Note that reviews can themselves be rated. The reviewRating applies to rating given by the review. The aggregateRating property applies to the review itself, as a creative work. */\nexport const reviewRating = /*#__PURE__*/ ns(\"reviewRating\");\n/** People or organizations that have reviewed the content on this web page for accuracy and/or completeness. */\nexport const reviewedBy = /*#__PURE__*/ ns(\"reviewedBy\");\n/** Review of the item. */\nexport const reviews = /*#__PURE__*/ ns(\"reviews\");\n/** The response (yes, no, maybe) to the RSVP. */\nexport const rsvpResponse = /*#__PURE__*/ ns(\"rsvpResponse\");\n/** Runtime platform or script interpreter dependencies (Example - Java v1, Python2.3, .Net Framework 3.0). */\nexport const runtime = /*#__PURE__*/ ns(\"runtime\");\n/** The currency (coded using ISO 4217 ) used for the main salary information in this job posting or for this employee. */\nexport const salaryCurrency = /*#__PURE__*/ ns(\"salaryCurrency\");\n/** URL of a reference Web page that unambiguously indicates the item's identity. E.g. the URL of the item's Wikipedia page, Wikidata entry, or official website. */\nexport const sameAs = /*#__PURE__*/ ns(\"sameAs\");\n/** What type of code sample: full (compile ready) solution, code snippet, inline code, scripts, template. */\nexport const sampleType = /*#__PURE__*/ ns(\"sampleType\");\n/** The number of grams of saturated fat. */\nexport const saturatedFatContent = /*#__PURE__*/ ns(\"saturatedFatContent\");\n/** The date the invoice is scheduled to be paid. */\nexport const scheduledPaymentDate = /*#__PURE__*/ ns(\"scheduledPaymentDate\");\n/** The time the object is scheduled to. */\nexport const scheduledTime = /*#__PURE__*/ ns(\"scheduledTime\");\n/** Indicates (by URL or string) a particular version of a schema used in some CreativeWork. For example, a document could declare a schemaVersion using an URL such as http://schema.org/version/2.0/ if precise indication of schema version was required by some application. */\nexport const schemaVersion = /*#__PURE__*/ ns(\"schemaVersion\");\n/** The number of screens in the movie theater. */\nexport const screenCount = /*#__PURE__*/ ns(\"screenCount\");\n/** A link to a screenshot image of the app. */\nexport const screenshot = /*#__PURE__*/ ns(\"screenshot\");\n/** Position of the season within an ordered group of seasons. */\nexport const seasonNumber = /*#__PURE__*/ ns(\"seasonNumber\");\n/** A season in a media series. */\nexport const seasons = /*#__PURE__*/ ns(\"seasons\");\n/** The location of the reserved seat (e.g., 27). */\nexport const seatNumber = /*#__PURE__*/ ns(\"seatNumber\");\n/** The row location of the reserved seat (e.g., B). */\nexport const seatRow = /*#__PURE__*/ ns(\"seatRow\");\n/** The section location of the reserved seat (e.g. Orchestra). */\nexport const seatSection = /*#__PURE__*/ ns(\"seatSection\");\n/** The type/class of the seat. */\nexport const seatingType = /*#__PURE__*/ ns(\"seatingType\");\n/** The type of security screening the passenger is subject to. */\nexport const securityScreening = /*#__PURE__*/ ns(\"securityScreening\");\n/** A pointer to products or services sought by the organization or person (demand). */\nexport const seeks = /*#__PURE__*/ ns(\"seeks\");\n/** A sub property of participant. The participant who is at the sending end of the action. */\nexport const sender = /*#__PURE__*/ ns(\"sender\");\n/** Status of a game server. */\nexport const serverStatus = /*#__PURE__*/ ns(\"serverStatus\");\n/** The cuisine of the restaurant. */\nexport const servesCuisine = /*#__PURE__*/ ns(\"servesCuisine\");\n/** The audience eligible for this service. */\nexport const serviceAudience = /*#__PURE__*/ ns(\"serviceAudience\");\n/** The location (e.g. civic structure, local business, etc.) where a person can go to access the service. */\nexport const serviceLocation = /*#__PURE__*/ ns(\"serviceLocation\");\n/** The operating organization, if different from the provider. This enables the representation of services that are provided by an organization, but operated by another organization like a subcontractor. */\nexport const serviceOperator = /*#__PURE__*/ ns(\"serviceOperator\");\n/** The phone number to use to access the service. */\nexport const servicePhone = /*#__PURE__*/ ns(\"servicePhone\");\n/** The address for accessing the service by mail. */\nexport const servicePostalAddress = /*#__PURE__*/ ns(\"servicePostalAddress\");\n/** The number to access the service by text message. */\nexport const serviceSmsNumber = /*#__PURE__*/ ns(\"serviceSmsNumber\");\n/** The type of service being offered, e.g. veterans' benefits, emergency relief, etc. */\nexport const serviceType = /*#__PURE__*/ ns(\"serviceType\");\n/** The website to access the service. */\nexport const serviceUrl = /*#__PURE__*/ ns(\"serviceUrl\");\n/** The serving size, in terms of the number of volume or mass. */\nexport const servingSize = /*#__PURE__*/ ns(\"servingSize\");\n/** A CreativeWork such as an image, video, or audio clip shared as part of this posting. */\nexport const sharedContent = /*#__PURE__*/ ns(\"sharedContent\");\n/** A sibling of the person. */\nexport const siblings = /*#__PURE__*/ ns(\"siblings\");\n/** The most significant URLs on the page. Typically, these are the non-navigation links that are clicked on the most. */\nexport const significantLinks = /*#__PURE__*/ ns(\"significantLinks\");\n/** Skills required to fulfill this role or in this Occupation. */\nexport const skills = /*#__PURE__*/ ns(\"skills\");\n/** The Stock Keeping Unit (SKU), i.e. a merchant-specific identifier for a product or service, or the product to which the offer refers. */\nexport const sku = /*#__PURE__*/ ns(\"sku\");\n/** A slogan or motto associated with the item. */\nexport const slogan = /*#__PURE__*/ ns(\"slogan\");\n/** Indicates whether it is allowed to smoke in the place, e.g. in the restaurant, hotel or hotel room. */\nexport const smokingAllowed = /*#__PURE__*/ ns(\"smokingAllowed\");\n/** The number of milligrams of sodium. */\nexport const sodiumContent = /*#__PURE__*/ ns(\"sodiumContent\");\n/** Additional content for a software application. */\nexport const softwareAddOn = /*#__PURE__*/ ns(\"softwareAddOn\");\n/** Software application help. */\nexport const softwareHelp = /*#__PURE__*/ ns(\"softwareHelp\");\n/** Version of the software instance. */\nexport const softwareVersion = /*#__PURE__*/ ns(\"softwareVersion\");\n/** The Organization on whose behalf the creator was working. */\nexport const sourceOrganization = /*#__PURE__*/ ns(\"sourceOrganization\");\n/** The \"spatial\" property can be used in cases when more specific properties\n(e.g. locationCreated, spatialCoverage, contentLocation) are not known to be appropriate. */\nexport const spatial = /*#__PURE__*/ ns(\"spatial\");\n/** The spatialCoverage of a CreativeWork indicates the place(s) which are the focus of the content. It is a subproperty of\n contentLocation intended primarily for more technical and detailed materials. For example with a Dataset, it indicates\n areas that the dataset describes: a dataset of New York weather would have spatialCoverage which was the place: the state of New York. */\nexport const spatialCoverage = /*#__PURE__*/ ns(\"spatialCoverage\");\n/** Indicates sections of a Web page that are particularly 'speakable' in the sense of being highlighted as being especially appropriate for text-to-speech conversion. Other sections of a page may also be usefully spoken in particular circumstances; the 'speakable' property serves to indicate the parts most likely to be generally useful for speech.

\n\nThe speakable property can be repeated an arbitrary number of times, with three kinds of possible 'content-locator' values:

\n\n1.) id-value URL references - uses id-value of an element in the page being annotated. The simplest use of speakable has (potentially relative) URL values, referencing identified sections of the document concerned.

\n\n2.) CSS Selectors - addresses content in the annotated page, eg. via class attribute. Use the cssSelector property.

\n\n3.) XPaths - addresses content via XPaths (assuming an XML view of the content). Use the xpath property.

\n\nFor more sophisticated markup of speakable sections beyond simple ID references, either CSS selectors or XPath expressions to pick out document section(s) as speakable. For this\nwe define a supporting type, SpeakableSpecification which is defined to be a possible value of the speakable property. */\nexport const speakable = /*#__PURE__*/ ns(\"speakable\");\n/** Any special commitments associated with this job posting. Valid entries include VeteranCommit, MilitarySpouseCommit, etc. */\nexport const specialCommitments = /*#__PURE__*/ ns(\"specialCommitments\");\n/** The special opening hours of a certain place.

\n\nUse this to explicitly override general opening hours brought in scope by openingHoursSpecification or openingHours. */\nexport const specialOpeningHoursSpecification = /*#__PURE__*/ ns(\"specialOpeningHoursSpecification\");\n/** One of the domain specialities to which this web page's content applies. */\nexport const specialty = /*#__PURE__*/ ns(\"specialty\");\n/** A type of sport (e.g. Baseball). */\nexport const sport = /*#__PURE__*/ ns(\"sport\");\n/** A sub property of location. The sports activity location where this action occurred. */\nexport const sportsActivityLocation = /*#__PURE__*/ ns(\"sportsActivityLocation\");\n/** A sub property of location. The sports event where this action occurred. */\nexport const sportsEvent = /*#__PURE__*/ ns(\"sportsEvent\");\n/** A sub property of participant. The sports team that participated on this action. */\nexport const sportsTeam = /*#__PURE__*/ ns(\"sportsTeam\");\n/** The person's spouse. */\nexport const spouse = /*#__PURE__*/ ns(\"spouse\");\n/** An official rating for a lodging business or food establishment, e.g. from national associations or standards bodies. Use the author property to indicate the rating organization, e.g. as an Organization with name such as (e.g. HOTREC, DEHOGA, WHR, or Hotelstars). */\nexport const starRating = /*#__PURE__*/ ns(\"starRating\");\n/** The start date and time of the item (in ISO 8601 date format). */\nexport const startDate = /*#__PURE__*/ ns(\"startDate\");\n/** The startTime of something. For a reserved event or service (e.g. FoodEstablishmentReservation), the time that it is expected to start. For actions that span a period of time, when the action was performed. e.g. John wrote a book from January to December. For media, including audio and video, it's the time offset of the start of a clip within a larger file.

\n\nNote that Event uses startDate/endDate instead of startTime/endTime, even when describing dates with times. This situation may be clarified in future revisions. */\nexport const startTime = /*#__PURE__*/ ns(\"startTime\");\n/** The position of the steering wheel or similar device (mostly for cars). */\nexport const steeringPosition = /*#__PURE__*/ ns(\"steeringPosition\");\n/** The stepValue attribute indicates the granularity that is expected (and required) of the value in a PropertyValueSpecification. */\nexport const stepValue = /*#__PURE__*/ ns(\"stepValue\");\n/** A single step item (as HowToStep, text, document, video, etc.) or a HowToSection (originally misnamed 'steps'; 'step' is preferred). */\nexport const steps = /*#__PURE__*/ ns(\"steps\");\n/** Storage requirements (free space required). */\nexport const storageRequirements = /*#__PURE__*/ ns(\"storageRequirements\");\n/** The street address. For example, 1600 Amphitheatre Pkwy. */\nexport const streetAddress = /*#__PURE__*/ ns(\"streetAddress\");\n/** Events that are a part of this event. For example, a conference event includes many presentations, each subEvents of the conference. */\nexport const subEvents = /*#__PURE__*/ ns(\"subEvents\");\n/** The individual reservations included in the package. Typically a repeated property. */\nexport const subReservation = /*#__PURE__*/ ns(\"subReservation\");\n/** Languages in which subtitles/captions are available, in IETF BCP 47 standard format. */\nexport const subtitleLanguage = /*#__PURE__*/ ns(\"subtitleLanguage\");\n/** A pointer from a newer variant of a product to its previous, often discontinued predecessor. */\nexport const successorOf = /*#__PURE__*/ ns(\"successorOf\");\n/** The number of grams of sugar. */\nexport const sugarContent = /*#__PURE__*/ ns(\"sugarContent\");\n/** The gender of the person or audience. */\nexport const suggestedGender = /*#__PURE__*/ ns(\"suggestedGender\");\n/** Maximal age recommended for viewing content. */\nexport const suggestedMaxAge = /*#__PURE__*/ ns(\"suggestedMaxAge\");\n/** Minimal age recommended for viewing content. */\nexport const suggestedMinAge = /*#__PURE__*/ ns(\"suggestedMinAge\");\n/** Indicates a dietary restriction or guideline for which this recipe or menu item is suitable, e.g. diabetic, halal etc. */\nexport const suitableForDiet = /*#__PURE__*/ ns(\"suitableForDiet\");\n/** Supporting data for a SoftwareApplication. */\nexport const supportingData = /*#__PURE__*/ ns(\"supportingData\");\n/** A material used as a surface in some artwork, e.g. Canvas, Paper, Wood, Board, etc. */\nexport const surface = /*#__PURE__*/ ns(\"surface\");\n/** Indicates a target EntryPoint for an Action. */\nexport const target = /*#__PURE__*/ ns(\"target\");\n/** The description of a node in an established educational framework. */\nexport const targetDescription = /*#__PURE__*/ ns(\"targetDescription\");\n/** The name of a node in an established educational framework. */\nexport const targetName = /*#__PURE__*/ ns(\"targetName\");\n/** Type of app development: phone, Metro style, desktop, XBox, etc. */\nexport const targetPlatform = /*#__PURE__*/ ns(\"targetPlatform\");\n/** Target Operating System / Product to which the code applies. If applies to several versions, just the product name can be used. */\nexport const targetProduct = /*#__PURE__*/ ns(\"targetProduct\");\n/** The URL of a node in an established educational framework. */\nexport const targetUrl = /*#__PURE__*/ ns(\"targetUrl\");\n/** The Tax / Fiscal ID of the organization or person, e.g. the TIN in the US or the CIF/NIF in Spain. */\nexport const taxID = /*#__PURE__*/ ns(\"taxID\");\n/** The telephone number. */\nexport const telephone = /*#__PURE__*/ ns(\"telephone\");\n/** The \"temporal\" property can be used in cases where more specific properties\n(e.g. temporalCoverage, dateCreated, dateModified, datePublished) are not known to be appropriate. */\nexport const temporal = /*#__PURE__*/ ns(\"temporal\");\n/** The textual content of this CreativeWork. */\nexport const text = /*#__PURE__*/ ns(\"text\");\n/** Thumbnail image for an image or video. */\nexport const thumbnail = /*#__PURE__*/ ns(\"thumbnail\");\n/** A thumbnail image relevant to the Thing. */\nexport const thumbnailUrl = /*#__PURE__*/ ns(\"thumbnailUrl\");\n/** The exchange traded instrument associated with a Corporation object. The tickerSymbol is expressed as an exchange and an instrument name separated by a space character. For the exchange component of the tickerSymbol attribute, we recommend using the controlled vocabulary of Market Identifier Codes (MIC) specified in ISO15022. */\nexport const tickerSymbol = /*#__PURE__*/ ns(\"tickerSymbol\");\n/** The unique identifier for the ticket. */\nexport const ticketNumber = /*#__PURE__*/ ns(\"ticketNumber\");\n/** Reference to an asset (e.g., Barcode, QR code image or PDF) usable for entrance. */\nexport const ticketToken = /*#__PURE__*/ ns(\"ticketToken\");\n/** The seat associated with the ticket. */\nexport const ticketedSeat = /*#__PURE__*/ ns(\"ticketedSeat\");\n/** Approximate or typical time it takes to work with or through this learning resource for the typical intended target audience, e.g. 'PT30M', 'PT1H25M'. */\nexport const timeRequired = /*#__PURE__*/ ns(\"timeRequired\");\n/** The title of the job. */\nexport const title = /*#__PURE__*/ ns(\"title\");\n/** A sub property of location. The final location of the object or the agent after the action. */\nexport const toLocation = /*#__PURE__*/ ns(\"toLocation\");\n/** A sub property of recipient. The recipient who was directly sent the message. */\nexport const toRecipient = /*#__PURE__*/ ns(\"toRecipient\");\n/** A sub property of instrument. An object used (but not consumed) when performing instructions or a direction. */\nexport const tool = /*#__PURE__*/ ns(\"tool\");\n/** The total amount due. */\nexport const totalPaymentDue = /*#__PURE__*/ ns(\"totalPaymentDue\");\n/** The total price for the reservation or ticket, including applicable taxes, shipping, etc.

\n\nUsage guidelines:

\n\n
    \n
  • Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.
  • \n
  • Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
  • \n
\n */\nexport const totalPrice = /*#__PURE__*/ ns(\"totalPrice\");\n/** The total time required to perform instructions or a direction (including time to prepare the supplies), in ISO 8601 duration format. */\nexport const totalTime = /*#__PURE__*/ ns(\"totalTime\");\n/** Attraction suitable for type(s) of tourist. eg. Children, visitors from a particular country, etc. */\nexport const touristType = /*#__PURE__*/ ns(\"touristType\");\n/** Shipper tracking number. */\nexport const trackingNumber = /*#__PURE__*/ ns(\"trackingNumber\");\n/** Tracking url for the parcel delivery. */\nexport const trackingUrl = /*#__PURE__*/ ns(\"trackingUrl\");\n/** A music recording (track)—usually a single song. */\nexport const tracks = /*#__PURE__*/ ns(\"tracks\");\n/** The trailer of a movie or tv/radio series, season, episode, etc. */\nexport const trailer = /*#__PURE__*/ ns(\"trailer\");\n/** The name of the train (e.g. The Orient Express). */\nexport const trainName = /*#__PURE__*/ ns(\"trainName\");\n/** The unique identifier for the train. */\nexport const trainNumber = /*#__PURE__*/ ns(\"trainNumber\");\n/** The number of grams of trans fat. */\nexport const transFatContent = /*#__PURE__*/ ns(\"transFatContent\");\n/** If this MediaObject is an AudioObject or VideoObject, the transcript of that object. */\nexport const transcript = /*#__PURE__*/ ns(\"transcript\");\n/** Organization or person who adapts a creative work to different languages, regional differences and technical requirements of a target market, or that translates during some event. */\nexport const translator = /*#__PURE__*/ ns(\"translator\");\n/** The type of bed to which the BedDetail refers, i.e. the type of bed available in the quantity indicated by quantity. */\nexport const typeOfBed = /*#__PURE__*/ ns(\"typeOfBed\");\n/** The product that this structured value is referring to. */\nexport const typeOfGood = /*#__PURE__*/ ns(\"typeOfGood\");\n/** The typical expected age range, e.g. '7-9', '11-'. */\nexport const typicalAgeRange = /*#__PURE__*/ ns(\"typicalAgeRange\");\n/** The person or organization the reservation or ticket is for. */\nexport const underName = /*#__PURE__*/ ns(\"underName\");\n/** The unit of measurement given using the UN/CEFACT Common Code (3 characters) or a URL. Other codes than the UN/CEFACT Common Code may be used with a prefix followed by a colon. */\nexport const unitCode = /*#__PURE__*/ ns(\"unitCode\");\n/** A string or text indicating the unit of measurement. Useful if you cannot provide a standard unit code for\nunitCode. */\nexport const unitText = /*#__PURE__*/ ns(\"unitText\");\n/** The number of grams of unsaturated fat. */\nexport const unsaturatedFatContent = /*#__PURE__*/ ns(\"unsaturatedFatContent\");\n/** Date when this media object was uploaded to this site. */\nexport const uploadDate = /*#__PURE__*/ ns(\"uploadDate\");\n/** The number of upvotes this question, answer or comment has received from the community. */\nexport const upvoteCount = /*#__PURE__*/ ns(\"upvoteCount\");\n/** URL of the item. */\nexport const url = /*#__PURE__*/ ns(\"url\");\n/** An url template (RFC6570) that will be used to construct the target of the execution of the action. */\nexport const urlTemplate = /*#__PURE__*/ ns(\"urlTemplate\");\n/** The number of interactions for the CreativeWork using the WebSite or SoftwareApplication. */\nexport const userInteractionCount = /*#__PURE__*/ ns(\"userInteractionCount\");\n/** The duration of validity of a permit or similar thing. */\nexport const validFor = /*#__PURE__*/ ns(\"validFor\");\n/** The date when the item becomes valid. */\nexport const validFrom = /*#__PURE__*/ ns(\"validFrom\");\n/** The geographic area where a permit or similar thing is valid. */\nexport const validIn = /*#__PURE__*/ ns(\"validIn\");\n/** The date after when the item is not valid. For example the end of an offer, salary period, or a period of opening hours. */\nexport const validThrough = /*#__PURE__*/ ns(\"validThrough\");\n/** The date when the item is no longer valid. */\nexport const validUntil = /*#__PURE__*/ ns(\"validUntil\");\n/** The value of the quantitative value or property value node.

\n\n
    \n
  • For QuantitativeValue and MonetaryAmount, the recommended type for values is 'Number'.
  • \n
  • For PropertyValue, it can be 'Text;', 'Number', 'Boolean', or 'StructuredValue'.
  • \n
  • Use values from 0123456789 (Unicode 'DIGIT ZERO' (U+0030) to 'DIGIT NINE' (U+0039)) rather than superficially similiar Unicode symbols.
  • \n
  • Use '.' (Unicode 'FULL STOP' (U+002E)) rather than ',' to indicate a decimal point. Avoid using these symbols as a readability separator.
  • \n
\n */\nexport const value = /*#__PURE__*/ ns(\"value\");\n/** Specifies whether the applicable value-added tax (VAT) is included in the price specification or not. */\nexport const valueAddedTaxIncluded = /*#__PURE__*/ ns(\"valueAddedTaxIncluded\");\n/** Specifies the allowed range for number of characters in a literal value. */\nexport const valueMaxLength = /*#__PURE__*/ ns(\"valueMaxLength\");\n/** Specifies the minimum allowed range for number of characters in a literal value. */\nexport const valueMinLength = /*#__PURE__*/ ns(\"valueMinLength\");\n/** Indicates the name of the PropertyValueSpecification to be used in URL templates and form encoding in a manner analogous to HTML's input@name. */\nexport const valueName = /*#__PURE__*/ ns(\"valueName\");\n/** Specifies a regular expression for testing literal values according to the HTML spec. */\nexport const valuePattern = /*#__PURE__*/ ns(\"valuePattern\");\n/** A pointer to a secondary value that provides additional information on the original value, e.g. a reference temperature. */\nexport const valueReference = /*#__PURE__*/ ns(\"valueReference\");\n/** Whether the property must be filled in to complete the action. Default is false. */\nexport const valueRequired = /*#__PURE__*/ ns(\"valueRequired\");\n/** The Value-added Tax ID of the organization or person. */\nexport const vatID = /*#__PURE__*/ ns(\"vatID\");\n/** A short text indicating the configuration of the vehicle, e.g. '5dr hatchback ST 2.5 MT 225 hp' or 'limited edition'. */\nexport const vehicleConfiguration = /*#__PURE__*/ ns(\"vehicleConfiguration\");\n/** Information about the engine or engines of the vehicle. */\nexport const vehicleEngine = /*#__PURE__*/ ns(\"vehicleEngine\");\n/** The Vehicle Identification Number (VIN) is a unique serial number used by the automotive industry to identify individual motor vehicles. */\nexport const vehicleIdentificationNumber = /*#__PURE__*/ ns(\"vehicleIdentificationNumber\");\n/** The color or color combination of the interior of the vehicle. */\nexport const vehicleInteriorColor = /*#__PURE__*/ ns(\"vehicleInteriorColor\");\n/** The type or material of the interior of the vehicle (e.g. synthetic fabric, leather, wood, etc.). While most interior types are characterized by the material used, an interior type can also be based on vehicle usage or target audience. */\nexport const vehicleInteriorType = /*#__PURE__*/ ns(\"vehicleInteriorType\");\n/** The release date of a vehicle model (often used to differentiate versions of the same make and model). */\nexport const vehicleModelDate = /*#__PURE__*/ ns(\"vehicleModelDate\");\n/** The number of passengers that can be seated in the vehicle, both in terms of the physical space available, and in terms of limitations set by law.

\n\nTypical unit code(s): C62 for persons. */\nexport const vehicleSeatingCapacity = /*#__PURE__*/ ns(\"vehicleSeatingCapacity\");\n/** The type of component used for transmitting the power from a rotating power source to the wheels or other relevant component(s) (\"gearbox\" for cars). */\nexport const vehicleTransmission = /*#__PURE__*/ ns(\"vehicleTransmission\");\n/** 'vendor' is an earlier term for 'seller'. */\nexport const vendor = /*#__PURE__*/ ns(\"vendor\");\n/** The version of the CreativeWork embodied by a specified resource. */\nexport const version = /*#__PURE__*/ ns(\"version\");\n/** An embedded video object. */\nexport const video = /*#__PURE__*/ ns(\"video\");\n/** The type of screening or video broadcast used (e.g. IMAX, 3D, SD, HD, etc.). */\nexport const videoFormat = /*#__PURE__*/ ns(\"videoFormat\");\n/** The frame size of the video. */\nexport const videoFrameSize = /*#__PURE__*/ ns(\"videoFrameSize\");\n/** The quality of the video. */\nexport const videoQuality = /*#__PURE__*/ ns(\"videoQuality\");\n/** Identifies the volume of publication or multi-part work; for example, \"iii\" or \"2\". */\nexport const volumeNumber = /*#__PURE__*/ ns(\"volumeNumber\");\n/** The warranty promise(s) included in the offer. */\nexport const warrantyPromise = /*#__PURE__*/ ns(\"warrantyPromise\");\n/** The scope of the warranty promise. */\nexport const warrantyScope = /*#__PURE__*/ ns(\"warrantyScope\");\n/** The time when a passenger can check into the flight online. */\nexport const webCheckinTime = /*#__PURE__*/ ns(\"webCheckinTime\");\n/** The weight of the product or person. */\nexport const weight = /*#__PURE__*/ ns(\"weight\");\n/** The width of the item. */\nexport const width = /*#__PURE__*/ ns(\"width\");\n/** A sub property of participant. The winner of the action. */\nexport const winner = /*#__PURE__*/ ns(\"winner\");\n/** The number of words in the text of the Article. */\nexport const wordCount = /*#__PURE__*/ ns(\"wordCount\");\n/** The typical working hours for this job (e.g. 1st shift, night shift, 8am-5pm). */\nexport const workHours = /*#__PURE__*/ ns(\"workHours\");\n/** A contact location for a person's place of work. */\nexport const workLocation = /*#__PURE__*/ ns(\"workLocation\");\n/** A work performed in some event, for example a play performed in a TheaterEvent. */\nexport const workPerformed = /*#__PURE__*/ ns(\"workPerformed\");\n/** The movie presented during this event. */\nexport const workPresented = /*#__PURE__*/ ns(\"workPresented\");\n/** Organizations that the person works for. */\nexport const worksFor = /*#__PURE__*/ ns(\"worksFor\");\n/** The lowest value allowed in this rating system. If worstRating is omitted, 1 is assumed. */\nexport const worstRating = /*#__PURE__*/ ns(\"worstRating\");\n/** An XPath, e.g. of a SpeakableSpecification or WebPageElement. In the latter case, multiple matches within a page can constitute a single conceptual \"Web page element\". */\nexport const xpath = /*#__PURE__*/ ns(\"xpath\");\n/** The size of the business in annual revenue. */\nexport const yearlyRevenue = /*#__PURE__*/ ns(\"yearlyRevenue\");\n/** The age of the business. */\nexport const yearsInOperation = /*#__PURE__*/ ns(\"yearsInOperation\");\n/** An application that can complete the request. */\nexport const actionApplication = /*#__PURE__*/ ns(\"actionApplication\");\n/** A sub property of object. The options subject to this action. */\nexport const actionOption = /*#__PURE__*/ ns(\"actionOption\");\n/** An actor, e.g. in tv, radio, movie, video games etc., or in an event. Actors can be associated with individual items or with a series, episode, clip. */\nexport const actor = /*#__PURE__*/ ns(\"actor\");\n/** A music album. */\nexport const album = /*#__PURE__*/ ns(\"album\");\n/** A release of this album. */\nexport const albumRelease = /*#__PURE__*/ ns(\"albumRelease\");\n/** Alumni of an organization. */\nexport const alumni = /*#__PURE__*/ ns(\"alumni\");\n/** An organization that the person is an alumni of. */\nexport const alumniOf = /*#__PURE__*/ ns(\"alumniOf\");\n/** The supporting materials for the artwork, e.g. Canvas, Paper, Wood, Board, etc. */\nexport const artworkSurface = /*#__PURE__*/ ns(\"artworkSurface\");\n/** A person or organization attending the event. */\nexport const attendee = /*#__PURE__*/ ns(\"attendee\");\n/** An intended audience, i.e. a group for whom something was created. */\nexport const audience = /*#__PURE__*/ ns(\"audience\");\n/** Device required to run the application. Used in cases where a specific make/model is required to run the application. */\nexport const availableOnDevice = /*#__PURE__*/ ns(\"availableOnDevice\");\n/** An award won by or for this item. */\nexport const award = /*#__PURE__*/ ns(\"award\");\n/** A posting that is part of this blog. */\nexport const blogPost = /*#__PURE__*/ ns(\"blogPost\");\n/** An entity that arranges for an exchange between a buyer and a seller. In most cases a broker never acquires or releases ownership of a product or service involved in an exchange. If it is not clear whether an entity is a broker, seller, or buyer, the latter two terms are preferred. */\nexport const broker = /*#__PURE__*/ ns(\"broker\");\n/** What type of code sample: full (compile ready) solution, code snippet, inline code, scripts, template. */\nexport const codeSampleType = /*#__PURE__*/ ns(\"codeSampleType\");\n/** A colleague of the person. */\nexport const colleague = /*#__PURE__*/ ns(\"colleague\");\n/** A contact point for a person or organization. */\nexport const contactPoint = /*#__PURE__*/ ns(\"contactPoint\");\n/** The basic containment relation between a place and another that it contains. */\nexport const containsPlace = /*#__PURE__*/ ns(\"containsPlace\");\n/** A season that is part of the media series. */\nexport const containsSeason = /*#__PURE__*/ ns(\"containsSeason\");\n/** The location depicted or described in the content. For example, the location in a photograph or painting. */\nexport const contentLocation = /*#__PURE__*/ ns(\"contentLocation\");\n/** A dataset contained in this catalog. */\nexport const dataset = /*#__PURE__*/ ns(\"dataset\");\n/** A description of the item. */\nexport const description = /*#__PURE__*/ ns(\"description\");\n/** A director of e.g. tv, radio, movie, video gaming etc. content, or of an event. Directors can be associated with individual items or with a series, episode, clip. */\nexport const director = /*#__PURE__*/ ns(\"director\");\n/** The duration of the item (movie, audio recording, event, etc.) in ISO 8601 date format. */\nexport const duration = /*#__PURE__*/ ns(\"duration\");\n/** Someone working for this organization. */\nexport const employee = /*#__PURE__*/ ns(\"employee\");\n/** The CreativeWork encoded by this media object. */\nexport const encodesCreativeWork = /*#__PURE__*/ ns(\"encodesCreativeWork\");\n/** Media type typically expressed using a MIME format (see IANA site and MDN reference) e.g. application/zip for a SoftwareApplication binary, audio/mpeg for .mp3 etc.).

\n\nIn cases where a CreativeWork has several media type representations, encoding can be used to indicate each MediaObject alongside particular encodingFormat information.

\n\nUnregistered or niche encoding and file formats can be indicated instead via the most appropriate URL, e.g. defining Web page or a Wikipedia/Wikidata entry. */\nexport const encodingFormat = /*#__PURE__*/ ns(\"encodingFormat\");\n/** An episode of a tv, radio or game media within a series or season. */\nexport const episode = /*#__PURE__*/ ns(\"episode\");\n/** Upcoming or past event associated with this place, organization, or action. */\nexport const event = /*#__PURE__*/ ns(\"event\");\n/** A creative work that this work is an example/instance/realization/derivation of. */\nexport const exampleOfWork = /*#__PURE__*/ ns(\"exampleOfWork\");\n/** Library file name e.g., mscorlib.dll, system.web.dll. */\nexport const executableLibraryName = /*#__PURE__*/ ns(\"executableLibraryName\");\n/** A sub property of location. The course where this action was taken. */\nexport const exerciseCourse = /*#__PURE__*/ ns(\"exerciseCourse\");\n/** A person who founded this organization. */\nexport const founder = /*#__PURE__*/ ns(\"founder\");\n/** Video game which is played on this server. */\nexport const game = /*#__PURE__*/ ns(\"game\");\n/** The server on which it is possible to play the game. */\nexport const gameServer = /*#__PURE__*/ ns(\"gameServer\");\n/** A broadcast channel of a broadcast service. */\nexport const hasBroadcastChannel = /*#__PURE__*/ ns(\"hasBroadcastChannel\");\n/** Either the actual menu as a structured representation, as text, or a URL of the menu. */\nexport const hasMenu = /*#__PURE__*/ ns(\"hasMenu\");\n/** The language of the content or performance or used in an action. Please use one of the language codes from the IETF BCP 47 standard. See also availableLanguage. */\nexport const inLanguage = /*#__PURE__*/ ns(\"inLanguage\");\n/** Description of bonus and commission compensation aspects of the job. */\nexport const incentiveCompensation = /*#__PURE__*/ ns(\"incentiveCompensation\");\n/** The number of interactions for the CreativeWork using the WebSite or SoftwareApplication. The most specific child type of InteractionCounter should be used. */\nexport const interactionStatistic = /*#__PURE__*/ ns(\"interactionStatistic\");\n/** A flag to signal that the item, event, or place is accessible for free. */\nexport const isAccessibleForFree = /*#__PURE__*/ ns(\"isAccessibleForFree\");\n/** A resource from which this work is derived or from which it is a modification or adaption. */\nexport const isBasedOn = /*#__PURE__*/ ns(\"isBasedOn\");\n/** Description of benefits associated with the job. */\nexport const jobBenefits = /*#__PURE__*/ ns(\"jobBenefits\");\n/** Indicates the primary entity described in some page or other CreativeWork. */\nexport const mainEntity = /*#__PURE__*/ ns(\"mainEntity\");\n/** Indicates a page (or other CreativeWork) for which this thing is the main entity being described. See background notes for details. */\nexport const mainEntityOfPage = /*#__PURE__*/ ns(\"mainEntityOfPage\");\n/** A pointer to products or services offered by the organization or person. */\nexport const makesOffer = /*#__PURE__*/ ns(\"makesOffer\");\n/** A pointer to the organization or person making the offer. */\nexport const offeredBy = /*#__PURE__*/ ns(\"offeredBy\");\n/** A parent of this person. */\nexport const parent = /*#__PURE__*/ ns(\"parent\");\n/** The series to which this episode or season belongs. */\nexport const partOfSeries = /*#__PURE__*/ ns(\"partOfSeries\");\n/** The date that payment is due. */\nexport const paymentDueDate = /*#__PURE__*/ ns(\"paymentDueDate\");\n/** The length of time it takes to perform instructions or a direction (not including time to prepare the supplies), in ISO 8601 duration format. */\nexport const performTime = /*#__PURE__*/ ns(\"performTime\");\n/** A performer at the event—for example, a presenter, musician, musical group or actor. */\nexport const performer = /*#__PURE__*/ ns(\"performer\");\n/** A photograph of this place. */\nexport const photo = /*#__PURE__*/ ns(\"photo\");\n/** The service provider, service operator, or service performer; the goods producer. Another party (a seller) may offer those services or goods on behalf of the provider. A provider may also serve as the seller. */\nexport const provider = /*#__PURE__*/ ns(\"provider\");\n/** The BroadcastService offered on this channel. */\nexport const providesBroadcastService = /*#__PURE__*/ ns(\"providesBroadcastService\");\n/** A single ingredient used in the recipe, e.g. sugar, flour or garlic. */\nexport const recipeIngredient = /*#__PURE__*/ ns(\"recipeIngredient\");\n/** An audio recording of the work. */\nexport const recordedAs = /*#__PURE__*/ ns(\"recordedAs\");\n/** The Event where the CreativeWork was recorded. The CreativeWork may capture all or part of the event. */\nexport const recordedAt = /*#__PURE__*/ ns(\"recordedAt\");\n/** The CreativeWork that captured all or part of this Event. */\nexport const recordedIn = /*#__PURE__*/ ns(\"recordedIn\");\n/** The composition this track is a recording of. */\nexport const recordingOf = /*#__PURE__*/ ns(\"recordingOf\");\n/** The album this is a release of. */\nexport const releaseOf = /*#__PURE__*/ ns(\"releaseOf\");\n/** A review of the item. */\nexport const review = /*#__PURE__*/ ns(\"review\");\n/** A role played, performed or filled by a person or organization. For example, the team of creators for a comic book might fill the roles named 'inker', 'penciller', and 'letterer'; or an athlete in a SportsTeam might play in the position named 'Quarterback'. */\nexport const roleName = /*#__PURE__*/ ns(\"roleName\");\n/** Runtime platform or script interpreter dependencies (Example - Java v1, Python2.3, .Net Framework 3.0). */\nexport const runtimePlatform = /*#__PURE__*/ ns(\"runtimePlatform\");\n/** A season in a media series. */\nexport const season = /*#__PURE__*/ ns(\"season\");\n/** The serial number or any alphanumeric identifier of a particular product. When attached to an offer, it is a shortcut for the serial number of the product included in the offer. */\nexport const serialNumber = /*#__PURE__*/ ns(\"serialNumber\");\n/** The geographic area where the service is provided. */\nexport const serviceArea = /*#__PURE__*/ ns(\"serviceArea\");\n/** The tangible thing generated by the service, e.g. a passport, permit, etc. */\nexport const serviceOutput = /*#__PURE__*/ ns(\"serviceOutput\");\n/** A sibling of the person. */\nexport const sibling = /*#__PURE__*/ ns(\"sibling\");\n/** One of the more significant URLs on the page. Typically, these are the non-navigation links that are clicked on the most. */\nexport const significantLink = /*#__PURE__*/ ns(\"significantLink\");\n/** Component dependency requirements for application. This includes runtime environments and shared libraries that are not included in the application distribution package, but required to run the application (Examples: DirectX, Java or .NET runtime). */\nexport const softwareRequirements = /*#__PURE__*/ ns(\"softwareRequirements\");\n/** A person or organization that supports a thing through a pledge, promise, or financial contribution. e.g. a sponsor of a Medical Study or a corporate sponsor of an event. */\nexport const sponsor = /*#__PURE__*/ ns(\"sponsor\");\n/** A relationship between two organizations where the first includes the second, e.g., as a subsidiary. See also: the more specific 'department' property. */\nexport const subOrganization = /*#__PURE__*/ ns(\"subOrganization\");\n/** A CreativeWork or Event about this Thing. */\nexport const subjectOf = /*#__PURE__*/ ns(\"subjectOf\");\n/** An answer (possibly one of several, possibly incorrect) to a Question, e.g. on a Question/Answer site. */\nexport const suggestedAnswer = /*#__PURE__*/ ns(\"suggestedAnswer\");\n/** An event that this event is a part of. For example, a collection of individual music performances might each have a music festival as their superEvent. */\nexport const superEvent = /*#__PURE__*/ ns(\"superEvent\");\n/** A sub property of object. The collection target of the action. */\nexport const targetCollection = /*#__PURE__*/ ns(\"targetCollection\");\n/** The temporalCoverage of a CreativeWork indicates the period that the content applies to, i.e. that it describes, either as a DateTime or as a textual string indicating a time period in ISO 8601 time interval format. In\n the case of a Dataset it will typically indicate the relevant time period in a precise notation (e.g. for a 2011 census dataset, the year 2011 would be written \"2011/2012\"). Other forms of content e.g. ScholarlyArticle, Book, TVSeries or TVEpisode may indicate their temporalCoverage in broader terms - textually or via well-known URL.\n Written works such as books may sometimes have precise temporal coverage too, e.g. a work set in 1939 - 1945 can be indicated in ISO 8601 interval format format via \"1939/1945\".

\n\nOpen-ended date ranges can be written with \"..\" in place of the end date. For example, \"2015-11/..\" indicates a range beginning in November 2015 and with no specified final date. This is tentative and might be updated in future when ISO 8601 is officially updated. */\nexport const temporalCoverage = /*#__PURE__*/ ns(\"temporalCoverage\");\n/** A music recording (track)—usually a single song. If an ItemList is given, the list should contain items of type MusicRecording. */\nexport const track = /*#__PURE__*/ ns(\"track\");\n/** The warranty promise(s) included in the offer. */\nexport const warranty = /*#__PURE__*/ ns(\"warranty\");\n/** Example/instance/realization/derivation of the concept of this creative work. eg. The paperback edition, first edition, or eBook. */\nexport const workExample = /*#__PURE__*/ ns(\"workExample\");\n/** The quantity that results by performing instructions. For example, a paper airplane, 10 personalized candles. */\nexport const schemayield = /*#__PURE__*/ ns(\"yield\");\n/** The subject matter of the content. */\nexport const about = /*#__PURE__*/ ns(\"about\");\n/** A competitor in a sports event. */\nexport const competitor = /*#__PURE__*/ ns(\"competitor\");\n/** The basic containment relation between a place and one that contains it. */\nexport const containedInPlace = /*#__PURE__*/ ns(\"containedInPlace\");\n/** A media object that encodes this CreativeWork. This property is a synonym for associatedMedia. */\nexport const encoding = /*#__PURE__*/ ns(\"encoding\");\n/** A URL to a map of the place. */\nexport const hasMap = /*#__PURE__*/ ns(\"hasMap\");\n/** An image of the item. This can be a URL or a fully described ImageObject. */\nexport const image = /*#__PURE__*/ ns(\"image\");\n/** A material that something is made from, e.g. leather, wool, cotton, paper. */\nexport const material = /*#__PURE__*/ ns(\"material\");\n/** An Organization (or ProgramMembership) to which this Person or Organization belongs. */\nexport const memberOf = /*#__PURE__*/ ns(\"memberOf\");\n/** The larger organization that this organization is a subOrganization of, if any. */\nexport const parentOrganization = /*#__PURE__*/ ns(\"parentOrganization\");\n/** The result produced in the action. e.g. John wrote a book. */\nexport const result = /*#__PURE__*/ ns(\"result\");\n/** An entity which offers (sells / leases / lends / loans) the services / goods. A seller may also be a provider. */\nexport const seller = /*#__PURE__*/ ns(\"seller\");\n/** A single step item (as HowToStep, text, document, video, etc.) or a HowToSection. */\nexport const step = /*#__PURE__*/ ns(\"step\");\n/** An Event that is part of this event. For example, a conference event includes many presentations, each of which is a subEvent of the conference. */\nexport const subEvent = /*#__PURE__*/ ns(\"subEvent\");\n/** A sub-property of instrument. A supply consumed when performing instructions or a direction. */\nexport const supply = /*#__PURE__*/ ns(\"supply\");\n/** A work featured in some event, e.g. exhibited in an ExhibitionEvent.\n Specific subproperties are available for workPerformed (e.g. a play), or a workPresented (a Movie at a ScreeningEvent). */\nexport const workFeatured = /*#__PURE__*/ ns(\"workFeatured\");\n/** The geographic area where a service or offered item is provided. */\nexport const areaServed = /*#__PURE__*/ ns(\"areaServed\");\n/** A data catalog which contains this dataset. */\nexport const includedInDataCatalog = /*#__PURE__*/ ns(\"includedInDataCatalog\");\n/** A member of an Organization or a ProgramMembership. Organizations can be members of organizations; ProgramMembership is typically for individuals. */\nexport const member = /*#__PURE__*/ ns(\"member\");\n/** A sub property of participant. The participant who is at the receiving end of the action. */\nexport const recipient = /*#__PURE__*/ ns(\"recipient\");\n/** Indicates an item or CreativeWork that is part of this item, or CreativeWork (in some sense). */\nexport const hasPart = /*#__PURE__*/ ns(\"hasPart\");\n/** Indicates an item or CreativeWork that this item, or CreativeWork (in some sense), is part of. */\nexport const isPartOf = /*#__PURE__*/ ns(\"isPartOf\");\n/** The position of an item in a series or sequence of items. */\nexport const position = /*#__PURE__*/ ns(\"position\");\n/** The object that helped the agent perform the action. e.g. John wrote a book with a pen. */\nexport const instrument = /*#__PURE__*/ ns(\"instrument\");\n/** The object upon which the action is carried out, whose state is kept intact or changed. Also known as the semantic roles patient, affected or undergoer (which change their state) or theme (which doesn't). e.g. John read a book. */\nexport const object = /*#__PURE__*/ ns(\"object\");\n/** The location of for example where the event is happening, an organization is located, or where an action takes place. */\nexport const location = /*#__PURE__*/ ns(\"location\");\n/** Other co-agents that participated in the action indirectly. e.g. John wrote a book with Steve. */\nexport const participant = /*#__PURE__*/ ns(\"participant\");\n/** The identifier property represents any kind of identifier for any kind of Thing, such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides dedicated properties for representing many of these, either as textual strings or as URL (URI) links. See background notes for more details. */\nexport const identifier = /*#__PURE__*/ ns(\"identifier\");\n/* Other terms */\n/** An in-progress action (e.g, while watching the movie, or driving to a location). */\nexport const ActiveActionStatus = /*#__PURE__*/ ns(\"ActiveActionStatus\");\n/** AlbumRelease. */\nexport const AlbumRelease = /*#__PURE__*/ ns(\"AlbumRelease\");\n/** All-wheel Drive is a transmission layout where the engine drives all four wheels. */\nexport const AllWheelDriveConfiguration = /*#__PURE__*/ ns(\"AllWheelDriveConfiguration\");\n/** Book format: Audiobook. This is an enumerated value for use with the bookFormat property. There is also a type 'Audiobook' in the bib extension which includes Audiobook specific properties. */\nexport const AudiobookFormat = /*#__PURE__*/ ns(\"AudiobookFormat\");\n/** BroadcastRelease. */\nexport const BroadcastRelease = /*#__PURE__*/ ns(\"BroadcastRelease\");\n/** CDFormat. */\nexport const CDFormat = /*#__PURE__*/ ns(\"CDFormat\");\n/** CassetteFormat. */\nexport const CassetteFormat = /*#__PURE__*/ ns(\"CassetteFormat\");\n/** Play mode: CoOp. Co-operative games, where you play on the same team with friends. */\nexport const CoOp = /*#__PURE__*/ ns(\"CoOp\");\n/** Permission to add comments to the document. */\nexport const CommentPermission = /*#__PURE__*/ ns(\"CommentPermission\");\n/** CompilationAlbum. */\nexport const CompilationAlbum = /*#__PURE__*/ ns(\"CompilationAlbum\");\n/** An action that has already taken place. */\nexport const CompletedActionStatus = /*#__PURE__*/ ns(\"CompletedActionStatus\");\n/** DJMixAlbum. */\nexport const DJMixAlbum = /*#__PURE__*/ ns(\"DJMixAlbum\");\n/** DVDFormat. */\nexport const DVDFormat = /*#__PURE__*/ ns(\"DVDFormat\");\n/** Indicates that the item is damaged. */\nexport const DamagedCondition = /*#__PURE__*/ ns(\"DamagedCondition\");\n/** DemoAlbum. */\nexport const DemoAlbum = /*#__PURE__*/ ns(\"DemoAlbum\");\n/** A diet appropriate for people with diabetes. */\nexport const DiabeticDiet = /*#__PURE__*/ ns(\"DiabeticDiet\");\n/** DigitalAudioTapeFormat. */\nexport const DigitalAudioTapeFormat = /*#__PURE__*/ ns(\"DigitalAudioTapeFormat\");\n/** DigitalFormat. */\nexport const DigitalFormat = /*#__PURE__*/ ns(\"DigitalFormat\");\n/** Indicates that the item has been discontinued. */\nexport const Discontinued = /*#__PURE__*/ ns(\"Discontinued\");\n/** Book format: Ebook. */\nexport const EBook = /*#__PURE__*/ ns(\"EBook\");\n/** EPRelease. */\nexport const EPRelease = /*#__PURE__*/ ns(\"EPRelease\");\n/** The event has been cancelled. If the event has multiple startDate values, all are assumed to be cancelled. Either startDate or previousStartDate may be used to specify the event's cancelled date(s). */\nexport const EventCancelled = /*#__PURE__*/ ns(\"EventCancelled\");\n/** The event has been postponed and no new date has been set. The event's previousStartDate should be set. */\nexport const EventPostponed = /*#__PURE__*/ ns(\"EventPostponed\");\n/** The event has been rescheduled. The event's previousStartDate should be set to the old date and the startDate should be set to the event's new date. (If the event has been rescheduled multiple times, the previousStartDate property may be repeated). */\nexport const EventRescheduled = /*#__PURE__*/ ns(\"EventRescheduled\");\n/** The event is taking place or has taken place on the startDate as scheduled. Use of this value is optional, as it is assumed by default. */\nexport const EventScheduled = /*#__PURE__*/ ns(\"EventScheduled\");\n/** An action that failed to complete. The action's error property and the HTTP return code contain more information about the failure. */\nexport const FailedActionStatus = /*#__PURE__*/ ns(\"FailedActionStatus\");\n/** The boolean value false. */\nexport const False = /*#__PURE__*/ ns(\"False\");\n/** The female gender. */\nexport const Female = /*#__PURE__*/ ns(\"Female\");\n/** Four-wheel drive is a transmission layout where the engine primarily drives two wheels with a part-time four-wheel drive capability. */\nexport const FourWheelDriveConfiguration = /*#__PURE__*/ ns(\"FourWheelDriveConfiguration\");\n/** The day of the week between Thursday and Saturday. */\nexport const Friday = /*#__PURE__*/ ns(\"Friday\");\n/** Front-wheel drive is a transmission layout where the engine drives the front wheels. */\nexport const FrontWheelDriveConfiguration = /*#__PURE__*/ ns(\"FrontWheelDriveConfiguration\");\n/** A diet exclusive of gluten. */\nexport const GlutenFreeDiet = /*#__PURE__*/ ns(\"GlutenFreeDiet\");\n/** The airline boards by groups based on check-in time, priority, etc. */\nexport const GroupBoardingPolicy = /*#__PURE__*/ ns(\"GroupBoardingPolicy\");\n/** A diet conforming to Islamic dietary practices. */\nexport const HalalDiet = /*#__PURE__*/ ns(\"HalalDiet\");\n/** Book format: Hardcover. */\nexport const Hardcover = /*#__PURE__*/ ns(\"Hardcover\");\n/** Uses devices to support users with hearing impairments. */\nexport const HearingImpairedSupported = /*#__PURE__*/ ns(\"HearingImpairedSupported\");\n/** A diet conforming to Hindu dietary practices, in particular, beef-free. */\nexport const HinduDiet = /*#__PURE__*/ ns(\"HinduDiet\");\n/** Indicates that the item is in stock. */\nexport const InStock = /*#__PURE__*/ ns(\"InStock\");\n/** Indicates that the item is available only at physical locations. */\nexport const InStoreOnly = /*#__PURE__*/ ns(\"InStoreOnly\");\n/** An ItemList ordered with lower values listed first. */\nexport const ItemListOrderAscending = /*#__PURE__*/ ns(\"ItemListOrderAscending\");\n/** An ItemList ordered with higher values listed first. */\nexport const ItemListOrderDescending = /*#__PURE__*/ ns(\"ItemListOrderDescending\");\n/** An ItemList ordered with no explicit order. */\nexport const ItemListUnordered = /*#__PURE__*/ ns(\"ItemListUnordered\");\n/** A diet conforming to Jewish dietary practices. */\nexport const KosherDiet = /*#__PURE__*/ ns(\"KosherDiet\");\n/** LaserDiscFormat. */\nexport const LaserDiscFormat = /*#__PURE__*/ ns(\"LaserDiscFormat\");\n/** The steering position is on the left side of the vehicle (viewed from the main direction of driving). */\nexport const LeftHandDriving = /*#__PURE__*/ ns(\"LeftHandDriving\");\n/** Indicates that the item has limited availability. */\nexport const LimitedAvailability = /*#__PURE__*/ ns(\"LimitedAvailability\");\n/** LiveAlbum. */\nexport const LiveAlbum = /*#__PURE__*/ ns(\"LiveAlbum\");\n/** A diet focused on reduced calorie intake. */\nexport const LowCalorieDiet = /*#__PURE__*/ ns(\"LowCalorieDiet\");\n/** A diet focused on reduced fat and cholesterol intake. */\nexport const LowFatDiet = /*#__PURE__*/ ns(\"LowFatDiet\");\n/** A diet appropriate for people with lactose intolerance. */\nexport const LowLactoseDiet = /*#__PURE__*/ ns(\"LowLactoseDiet\");\n/** A diet focused on reduced sodium intake. */\nexport const LowSaltDiet = /*#__PURE__*/ ns(\"LowSaltDiet\");\n/** The male gender. */\nexport const Male = /*#__PURE__*/ ns(\"Male\");\n/** MixtapeAlbum. */\nexport const MixtapeAlbum = /*#__PURE__*/ ns(\"MixtapeAlbum\");\n/** The day of the week between Sunday and Tuesday. */\nexport const Monday = /*#__PURE__*/ ns(\"Monday\");\n/** Play mode: MultiPlayer. Requiring or allowing multiple human players to play simultaneously. */\nexport const MultiPlayer = /*#__PURE__*/ ns(\"MultiPlayer\");\n/** Indicates that the item is new. */\nexport const NewCondition = /*#__PURE__*/ ns(\"NewCondition\");\n/** Game server status: OfflinePermanently. Server is offline and not available. */\nexport const OfflinePermanently = /*#__PURE__*/ ns(\"OfflinePermanently\");\n/** Game server status: OfflineTemporarily. Server is offline now but it can be online soon. */\nexport const OfflineTemporarily = /*#__PURE__*/ ns(\"OfflineTemporarily\");\n/** A DeliveryMethod in which an item is collected on site, e.g. in a store or at a box office. */\nexport const OnSitePickup = /*#__PURE__*/ ns(\"OnSitePickup\");\n/** Game server status: Online. Server is available. */\nexport const Online = /*#__PURE__*/ ns(\"Online\");\n/** Game server status: OnlineFull. Server is online but unavailable. The maximum number of players has reached. */\nexport const OnlineFull = /*#__PURE__*/ ns(\"OnlineFull\");\n/** Indicates that the item is available only online. */\nexport const OnlineOnly = /*#__PURE__*/ ns(\"OnlineOnly\");\n/** OrderStatus representing cancellation of an order. */\nexport const OrderCancelled = /*#__PURE__*/ ns(\"OrderCancelled\");\n/** OrderStatus representing successful delivery of an order. */\nexport const OrderDelivered = /*#__PURE__*/ ns(\"OrderDelivered\");\n/** OrderStatus representing that an order is in transit. */\nexport const OrderInTransit = /*#__PURE__*/ ns(\"OrderInTransit\");\n/** OrderStatus representing that payment is due on an order. */\nexport const OrderPaymentDue = /*#__PURE__*/ ns(\"OrderPaymentDue\");\n/** OrderStatus representing availability of an order for pickup. */\nexport const OrderPickupAvailable = /*#__PURE__*/ ns(\"OrderPickupAvailable\");\n/** OrderStatus representing that there is a problem with the order. */\nexport const OrderProblem = /*#__PURE__*/ ns(\"OrderProblem\");\n/** OrderStatus representing that an order is being processed. */\nexport const OrderProcessing = /*#__PURE__*/ ns(\"OrderProcessing\");\n/** OrderStatus representing that an order has been returned. */\nexport const OrderReturned = /*#__PURE__*/ ns(\"OrderReturned\");\n/** Indicates that the item is out of stock. */\nexport const OutOfStock = /*#__PURE__*/ ns(\"OutOfStock\");\n/** Book format: Paperback. */\nexport const Paperback = /*#__PURE__*/ ns(\"Paperback\");\n/** A parking map. */\nexport const ParkingMap = /*#__PURE__*/ ns(\"ParkingMap\");\n/** An automatic payment system is in place and will be used. */\nexport const PaymentAutomaticallyApplied = /*#__PURE__*/ ns(\"PaymentAutomaticallyApplied\");\n/** The payment has been received and processed. */\nexport const PaymentComplete = /*#__PURE__*/ ns(\"PaymentComplete\");\n/** The payee received the payment, but it was declined for some reason. */\nexport const PaymentDeclined = /*#__PURE__*/ ns(\"PaymentDeclined\");\n/** The payment is due, but still within an acceptable time to be received. */\nexport const PaymentDue = /*#__PURE__*/ ns(\"PaymentDue\");\n/** The payment is due and considered late. */\nexport const PaymentPastDue = /*#__PURE__*/ ns(\"PaymentPastDue\");\n/** A description of an action that is supported. */\nexport const PotentialActionStatus = /*#__PURE__*/ ns(\"PotentialActionStatus\");\n/** Indicates that the item is available for pre-order, but will be delivered when generally available. */\nexport const PreOrder = /*#__PURE__*/ ns(\"PreOrder\");\n/** Indicates that the item is available for ordering and delivery before general availability. */\nexport const PreSale = /*#__PURE__*/ ns(\"PreSale\");\n/** This stands for any day that is a public holiday; it is a placeholder for all official public holidays in some particular location. While not technically a \"day of the week\", it can be used with OpeningHoursSpecification. In the context of an opening hours specification it can be used to indicate opening hours on public holidays, overriding general opening hours for the day of the week on which a public holiday occurs. */\nexport const PublicHolidays = /*#__PURE__*/ ns(\"PublicHolidays\");\n/** Permission to read or view the document. */\nexport const ReadPermission = /*#__PURE__*/ ns(\"ReadPermission\");\n/** Real-wheel drive is a transmission layout where the engine drives the rear wheels. */\nexport const RearWheelDriveConfiguration = /*#__PURE__*/ ns(\"RearWheelDriveConfiguration\");\n/** Indicates that the item is refurbished. */\nexport const RefurbishedCondition = /*#__PURE__*/ ns(\"RefurbishedCondition\");\n/** RemixAlbum. */\nexport const RemixAlbum = /*#__PURE__*/ ns(\"RemixAlbum\");\n/** Researchers. */\nexport const Researcher = /*#__PURE__*/ ns(\"Researcher\");\n/** The status for a previously confirmed reservation that is now cancelled. */\nexport const ReservationCancelled = /*#__PURE__*/ ns(\"ReservationCancelled\");\n/** The status of a confirmed reservation. */\nexport const ReservationConfirmed = /*#__PURE__*/ ns(\"ReservationConfirmed\");\n/** The status of a reservation on hold pending an update like credit card number or flight changes. */\nexport const ReservationHold = /*#__PURE__*/ ns(\"ReservationHold\");\n/** The status of a reservation when a request has been sent, but not confirmed. */\nexport const ReservationPending = /*#__PURE__*/ ns(\"ReservationPending\");\n/** The steering position is on the right side of the vehicle (viewed from the main direction of driving). */\nexport const RightHandDriving = /*#__PURE__*/ ns(\"RightHandDriving\");\n/** The invitee may or may not attend. */\nexport const RsvpResponseMaybe = /*#__PURE__*/ ns(\"RsvpResponseMaybe\");\n/** The invitee will not attend. */\nexport const RsvpResponseNo = /*#__PURE__*/ ns(\"RsvpResponseNo\");\n/** The invitee will attend. */\nexport const RsvpResponseYes = /*#__PURE__*/ ns(\"RsvpResponseYes\");\n/** The day of the week between Friday and Sunday. */\nexport const Saturday = /*#__PURE__*/ ns(\"Saturday\");\n/** A seating map. */\nexport const SeatingMap = /*#__PURE__*/ ns(\"SeatingMap\");\n/** Play mode: SinglePlayer. Which is played by a lone player. */\nexport const SinglePlayer = /*#__PURE__*/ ns(\"SinglePlayer\");\n/** SingleRelease. */\nexport const SingleRelease = /*#__PURE__*/ ns(\"SingleRelease\");\n/** Indicates that the item has sold out. */\nexport const SoldOut = /*#__PURE__*/ ns(\"SoldOut\");\n/** SoundtrackAlbum. */\nexport const SoundtrackAlbum = /*#__PURE__*/ ns(\"SoundtrackAlbum\");\n/** SpokenWordAlbum. */\nexport const SpokenWordAlbum = /*#__PURE__*/ ns(\"SpokenWordAlbum\");\n/** StudioAlbum. */\nexport const StudioAlbum = /*#__PURE__*/ ns(\"StudioAlbum\");\n/** The day of the week between Saturday and Monday. */\nexport const Sunday = /*#__PURE__*/ ns(\"Sunday\");\n/** The day of the week between Wednesday and Friday. */\nexport const Thursday = /*#__PURE__*/ ns(\"Thursday\");\n/** The associated telephone number is toll free. */\nexport const TollFree = /*#__PURE__*/ ns(\"TollFree\");\n/** A transit map. */\nexport const TransitMap = /*#__PURE__*/ ns(\"TransitMap\");\n/** The boolean value true. */\nexport const True = /*#__PURE__*/ ns(\"True\");\n/** The day of the week between Monday and Wednesday. */\nexport const Tuesday = /*#__PURE__*/ ns(\"Tuesday\");\n/** Indicates that the item is used. */\nexport const UsedCondition = /*#__PURE__*/ ns(\"UsedCondition\");\n/** A diet exclusive of all animal products. */\nexport const VeganDiet = /*#__PURE__*/ ns(\"VeganDiet\");\n/** A diet exclusive of animal meat. */\nexport const VegetarianDiet = /*#__PURE__*/ ns(\"VegetarianDiet\");\n/** A venue map (e.g. for malls, auditoriums, museums, etc.). */\nexport const VenueMap = /*#__PURE__*/ ns(\"VenueMap\");\n/** VinylFormat. */\nexport const VinylFormat = /*#__PURE__*/ ns(\"VinylFormat\");\n/** The day of the week between Tuesday and Thursday. */\nexport const Wednesday = /*#__PURE__*/ ns(\"Wednesday\");\n/** Permission to write or edit the document. */\nexport const WritePermission = /*#__PURE__*/ ns(\"WritePermission\");\n/** The airline boards by zones of the plane. */\nexport const ZoneBoardingPolicy = /*#__PURE__*/ ns(\"ZoneBoardingPolicy\");\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'W3C Shapes Constraint Language (SHACL) Vocabulary' ontology */\nexport const ns = createNS(\"http://www.w3.org/ns/shacl#\");\n/* Classes */\n/** A shape is a collection of constraints that may be targeted for certain nodes. */\nexport const Shape = /*#__PURE__*/ ns(\"Shape\");\n/** A node shape is a shape that specifies constraint that need to be met with respect to focus nodes. */\nexport const NodeShape = /*#__PURE__*/ ns(\"NodeShape\");\n/** A property shape is a shape that specifies constraints on the values of a focus node for a given property or path. */\nexport const PropertyShape = /*#__PURE__*/ ns(\"PropertyShape\");\n/** The class of all node kinds, including sh:BlankNode, sh:IRI, sh:Literal or the combinations of these: sh:BlankNodeOrIRI, sh:BlankNodeOrLiteral, sh:IRIOrLiteral. */\nexport const NodeKind = /*#__PURE__*/ ns(\"NodeKind\");\n/** The class of SHACL validation reports. */\nexport const ValidationReport = /*#__PURE__*/ ns(\"ValidationReport\");\n/** The base class of validation results, typically not instantiated directly. */\nexport const AbstractResult = /*#__PURE__*/ ns(\"AbstractResult\");\n/** The class of validation results. */\nexport const ValidationResult = /*#__PURE__*/ ns(\"ValidationResult\");\n/** The class of validation result severity levels, including violation and warning levels. */\nexport const Severity = /*#__PURE__*/ ns(\"Severity\");\n/** Superclass of components that can take parameters, especially functions and constraint components. */\nexport const Parameterizable = /*#__PURE__*/ ns(\"Parameterizable\");\n/** The class of parameter declarations, consisting of a path predicate and (possibly) information about allowed value type, cardinality and other characteristics. */\nexport const Parameter = /*#__PURE__*/ ns(\"Parameter\");\n/** The class of constraint components. */\nexport const ConstraintComponent = /*#__PURE__*/ ns(\"ConstraintComponent\");\n/** The class of validators, which provide instructions on how to process a constraint definition. This class serves as base class for the SPARQL-based validators and other possible implementations. */\nexport const Validator = /*#__PURE__*/ ns(\"Validator\");\n/** The class of validators based on SPARQL ASK queries. The queries are evaluated for each value node and are supposed to return true if the given node conforms. */\nexport const SPARQLAskValidator = /*#__PURE__*/ ns(\"SPARQLAskValidator\");\n/** The class of validators based on SPARQL SELECT queries. The queries are evaluated for each focus node and are supposed to produce bindings for all focus nodes that do not conform. */\nexport const SPARQLSelectValidator = /*#__PURE__*/ ns(\"SPARQLSelectValidator\");\n/** The class of resources that encapsulate a SPARQL query. */\nexport const SPARQLExecutable = /*#__PURE__*/ ns(\"SPARQLExecutable\");\n/** The class of SPARQL executables that are based on an ASK query. */\nexport const SPARQLAskExecutable = /*#__PURE__*/ ns(\"SPARQLAskExecutable\");\n/** The class of SPARQL executables that are based on a CONSTRUCT query. */\nexport const SPARQLConstructExecutable = /*#__PURE__*/ ns(\"SPARQLConstructExecutable\");\n/** The class of SPARQL executables based on a SELECT query. */\nexport const SPARQLSelectExecutable = /*#__PURE__*/ ns(\"SPARQLSelectExecutable\");\n/** The class of SPARQL executables based on a SPARQL UPDATE. */\nexport const SPARQLUpdateExecutable = /*#__PURE__*/ ns(\"SPARQLUpdateExecutable\");\n/** The class of prefix declarations, consisting of pairs of a prefix with a namespace. */\nexport const PrefixDeclaration = /*#__PURE__*/ ns(\"PrefixDeclaration\");\n/** The class of constraints based on SPARQL SELECT queries. */\nexport const SPARQLConstraint = /*#__PURE__*/ ns(\"SPARQLConstraint\");\n/** Instances of this class represent groups of property shapes that belong together. */\nexport const PropertyGroup = /*#__PURE__*/ ns(\"PropertyGroup\");\n/** The base class of targets such as those based on SPARQL queries. */\nexport const Target = /*#__PURE__*/ ns(\"Target\");\n/** The (meta) class for parameterizable targets.\tInstances of this are instantiated as values of the sh:target property. */\nexport const TargetType = /*#__PURE__*/ ns(\"TargetType\");\n/** The class of targets that are based on SPARQL queries. */\nexport const SPARQLTarget = /*#__PURE__*/ ns(\"SPARQLTarget\");\n/** The (meta) class for parameterizable targets that are based on SPARQL queries. */\nexport const SPARQLTargetType = /*#__PURE__*/ ns(\"SPARQLTargetType\");\n/** The class of SHACL functions. */\nexport const Function = /*#__PURE__*/ ns(\"Function\");\n/** A function backed by a SPARQL query - either ASK or SELECT. */\nexport const SPARQLFunction = /*#__PURE__*/ ns(\"SPARQLFunction\");\n/** A class of result annotations, which define the rules to derive the values of a given annotation property as extra values for a validation result. */\nexport const ResultAnnotation = /*#__PURE__*/ ns(\"ResultAnnotation\");\n/** The class of SHACL rules. Never instantiated directly. */\nexport const Rule = /*#__PURE__*/ ns(\"Rule\");\nexport const TripleRule = /*#__PURE__*/ ns(\"TripleRule\");\n/** The class of SHACL rules based on SPARQL CONSTRUCT queries. */\nexport const SPARQLRule = /*#__PURE__*/ ns(\"SPARQLRule\");\n/** Abstract base class of resources that declare an executable JavaScript. */\nexport const JSExecutable = /*#__PURE__*/ ns(\"JSExecutable\");\n/** The class of targets that are based on JavaScript functions. */\nexport const JSTarget = /*#__PURE__*/ ns(\"JSTarget\");\n/** The (meta) class for parameterizable targets that are based on JavaScript functions. */\nexport const JSTargetType = /*#__PURE__*/ ns(\"JSTargetType\");\n/** The class of constraints backed by a JavaScript function. */\nexport const JSConstraint = /*#__PURE__*/ ns(\"JSConstraint\");\n/** The class of SHACL functions that execute a JavaScript function when called. */\nexport const JSFunction = /*#__PURE__*/ ns(\"JSFunction\");\n/** Represents a JavaScript library, typically identified by one or more URLs of files to include. */\nexport const JSLibrary = /*#__PURE__*/ ns(\"JSLibrary\");\n/** The class of SHACL rules expressed using JavaScript. */\nexport const JSRule = /*#__PURE__*/ ns(\"JSRule\");\n/** A SHACL validator based on JavaScript. This can be used to declare SHACL constraint components that perform JavaScript-based validation when used. */\nexport const JSValidator = /*#__PURE__*/ ns(\"JSValidator\");\n/* Properties */\n/** If set to true then all nodes conform to this. */\nexport const deactivated = /*#__PURE__*/ ns(\"deactivated\");\n/** Links a shape to a class, indicating that all instances of the class must conform to the shape. */\nexport const targetClass = /*#__PURE__*/ ns(\"targetClass\");\n/** Links a shape to individual nodes, indicating that these nodes must conform to the shape. */\nexport const targetNode = /*#__PURE__*/ ns(\"targetNode\");\n/** Links a shape to a property, indicating that all all objects of triples that have the given property as their predicate must conform to the shape. */\nexport const targetObjectsOf = /*#__PURE__*/ ns(\"targetObjectsOf\");\n/** Links a shape to a property, indicating that all subjects of triples that have the given property as their predicate must conform to the shape. */\nexport const targetSubjectsOf = /*#__PURE__*/ ns(\"targetSubjectsOf\");\n/** A human-readable message (possibly with placeholders for variables) explaining the cause of the result. */\nexport const message = /*#__PURE__*/ ns(\"message\");\n/** Defines the severity that validation results produced by a shape must have. Defaults to sh:Violation. */\nexport const severity = /*#__PURE__*/ ns(\"severity\");\n/** True if the validation did not produce any validation results, and false otherwise. */\nexport const conforms = /*#__PURE__*/ ns(\"conforms\");\n/** The validation results contained in a validation report. */\nexport const result = /*#__PURE__*/ ns(\"result\");\n/** If true then the validation engine was certain that the shapes graph has passed all SHACL syntax requirements during the validation process. */\nexport const shapesGraphWellFormed = /*#__PURE__*/ ns(\"shapesGraphWellFormed\");\n/** Links a result with other results that provide more details, for example to describe violations against nested shapes. */\nexport const detail = /*#__PURE__*/ ns(\"detail\");\n/** The focus node that was validated when the result was produced. */\nexport const focusNode = /*#__PURE__*/ ns(\"focusNode\");\n/** Human-readable messages explaining the cause of the result. */\nexport const resultMessage = /*#__PURE__*/ ns(\"resultMessage\");\n/** The path of a validation result, based on the path of the validated property shape. */\nexport const resultPath = /*#__PURE__*/ ns(\"resultPath\");\n/** The severity of the result, e.g. warning. */\nexport const resultSeverity = /*#__PURE__*/ ns(\"resultSeverity\");\n/** The constraint that was validated when the result was produced. */\nexport const sourceConstraint = /*#__PURE__*/ ns(\"sourceConstraint\");\n/** The shape that is was validated when the result was produced. */\nexport const sourceShape = /*#__PURE__*/ ns(\"sourceShape\");\n/** The constraint component that is the source of the result. */\nexport const sourceConstraintComponent = /*#__PURE__*/ ns(\"sourceConstraintComponent\");\n/** An RDF node that has caused the result. */\nexport const value = /*#__PURE__*/ ns(\"value\");\n/** Shapes graphs that should be used when validating this data graph. */\nexport const shapesGraph = /*#__PURE__*/ ns(\"shapesGraph\");\n/** Suggested shapes graphs for this ontology. The values of this property may be used in the absence of specific sh:shapesGraph statements. */\nexport const suggestedShapesGraph = /*#__PURE__*/ ns(\"suggestedShapesGraph\");\n/** An entailment regime that indicates what kind of inferencing is required by a shapes graph. */\nexport const entailment = /*#__PURE__*/ ns(\"entailment\");\n/** Specifies the property path of a property shape. */\nexport const path = /*#__PURE__*/ ns(\"path\");\n/** The (single) value of this property represents an inverse path (object to subject). */\nexport const inversePath = /*#__PURE__*/ ns(\"inversePath\");\n/** The (single) value of this property must be a list of path elements, representing the elements of alternative paths. */\nexport const alternativePath = /*#__PURE__*/ ns(\"alternativePath\");\n/** The (single) value of this property represents a path that is matched zero or more times. */\nexport const zeroOrMorePath = /*#__PURE__*/ ns(\"zeroOrMorePath\");\n/** The (single) value of this property represents a path that is matched one or more times. */\nexport const oneOrMorePath = /*#__PURE__*/ ns(\"oneOrMorePath\");\n/** The (single) value of this property represents a path that is matched zero or one times. */\nexport const zeroOrOnePath = /*#__PURE__*/ ns(\"zeroOrOnePath\");\n/** The parameters of a function or constraint component. */\nexport const parameter = /*#__PURE__*/ ns(\"parameter\");\n/** Outlines how human-readable labels of instances of the associated Parameterizable shall be produced. The values can contain {?paramName} as placeholders for the actual values of the given parameter. */\nexport const labelTemplate = /*#__PURE__*/ ns(\"labelTemplate\");\n/** Indicates whether a parameter is optional. */\nexport const optional = /*#__PURE__*/ ns(\"optional\");\n/** The validator(s) used to evaluate constraints of either node or property shapes. */\nexport const validator = /*#__PURE__*/ ns(\"validator\");\n/** The validator(s) used to evaluate a constraint in the context of a node shape. */\nexport const nodeValidator = /*#__PURE__*/ ns(\"nodeValidator\");\n/** The validator(s) used to evaluate a constraint in the context of a property shape. */\nexport const propertyValidator = /*#__PURE__*/ ns(\"propertyValidator\");\n/** RDF list of shapes to validate the value nodes against. */\nexport const and = /*#__PURE__*/ ns(\"and\");\n/** The type that all value nodes must have. */\nexport const shaclclass = /*#__PURE__*/ ns(\"class\");\n/** If set to true then the shape is closed. */\nexport const closed = /*#__PURE__*/ ns(\"closed\");\n/** An optional RDF list of properties that are also permitted in addition to those explicitly enumerated via sh:property/sh:path. */\nexport const ignoredProperties = /*#__PURE__*/ ns(\"ignoredProperties\");\n/** Specifies an RDF datatype that all value nodes must have. */\nexport const datatype = /*#__PURE__*/ ns(\"datatype\");\n/** Specifies a property where the set of values must be disjoint with the value nodes. */\nexport const disjoint = /*#__PURE__*/ ns(\"disjoint\");\n/** Specifies a property that must have the same values as the value nodes. */\nexport const equals = /*#__PURE__*/ ns(\"equals\");\n/** Specifies a value that must be among the value nodes. */\nexport const hasValue = /*#__PURE__*/ ns(\"hasValue\");\n/** Specifies a list of allowed values so that each value node must be among the members of the given list. */\nexport const shaclin = /*#__PURE__*/ ns(\"in\");\n/** Specifies a list of language tags that all value nodes must have. */\nexport const languageIn = /*#__PURE__*/ ns(\"languageIn\");\n/** Specifies a property that must have smaller values than the value nodes. */\nexport const lessThan = /*#__PURE__*/ ns(\"lessThan\");\n/** Specifies a property that must have smaller or equal values than the value nodes. */\nexport const lessThanOrEquals = /*#__PURE__*/ ns(\"lessThanOrEquals\");\n/** Specifies the maximum number of values in the set of value nodes. */\nexport const maxCount = /*#__PURE__*/ ns(\"maxCount\");\n/** Specifies the maximum exclusive value of each value node. */\nexport const maxExclusive = /*#__PURE__*/ ns(\"maxExclusive\");\n/** Specifies the maximum inclusive value of each value node. */\nexport const maxInclusive = /*#__PURE__*/ ns(\"maxInclusive\");\n/** Specifies the maximum string length of each value node. */\nexport const maxLength = /*#__PURE__*/ ns(\"maxLength\");\n/** Specifies the minimum number of values in the set of value nodes. */\nexport const minCount = /*#__PURE__*/ ns(\"minCount\");\n/** Specifies the minimum exclusive value of each value node. */\nexport const minExclusive = /*#__PURE__*/ ns(\"minExclusive\");\n/** Specifies the minimum inclusive value of each value node. */\nexport const minInclusive = /*#__PURE__*/ ns(\"minInclusive\");\n/** Specifies the minimum string length of each value node. */\nexport const minLength = /*#__PURE__*/ ns(\"minLength\");\n/** Specifies the node shape that all value nodes must conform to. */\nexport const node = /*#__PURE__*/ ns(\"node\");\n/** Specifies the node kind (e.g. IRI or literal) each value node. */\nexport const nodeKind = /*#__PURE__*/ ns(\"nodeKind\");\n/** Specifies a shape that the value nodes must not conform to. */\nexport const not = /*#__PURE__*/ ns(\"not\");\n/** Specifies a list of shapes so that the value nodes must conform to at least one of the shapes. */\nexport const or = /*#__PURE__*/ ns(\"or\");\n/** An optional flag to be used with regular expression pattern matching. */\nexport const flags = /*#__PURE__*/ ns(\"flags\");\n/** Specifies a regular expression pattern that the string representations of the value nodes must match. */\nexport const pattern = /*#__PURE__*/ ns(\"pattern\");\n/** Links a shape to its property shapes. */\nexport const property = /*#__PURE__*/ ns(\"property\");\n/** The maximum number of value nodes that can conform to the shape. */\nexport const qualifiedMaxCount = /*#__PURE__*/ ns(\"qualifiedMaxCount\");\n/** The minimum number of value nodes that must conform to the shape. */\nexport const qualifiedMinCount = /*#__PURE__*/ ns(\"qualifiedMinCount\");\n/** The shape that a specified number of values must conform to. */\nexport const qualifiedValueShape = /*#__PURE__*/ ns(\"qualifiedValueShape\");\n/** Can be used to mark the qualified value shape to be disjoint with its sibling shapes. */\nexport const qualifiedValueShapesDisjoint = /*#__PURE__*/ ns(\"qualifiedValueShapesDisjoint\");\n/** Specifies whether all node values must have a unique (or no) language tag. */\nexport const uniqueLang = /*#__PURE__*/ ns(\"uniqueLang\");\n/** Specifies a list of shapes so that the value nodes must conform to exactly one of the shapes. */\nexport const xone = /*#__PURE__*/ ns(\"xone\");\n/** The SPARQL ASK query to execute. */\nexport const ask = /*#__PURE__*/ ns(\"ask\");\n/** The SPARQL CONSTRUCT query to execute. */\nexport const construct = /*#__PURE__*/ ns(\"construct\");\n/** The SPARQL SELECT query to execute. */\nexport const select = /*#__PURE__*/ ns(\"select\");\n/** The SPARQL UPDATE to execute. */\nexport const update = /*#__PURE__*/ ns(\"update\");\n/** The prefixes that shall be applied before parsing the associated SPARQL query. */\nexport const prefixes = /*#__PURE__*/ ns(\"prefixes\");\n/** Links a resource with its namespace prefix declarations. */\nexport const declare = /*#__PURE__*/ ns(\"declare\");\n/** The prefix of a prefix declaration. */\nexport const prefix = /*#__PURE__*/ ns(\"prefix\");\n/** The namespace associated with a prefix in a prefix declaration. */\nexport const namespace = /*#__PURE__*/ ns(\"namespace\");\n/** Links a shape with SPARQL constraints. */\nexport const sparql = /*#__PURE__*/ ns(\"sparql\");\n/** A default value for a property, for example for user interface tools to pre-populate input fields. */\nexport const defaultValue = /*#__PURE__*/ ns(\"defaultValue\");\n/** Human-readable descriptions for the property in the context of the surrounding shape. */\nexport const description = /*#__PURE__*/ ns(\"description\");\n/** Can be used to link to a property group to indicate that a property shape belongs to a group of related property shapes. */\nexport const group = /*#__PURE__*/ ns(\"group\");\n/** Human-readable labels for the property in the context of the surrounding shape. */\nexport const name = /*#__PURE__*/ ns(\"name\");\n/** Specifies the relative order of this compared to its siblings. For example use 0 for the first, 1 for the second. */\nexport const order = /*#__PURE__*/ ns(\"order\");\n/** Links a shape to a target specified by an extension language, for example instances of sh:SPARQLTarget. */\nexport const target = /*#__PURE__*/ ns(\"target\");\n/** The expected type of values returned by the associated function. */\nexport const returnType = /*#__PURE__*/ ns(\"returnType\");\n/** Links a SPARQL validator with zero or more sh:ResultAnnotation instances, defining how to derive additional result properties based on the variables of the SELECT query. */\nexport const resultAnnotation = /*#__PURE__*/ ns(\"resultAnnotation\");\n/** The annotation property that shall be set. */\nexport const annotationProperty = /*#__PURE__*/ ns(\"annotationProperty\");\n/** The (default) values of the annotation property. */\nexport const annotationValue = /*#__PURE__*/ ns(\"annotationValue\");\n/** The name of the SPARQL variable from the SELECT clause that shall be used for the values. */\nexport const annotationVarName = /*#__PURE__*/ ns(\"annotationVarName\");\n/** The shape that all input nodes of the expression need to conform to. */\nexport const filterShape = /*#__PURE__*/ ns(\"filterShape\");\n/** The node expression producing the input nodes of a filter shape expression. */\nexport const nodes = /*#__PURE__*/ ns(\"nodes\");\n/** A list of node expressions that shall be intersected. */\nexport const intersection = /*#__PURE__*/ ns(\"intersection\");\n/** A list of node expressions that shall be used together. */\nexport const union = /*#__PURE__*/ ns(\"union\");\n/** The node expression that must return true for the value nodes. */\nexport const expression = /*#__PURE__*/ ns(\"expression\");\n/** The rules linked to a shape. */\nexport const rule = /*#__PURE__*/ ns(\"rule\");\n/** The shapes that the focus nodes need to conform to before a rule is executed on them. */\nexport const condition = /*#__PURE__*/ ns(\"condition\");\n/** An expression producing the resources that shall be inferred as subjects. */\nexport const subject = /*#__PURE__*/ ns(\"subject\");\n/** An expression producing the properties that shall be inferred as predicates. */\nexport const predicate = /*#__PURE__*/ ns(\"predicate\");\n/** An expression producing the nodes that shall be inferred as objects. */\nexport const object = /*#__PURE__*/ ns(\"object\");\n/** Constraints expressed in JavaScript. */\nexport const js = /*#__PURE__*/ ns(\"js\");\n/** The name of the JavaScript function to execute. */\nexport const jsFunctionName = /*#__PURE__*/ ns(\"jsFunctionName\");\n/** Declares which JavaScript libraries are needed to execute this. */\nexport const jsLibrary = /*#__PURE__*/ ns(\"jsLibrary\");\n/** Declares the URLs of a JavaScript library. This should be the absolute URL of a JavaScript file. Implementations may redirect those to local files. */\nexport const jsLibraryURL = /*#__PURE__*/ ns(\"jsLibraryURL\");\n/* Other terms */\n/** The node kind of all blank nodes. */\nexport const BlankNode = /*#__PURE__*/ ns(\"BlankNode\");\n/** The node kind of all blank nodes or IRIs. */\nexport const BlankNodeOrIRI = /*#__PURE__*/ ns(\"BlankNodeOrIRI\");\n/** The node kind of all blank nodes or literals. */\nexport const BlankNodeOrLiteral = /*#__PURE__*/ ns(\"BlankNodeOrLiteral\");\n/** The node kind of all IRIs. */\nexport const IRI = /*#__PURE__*/ ns(\"IRI\");\n/** The node kind of all IRIs or literals. */\nexport const IRIOrLiteral = /*#__PURE__*/ ns(\"IRIOrLiteral\");\n/** The node kind of all literals. */\nexport const Literal = /*#__PURE__*/ ns(\"Literal\");\n/** The severity for an informational validation result. */\nexport const Info = /*#__PURE__*/ ns(\"Info\");\n/** The severity for a violation validation result. */\nexport const Violation = /*#__PURE__*/ ns(\"Violation\");\n/** The severity for a warning validation result. */\nexport const Warning = /*#__PURE__*/ ns(\"Warning\");\n/** A constraint component that can be used to test whether a value node conforms to all members of a provided list of shapes. */\nexport const AndConstraintComponent = /*#__PURE__*/ ns(\"AndConstraintComponent\");\nexport const AndConstraintComponent_and = /*#__PURE__*/ ns(\"AndConstraintComponent-and\");\n/** A constraint component that can be used to verify that each value node is an instance of a given type. */\nexport const ClassConstraintComponent = /*#__PURE__*/ ns(\"ClassConstraintComponent\");\nexport const ClassConstraintComponent_class = /*#__PURE__*/ ns(\"ClassConstraintComponent-class\");\n/** A constraint component that can be used to indicate that focus nodes must only have values for those properties that have been explicitly enumerated via sh:property/sh:path. */\nexport const ClosedConstraintComponent = /*#__PURE__*/ ns(\"ClosedConstraintComponent\");\nexport const ClosedConstraintComponent_closed = /*#__PURE__*/ ns(\"ClosedConstraintComponent-closed\");\nexport const ClosedConstraintComponent_ignoredProperties = /*#__PURE__*/ ns(\"ClosedConstraintComponent-ignoredProperties\");\n/** A constraint component that can be used to restrict the datatype of all value nodes. */\nexport const DatatypeConstraintComponent = /*#__PURE__*/ ns(\"DatatypeConstraintComponent\");\nexport const DatatypeConstraintComponent_datatype = /*#__PURE__*/ ns(\"DatatypeConstraintComponent-datatype\");\n/** A constraint component that can be used to verify that the set of value nodes is disjoint with the the set of nodes that have the focus node as subject and the value of a given property as predicate. */\nexport const DisjointConstraintComponent = /*#__PURE__*/ ns(\"DisjointConstraintComponent\");\nexport const DisjointConstraintComponent_disjoint = /*#__PURE__*/ ns(\"DisjointConstraintComponent-disjoint\");\n/** A constraint component that can be used to verify that the set of value nodes is equal to the set of nodes that have the focus node as subject and the value of a given property as predicate. */\nexport const EqualsConstraintComponent = /*#__PURE__*/ ns(\"EqualsConstraintComponent\");\nexport const EqualsConstraintComponent_equals = /*#__PURE__*/ ns(\"EqualsConstraintComponent-equals\");\n/** A constraint component that can be used to verify that one of the value nodes is a given RDF node. */\nexport const HasValueConstraintComponent = /*#__PURE__*/ ns(\"HasValueConstraintComponent\");\nexport const HasValueConstraintComponent_hasValue = /*#__PURE__*/ ns(\"HasValueConstraintComponent-hasValue\");\n/** A constraint component that can be used to exclusively enumerate the permitted value nodes. */\nexport const InConstraintComponent = /*#__PURE__*/ ns(\"InConstraintComponent\");\nexport const InConstraintComponent_in = /*#__PURE__*/ ns(\"InConstraintComponent-in\");\n/** A constraint component that can be used to enumerate language tags that all value nodes must have. */\nexport const LanguageInConstraintComponent = /*#__PURE__*/ ns(\"LanguageInConstraintComponent\");\nexport const LanguageInConstraintComponent_languageIn = /*#__PURE__*/ ns(\"LanguageInConstraintComponent-languageIn\");\n/** A constraint component that can be used to verify that each value node is smaller than all the nodes that have the focus node as subject and the value of a given property as predicate. */\nexport const LessThanConstraintComponent = /*#__PURE__*/ ns(\"LessThanConstraintComponent\");\nexport const LessThanConstraintComponent_lessThan = /*#__PURE__*/ ns(\"LessThanConstraintComponent-lessThan\");\n/** A constraint component that can be used to verify that every value node is smaller than all the nodes that have the focus node as subject and the value of a given property as predicate. */\nexport const LessThanOrEqualsConstraintComponent = /*#__PURE__*/ ns(\"LessThanOrEqualsConstraintComponent\");\nexport const LessThanOrEqualsConstraintComponent_lessThanOrEquals = /*#__PURE__*/ ns(\"LessThanOrEqualsConstraintComponent-lessThanOrEquals\");\n/** A constraint component that can be used to restrict the maximum number of value nodes. */\nexport const MaxCountConstraintComponent = /*#__PURE__*/ ns(\"MaxCountConstraintComponent\");\nexport const MaxCountConstraintComponent_maxCount = /*#__PURE__*/ ns(\"MaxCountConstraintComponent-maxCount\");\n/** A constraint component that can be used to restrict the range of value nodes with a maximum exclusive value. */\nexport const MaxExclusiveConstraintComponent = /*#__PURE__*/ ns(\"MaxExclusiveConstraintComponent\");\nexport const MaxExclusiveConstraintComponent_maxExclusive = /*#__PURE__*/ ns(\"MaxExclusiveConstraintComponent-maxExclusive\");\n/** A constraint component that can be used to restrict the range of value nodes with a maximum inclusive value. */\nexport const MaxInclusiveConstraintComponent = /*#__PURE__*/ ns(\"MaxInclusiveConstraintComponent\");\nexport const MaxInclusiveConstraintComponent_maxInclusive = /*#__PURE__*/ ns(\"MaxInclusiveConstraintComponent-maxInclusive\");\n/** A constraint component that can be used to restrict the maximum string length of value nodes. */\nexport const MaxLengthConstraintComponent = /*#__PURE__*/ ns(\"MaxLengthConstraintComponent\");\nexport const MaxLengthConstraintComponent_maxLength = /*#__PURE__*/ ns(\"MaxLengthConstraintComponent-maxLength\");\n/** A constraint component that can be used to restrict the minimum number of value nodes. */\nexport const MinCountConstraintComponent = /*#__PURE__*/ ns(\"MinCountConstraintComponent\");\nexport const MinCountConstraintComponent_minCount = /*#__PURE__*/ ns(\"MinCountConstraintComponent-minCount\");\n/** A constraint component that can be used to restrict the range of value nodes with a minimum exclusive value. */\nexport const MinExclusiveConstraintComponent = /*#__PURE__*/ ns(\"MinExclusiveConstraintComponent\");\nexport const MinExclusiveConstraintComponent_minExclusive = /*#__PURE__*/ ns(\"MinExclusiveConstraintComponent-minExclusive\");\n/** A constraint component that can be used to restrict the range of value nodes with a minimum inclusive value. */\nexport const MinInclusiveConstraintComponent = /*#__PURE__*/ ns(\"MinInclusiveConstraintComponent\");\nexport const MinInclusiveConstraintComponent_minInclusive = /*#__PURE__*/ ns(\"MinInclusiveConstraintComponent-minInclusive\");\n/** A constraint component that can be used to restrict the minimum string length of value nodes. */\nexport const MinLengthConstraintComponent = /*#__PURE__*/ ns(\"MinLengthConstraintComponent\");\nexport const MinLengthConstraintComponent_minLength = /*#__PURE__*/ ns(\"MinLengthConstraintComponent-minLength\");\n/** A constraint component that can be used to verify that all value nodes conform to the given node shape. */\nexport const NodeConstraintComponent = /*#__PURE__*/ ns(\"NodeConstraintComponent\");\nexport const NodeConstraintComponent_node = /*#__PURE__*/ ns(\"NodeConstraintComponent-node\");\n/** A constraint component that can be used to restrict the RDF node kind of each value node. */\nexport const NodeKindConstraintComponent = /*#__PURE__*/ ns(\"NodeKindConstraintComponent\");\nexport const NodeKindConstraintComponent_nodeKind = /*#__PURE__*/ ns(\"NodeKindConstraintComponent-nodeKind\");\n/** A constraint component that can be used to verify that value nodes do not conform to a given shape. */\nexport const NotConstraintComponent = /*#__PURE__*/ ns(\"NotConstraintComponent\");\nexport const NotConstraintComponent_not = /*#__PURE__*/ ns(\"NotConstraintComponent-not\");\n/** A constraint component that can be used to restrict the value nodes so that they conform to at least one out of several provided shapes. */\nexport const OrConstraintComponent = /*#__PURE__*/ ns(\"OrConstraintComponent\");\nexport const OrConstraintComponent_or = /*#__PURE__*/ ns(\"OrConstraintComponent-or\");\n/** A constraint component that can be used to verify that every value node matches a given regular expression. */\nexport const PatternConstraintComponent = /*#__PURE__*/ ns(\"PatternConstraintComponent\");\nexport const PatternConstraintComponent_pattern = /*#__PURE__*/ ns(\"PatternConstraintComponent-pattern\");\nexport const PatternConstraintComponent_flags = /*#__PURE__*/ ns(\"PatternConstraintComponent-flags\");\n/** A constraint component that can be used to verify that all value nodes conform to the given property shape. */\nexport const PropertyConstraintComponent = /*#__PURE__*/ ns(\"PropertyConstraintComponent\");\nexport const PropertyConstraintComponent_property = /*#__PURE__*/ ns(\"PropertyConstraintComponent-property\");\n/** A constraint component that can be used to verify that a specified maximum number of value nodes conforms to a given shape. */\nexport const QualifiedMaxCountConstraintComponent = /*#__PURE__*/ ns(\"QualifiedMaxCountConstraintComponent\");\nexport const QualifiedMaxCountConstraintComponent_qualifiedMaxCount = /*#__PURE__*/ ns(\"QualifiedMaxCountConstraintComponent-qualifiedMaxCount\");\nexport const QualifiedMaxCountConstraintComponent_qualifiedValueShape = /*#__PURE__*/ ns(\"QualifiedMaxCountConstraintComponent-qualifiedValueShape\");\nexport const QualifiedMaxCountConstraintComponent_qualifiedValueShapesDisjoint = /*#__PURE__*/ ns(\"QualifiedMaxCountConstraintComponent-qualifiedValueShapesDisjoint\");\n/** A constraint component that can be used to verify that a specified minimum number of value nodes conforms to a given shape. */\nexport const QualifiedMinCountConstraintComponent = /*#__PURE__*/ ns(\"QualifiedMinCountConstraintComponent\");\nexport const QualifiedMinCountConstraintComponent_qualifiedMinCount = /*#__PURE__*/ ns(\"QualifiedMinCountConstraintComponent-qualifiedMinCount\");\nexport const QualifiedMinCountConstraintComponent_qualifiedValueShape = /*#__PURE__*/ ns(\"QualifiedMinCountConstraintComponent-qualifiedValueShape\");\nexport const QualifiedMinCountConstraintComponent_qualifiedValueShapesDisjoint = /*#__PURE__*/ ns(\"QualifiedMinCountConstraintComponent-qualifiedValueShapesDisjoint\");\n/** A constraint component that can be used to specify that no pair of value nodes may use the same language tag. */\nexport const UniqueLangConstraintComponent = /*#__PURE__*/ ns(\"UniqueLangConstraintComponent\");\nexport const UniqueLangConstraintComponent_uniqueLang = /*#__PURE__*/ ns(\"UniqueLangConstraintComponent-uniqueLang\");\n/** A constraint component that can be used to restrict the value nodes so that they conform to exactly one out of several provided shapes. */\nexport const XoneConstraintComponent = /*#__PURE__*/ ns(\"XoneConstraintComponent\");\nexport const XoneConstraintComponent_xone = /*#__PURE__*/ ns(\"XoneConstraintComponent-xone\");\n/** A constraint component that can be used to define constraints based on SPARQL queries. */\nexport const SPARQLConstraintComponent = /*#__PURE__*/ ns(\"SPARQLConstraintComponent\");\nexport const SPARQLConstraintComponent_sparql = /*#__PURE__*/ ns(\"SPARQLConstraintComponent-sparql\");\n/** A node expression that represents the current focus node. */\nexport const shaclthis = /*#__PURE__*/ ns(\"this\");\n/** A constraint component that can be used to verify that a given node expression produces true for all value nodes. */\nexport const ExpressionConstraintComponent = /*#__PURE__*/ ns(\"ExpressionConstraintComponent\");\nexport const ExpressionConstraintComponent_expression = /*#__PURE__*/ ns(\"ExpressionConstraintComponent-expression\");\n/** A constraint component with the parameter sh:js linking to a sh:JSConstraint containing a sh:script. */\nexport const JSConstraintComponent = /*#__PURE__*/ ns(\"JSConstraintComponent\");\nexport const JSConstraint_js = /*#__PURE__*/ ns(\"JSConstraint-js\");\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'XML Schema Datatypes in RDF and OWL' ontology */\nexport const ns = createNS(\"http://www.w3.org/2001/XMLSchema#\");\n/* Classes */\nexport const string = /*#__PURE__*/ ns(\"string\");\nexport const xsdboolean = /*#__PURE__*/ ns(\"boolean\");\nexport const decimal = /*#__PURE__*/ ns(\"decimal\");\nexport const xsdfloat = /*#__PURE__*/ ns(\"float\");\nexport const xsddouble = /*#__PURE__*/ ns(\"double\");\nexport const duration = /*#__PURE__*/ ns(\"duration\");\nexport const dateTime = /*#__PURE__*/ ns(\"dateTime\");\nexport const time = /*#__PURE__*/ ns(\"time\");\nexport const date = /*#__PURE__*/ ns(\"date\");\nexport const gYearMonth = /*#__PURE__*/ ns(\"gYearMonth\");\nexport const gYear = /*#__PURE__*/ ns(\"gYear\");\nexport const gMonthDay = /*#__PURE__*/ ns(\"gMonthDay\");\nexport const gDay = /*#__PURE__*/ ns(\"gDay\");\nexport const gMonth = /*#__PURE__*/ ns(\"gMonth\");\nexport const hexBinary = /*#__PURE__*/ ns(\"hexBinary\");\nexport const base64Binary = /*#__PURE__*/ ns(\"base64Binary\");\nexport const anyURI = /*#__PURE__*/ ns(\"anyURI\");\nexport const normalizedString = /*#__PURE__*/ ns(\"normalizedString\");\nexport const token = /*#__PURE__*/ ns(\"token\");\nexport const language = /*#__PURE__*/ ns(\"language\");\nexport const NMTOKEN = /*#__PURE__*/ ns(\"NMTOKEN\");\nexport const Name = /*#__PURE__*/ ns(\"Name\");\nexport const NCName = /*#__PURE__*/ ns(\"NCName\");\nexport const integer = /*#__PURE__*/ ns(\"integer\");\nexport const nonPositiveInteger = /*#__PURE__*/ ns(\"nonPositiveInteger\");\nexport const negativeInteger = /*#__PURE__*/ ns(\"negativeInteger\");\nexport const xsdlong = /*#__PURE__*/ ns(\"long\");\nexport const xsdint = /*#__PURE__*/ ns(\"int\");\nexport const xsdshort = /*#__PURE__*/ ns(\"short\");\nexport const xsdbyte = /*#__PURE__*/ ns(\"byte\");\nexport const nonNegativeInteger = /*#__PURE__*/ ns(\"nonNegativeInteger\");\nexport const unsignedLong = /*#__PURE__*/ ns(\"unsignedLong\");\nexport const unsignedInt = /*#__PURE__*/ ns(\"unsignedInt\");\nexport const unsignedShort = /*#__PURE__*/ ns(\"unsignedShort\");\nexport const unsignedByte = /*#__PURE__*/ ns(\"unsignedByte\");\nexport const positiveInteger = /*#__PURE__*/ ns(\"positiveInteger\");\nexport const yearMonthDuration = /*#__PURE__*/ ns(\"yearMonthDuration\");\nexport const dayTimeDuration = /*#__PURE__*/ ns(\"dayTimeDuration\");\nexport const dateTimeStamp = /*#__PURE__*/ ns(\"dateTimeStamp\");\n/* Properties */\n/* Other terms */\n","var sparkMd5 = {\n exports: {}\n};\n\n(function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })((function(undefined$1) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined$1) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n static create(file, callback) {\n const instance = new FileChecksum(file);\n instance.create(callback);\n }\n constructor(file) {\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n create(callback) {\n this.callback = callback;\n this.md5Buffer = new SparkMD5.ArrayBuffer;\n this.fileReader = new FileReader;\n this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n this.readNextChunk();\n }\n fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n const binaryDigest = this.md5Buffer.end(true);\n const base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n fileReaderDidError(event) {\n this.callback(`Error reading ${this.file.name}`);\n }\n readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n const start = this.chunkIndex * this.chunkSize;\n const end = Math.min(start + this.chunkSize, this.file.size);\n const bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n}\n\nfunction getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nfunction findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n const elements = root.querySelectorAll(selector);\n return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n const {disabled: disabled} = element;\n const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n const event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n}\n\nfunction toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n}\n\nclass BlobRecord {\n constructor(file, checksum, url) {\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n const csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n get status() {\n return this.xhr.status;\n }\n get response() {\n const {responseType: responseType, response: response} = this.xhr;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n const {response: response} = this;\n const {direct_upload: direct_upload} = response;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n }\n toJSON() {\n const result = {};\n for (const key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n}\n\nclass BlobUpload {\n constructor(blob) {\n this.blob = blob;\n this.file = blob.file;\n const {url: url, headers: headers} = blob.directUploadData;\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (const key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n requestDidLoad(event) {\n const {status: status, response: response} = this.xhr;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n constructor(file, url, delegate) {\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n }\n create(callback) {\n FileChecksum.create(this.file, ((error, checksum) => {\n if (error) {\n callback(error);\n return;\n }\n const blob = new BlobRecord(this.file, checksum, this.url);\n notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create((error => {\n if (error) {\n callback(error);\n } else {\n const upload = new BlobUpload(blob);\n notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create((error => {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n }));\n }\n }));\n }));\n }\n}\n\nfunction notify(object, methodName, ...messages) {\n if (object && typeof object[methodName] == \"function\") {\n return object[methodName](...messages);\n }\n}\n\nclass DirectUploadController {\n constructor(input, file) {\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n start(callback) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(((error, attributes) => {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n this.dispatch(\"end\");\n callback(error);\n }));\n }\n uploadRequestDidProgress(event) {\n const progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n get url() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n dispatch(name, detail = {}) {\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, `direct-upload:${name}`, {\n detail: detail\n });\n }\n dispatchError(error) {\n const event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n directUploadWillStoreFileWithXHR(xhr) {\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n constructor(form) {\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n }\n start(callback) {\n const controllers = this.createDirectUploadControllers();\n const startNextController = () => {\n const controller = controllers.shift();\n if (controller) {\n controller.start((error => {\n if (error) {\n callback(error);\n this.dispatch(\"end\");\n } else {\n startNextController();\n }\n }));\n } else {\n callback();\n this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n createDirectUploadControllers() {\n const controllers = [];\n this.inputs.forEach((input => {\n toArray(input.files).forEach((file => {\n const controller = new DirectUploadController(input, file);\n controllers.push(controller);\n }));\n }));\n return controllers;\n }\n dispatch(name, detail = {}) {\n return dispatchEvent(this.form, `direct-uploads:${name}`, {\n detail: detail\n });\n }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm, true);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n}\n\nfunction didClick(event) {\n const {target: target} = event;\n if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n submitButtonsByForm.set(target.form, target);\n }\n}\n\nfunction didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n}\n\nfunction handleFormSubmissionEvent(event) {\n const form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n const controller = new DirectUploadsController(form);\n const {inputs: inputs} = controller;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start((error => {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n }));\n }\n}\n\nfunction submitForm(form) {\n let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n const {disabled: disabled} = button;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n input.disabled = true;\n}\n\nfunction enable(input) {\n input.disabled = false;\n}\n\nfunction autostart() {\n if (window.ActiveStorage) {\n start();\n }\n}\n\nsetTimeout(autostart, 1);\n\nexport { DirectUpload, start };\n","import rdf, { PlainFactory, isTerm, isBlankNode } from '@ontologies/core';\n\nconst factory = new PlainFactory();\n/**\n * Generate a path?query combination for the given {action} and {payload}.\n *\n * @see {createActionIRI}\n * @see {createActionPair}\n *\n * @param action The path of the action.\n * @param payload\n */\nfunction actionIRI(action, payload) {\n const query = Object\n .entries(payload)\n .map(([k, v]) => [\n k,\n encodeURIComponent(isTerm(v) ? factory.toNQ(v) : v),\n ]);\n return `${action}?${new URLSearchParams(query).toString()}`;\n}\n/**\n * Create an action generator to easy in IRI generation.\n *\n * @see {actionIRI}\n * @see {createActionPair}\n * @param base - The base Namespace to which the action/payload is added.\n */\nconst createActionIRI = (base) => (action, payload) => base(actionIRI(action, payload));\n/**\n * Create a action creator with the store and namespace already bound.\n *\n * @param base - The namespace to which the action name should be appended.\n * @param store - The store where the action should be dispatched.\n *\n * @see {createActionPair}\n *\n * @example\n * const dispatch = createActionIRI(store, myNamespace);\n * store.actions.example = {\n * initialize: (iri: NamedNode) => dispatch('initialize', { iri })\n * };\n */\nconst createActionNS = (base, store) => {\n const actionNS = createActionIRI(base);\n return (action, payload) => store.exec(actionNS(action, payload));\n};\n/**\n * Create a dispatch-parse pair for use in middleware.\n *\n * @param base - The namespace to create actions on.\n * @param store - The store to dispatch actions on.\n */\nconst createActionPair = (base, store) => ({\n dispatch: createActionNS(base, store),\n parse: (action) => parseAction(action),\n});\n/**\n * Parse an action for its base IRI and parameters separated.\n *\n * Only the last value of each param is included, so duplicates are omitted.\n *\n * The param values are parsed and converted for n-quads syntax, otherwise their literal value is\n * used. The resulting {return.params} is not guaranteed to be correct with the given {ParamMap}, it\n * is for typing purposes only.\n */\nconst parseAction = (action) => {\n if (isBlankNode(action)) {\n return {\n action,\n base: action,\n params: {},\n };\n }\n const url = new URL(action.value);\n const params = {};\n url.searchParams.forEach((value, key) => {\n const t = decodeURIComponent(value);\n try {\n const parsedValue = rdf.termFromNQ(t);\n params[key] = (parsedValue !== null && parsedValue !== void 0 ? parsedValue : t);\n }\n catch (e) {\n params[key] = t;\n }\n });\n url.search = \"\";\n return {\n action,\n base: rdf.namedNode(url.toString()),\n params: params,\n };\n};\n\nexport { actionIRI, createActionIRI, createActionNS, createActionPair, parseAction };\n//# sourceMappingURL=index.js.map\n","import rdf from '@ontologies/core';\n\n/**\n * Transforms the {iri} to match what a browser would fetch for that IRI.\n *\n * Effectively the IRI without the fragment (#).\n */\nfunction docStr(iri) {\n const url = new URL(iri);\n url.hash = \"\";\n return url.toString();\n}\n/**\n * Transforms the {iri} to match what a browser would fetch for that IRI.\n *\n * Effectively the IRI without the fragment (#).\n */\nfunction doc(iri) {\n return rdf.namedNode(docStr(iri.value));\n}\n/**\n * Get the filename (with extension) from an IRI.\n *\n * @param iri - The IRI to get the filename from.\n * @param folder - The base folder to trim. Will be guessed if omitted.\n * @returns The filename with extension or an empty string if it has no filename.\n */\nfunction filenameStr(iri, folder) {\n const fqIRI = new URL(iri, \"http://example.com\");\n fqIRI.hash = \"\";\n const absoluteIRI = fqIRI.toString().replace(originStr(fqIRI.toString()), \"\");\n if (folder) {\n folder = folder.replace(new URL(folder, \"http://example.com\").origin, \"\");\n }\n const replace = folder || `${new URL(absoluteIRI, \"http://example.com\").pathname.split(\"/\").slice(0, -1).join(\"/\")}/`;\n const file = absoluteIRI.replace(replace, \"\");\n return file.includes(\"://\") ? file.replace(siteStr(file), \"\") : file;\n}\n/**\n * Get the filename (with extension) from an IRI.\n *\n * @param iri - The IRI to get the filename from.\n * @param folder - The base folder to trim. Will be guessed if omitted.\n * @returns The filename with extension or an empty string if it has no filename.\n */\nfunction filename(iri, folder) {\n var _a;\n return filenameStr(iri.value, (_a = folder) === null || _a === void 0 ? void 0 : _a.value);\n}\n/**\n * Get the origin of the {iri} without trailing slash\n */\nfunction originStr(iri) {\n return new URL(iri).origin;\n}\n/**\n * Get the origin of the {iri} without trailing slash\n */\nfunction origin(iri) {\n return rdf.namedNode(originStr(iri.value));\n}\n/**\n * Get the IRI of the directory containing {iri} or its parent if {iri} has a trailing slash.\n */\nfunction parentDirStr(iri) {\n const url = new URL(iri);\n const endIndex = url.pathname.endsWith(\"/\") ? -2 : -1;\n url.pathname = url.pathname.split(\"/\").slice(0, endIndex).join(\"/\");\n url.hash = \"\";\n url.search = \"\";\n return url.toString();\n}\n/**\n * Get the IRI of the directory containing {iri} or its parent if {iri} has a trailing slash.\n */\nfunction parentDir(iri) {\n return rdf.namedNode(parentDirStr(iri.value));\n}\n/**\n * Get the origin of the {iri} with trailing slash\n */\nfunction siteStr(iri) {\n return `${originStr(iri)}/`;\n}\n/**\n * Get the origin of the {iri} with trailing slash\n */\nfunction site(iri) {\n return rdf.namedNode(siteStr(iri.value));\n}\n/**\n * Get a term name for this {iri}.\n * This guesses a term name using either the fragment or a path segment. Has no preconception of\n * well-known ontologies.\n */\nfunction termStr(iri) {\n return iri.split(/[\\/#]/).pop().split(\"?\").shift() || \"\";\n}\n/**\n * Get a term name for this {iri}.\n * This guesses a term name using either the fragment or a path segment. Has no preconception of\n * well-known ontologies.\n */\nfunction term(iri) {\n return termStr(iri.value);\n}\n\nvar IRI = /*#__PURE__*/Object.freeze({\n __proto__: null,\n docStr: docStr,\n doc: doc,\n filenameStr: filenameStr,\n filename: filename,\n originStr: originStr,\n origin: origin,\n parentDirStr: parentDirStr,\n parentDir: parentDir,\n siteStr: siteStr,\n site: site,\n termStr: termStr,\n term: term\n});\n\nexport default IRI;\nexport { doc, docStr, filename, filenameStr, origin, originStr, parentDir, parentDirStr, site, siteStr, term, termStr };\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.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 || '').toLowerCase();\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim().toLowerCase();\n\n if (validType.charAt(0) === '.') {\n return fileName.toLowerCase().endsWith(validType);\n } else if (validType.endsWith('/*')) {\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};","/*!\n\tautosize 4.0.2\n\tlicense: MIT\n\thttp://www.jacklmoore.com/autosize\n*/\n(function (global, factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine(['module', 'exports'], factory);\n\t} else if (typeof exports !== \"undefined\") {\n\t\tfactory(module, exports);\n\t} else {\n\t\tvar mod = {\n\t\t\texports: {}\n\t\t};\n\t\tfactory(mod, mod.exports);\n\t\tglobal.autosize = mod.exports;\n\t}\n})(this, function (module, exports) {\n\t'use strict';\n\n\tvar map = typeof Map === \"function\" ? new Map() : function () {\n\t\tvar keys = [];\n\t\tvar values = [];\n\n\t\treturn {\n\t\t\thas: function has(key) {\n\t\t\t\treturn keys.indexOf(key) > -1;\n\t\t\t},\n\t\t\tget: function get(key) {\n\t\t\t\treturn values[keys.indexOf(key)];\n\t\t\t},\n\t\t\tset: function set(key, value) {\n\t\t\t\tif (keys.indexOf(key) === -1) {\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t\tvalues.push(value);\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelete: function _delete(key) {\n\t\t\t\tvar index = keys.indexOf(key);\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tkeys.splice(index, 1);\n\t\t\t\t\tvalues.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}();\n\n\tvar createEvent = function createEvent(name) {\n\t\treturn new Event(name, { bubbles: true });\n\t};\n\ttry {\n\t\tnew Event('test');\n\t} catch (e) {\n\t\t// IE does not support `new Event()`\n\t\tcreateEvent = function createEvent(name) {\n\t\t\tvar evt = document.createEvent('Event');\n\t\t\tevt.initEvent(name, true, false);\n\t\t\treturn evt;\n\t\t};\n\t}\n\n\tfunction assign(ta) {\n\t\tif (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;\n\n\t\tvar heightOffset = null;\n\t\tvar clientWidth = null;\n\t\tvar cachedHeight = null;\n\n\t\tfunction init() {\n\t\t\tvar style = window.getComputedStyle(ta, null);\n\n\t\t\tif (style.resize === 'vertical') {\n\t\t\t\tta.style.resize = 'none';\n\t\t\t} else if (style.resize === 'both') {\n\t\t\t\tta.style.resize = 'horizontal';\n\t\t\t}\n\n\t\t\tif (style.boxSizing === 'content-box') {\n\t\t\t\theightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));\n\t\t\t} else {\n\t\t\t\theightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n\t\t\t}\n\t\t\t// Fix when a textarea is not on document body and heightOffset is Not a Number\n\t\t\tif (isNaN(heightOffset)) {\n\t\t\t\theightOffset = 0;\n\t\t\t}\n\n\t\t\tupdate();\n\t\t}\n\n\t\tfunction changeOverflow(value) {\n\t\t\t{\n\t\t\t\t// Chrome/Safari-specific fix:\n\t\t\t\t// When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space\n\t\t\t\t// made available by removing the scrollbar. The following forces the necessary text reflow.\n\t\t\t\tvar width = ta.style.width;\n\t\t\t\tta.style.width = '0px';\n\t\t\t\t// Force reflow:\n\t\t\t\t/* jshint ignore:start */\n\t\t\t\tta.offsetWidth;\n\t\t\t\t/* jshint ignore:end */\n\t\t\t\tta.style.width = width;\n\t\t\t}\n\n\t\t\tta.style.overflowY = value;\n\t\t}\n\n\t\tfunction getParentOverflows(el) {\n\t\t\tvar arr = [];\n\n\t\t\twhile (el && el.parentNode && el.parentNode instanceof Element) {\n\t\t\t\tif (el.parentNode.scrollTop) {\n\t\t\t\t\tarr.push({\n\t\t\t\t\t\tnode: el.parentNode,\n\t\t\t\t\t\tscrollTop: el.parentNode.scrollTop\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tel = el.parentNode;\n\t\t\t}\n\n\t\t\treturn arr;\n\t\t}\n\n\t\tfunction resize() {\n\t\t\tif (ta.scrollHeight === 0) {\n\t\t\t\t// If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar overflows = getParentOverflows(ta);\n\t\t\tvar docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)\n\n\t\t\tta.style.height = '';\n\t\t\tta.style.height = ta.scrollHeight + heightOffset + 'px';\n\n\t\t\t// used to check if an update is actually necessary on window.resize\n\t\t\tclientWidth = ta.clientWidth;\n\n\t\t\t// prevents scroll-position jumping\n\t\t\toverflows.forEach(function (el) {\n\t\t\t\tel.node.scrollTop = el.scrollTop;\n\t\t\t});\n\n\t\t\tif (docTop) {\n\t\t\t\tdocument.documentElement.scrollTop = docTop;\n\t\t\t}\n\t\t}\n\n\t\tfunction update() {\n\t\t\tresize();\n\n\t\t\tvar styleHeight = Math.round(parseFloat(ta.style.height));\n\t\t\tvar computed = window.getComputedStyle(ta, null);\n\n\t\t\t// Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box\n\t\t\tvar actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;\n\n\t\t\t// The actual height not matching the style height (set via the resize method) indicates that \n\t\t\t// the max-height has been exceeded, in which case the overflow should be allowed.\n\t\t\tif (actualHeight < styleHeight) {\n\t\t\t\tif (computed.overflowY === 'hidden') {\n\t\t\t\t\tchangeOverflow('scroll');\n\t\t\t\t\tresize();\n\t\t\t\t\tactualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.\n\t\t\t\tif (computed.overflowY !== 'hidden') {\n\t\t\t\t\tchangeOverflow('hidden');\n\t\t\t\t\tresize();\n\t\t\t\t\tactualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (cachedHeight !== actualHeight) {\n\t\t\t\tcachedHeight = actualHeight;\n\t\t\t\tvar evt = createEvent('autosize:resized');\n\t\t\t\ttry {\n\t\t\t\t\tta.dispatchEvent(evt);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Firefox will throw an error on dispatchEvent for a detached element\n\t\t\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=889376\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar pageResize = function pageResize() {\n\t\t\tif (ta.clientWidth !== clientWidth) {\n\t\t\t\tupdate();\n\t\t\t}\n\t\t};\n\n\t\tvar destroy = function (style) {\n\t\t\twindow.removeEventListener('resize', pageResize, false);\n\t\t\tta.removeEventListener('input', update, false);\n\t\t\tta.removeEventListener('keyup', update, false);\n\t\t\tta.removeEventListener('autosize:destroy', destroy, false);\n\t\t\tta.removeEventListener('autosize:update', update, false);\n\n\t\t\tObject.keys(style).forEach(function (key) {\n\t\t\t\tta.style[key] = style[key];\n\t\t\t});\n\n\t\t\tmap.delete(ta);\n\t\t}.bind(ta, {\n\t\t\theight: ta.style.height,\n\t\t\tresize: ta.style.resize,\n\t\t\toverflowY: ta.style.overflowY,\n\t\t\toverflowX: ta.style.overflowX,\n\t\t\twordWrap: ta.style.wordWrap\n\t\t});\n\n\t\tta.addEventListener('autosize:destroy', destroy, false);\n\n\t\t// IE9 does not fire onpropertychange or oninput for deletions,\n\t\t// so binding to onkeyup to catch most of those events.\n\t\t// There is no way that I know of to detect something like 'cut' in IE9.\n\t\tif ('onpropertychange' in ta && 'oninput' in ta) {\n\t\t\tta.addEventListener('keyup', update, false);\n\t\t}\n\n\t\twindow.addEventListener('resize', pageResize, false);\n\t\tta.addEventListener('input', update, false);\n\t\tta.addEventListener('autosize:update', update, false);\n\t\tta.style.overflowX = 'hidden';\n\t\tta.style.wordWrap = 'break-word';\n\n\t\tmap.set(ta, {\n\t\t\tdestroy: destroy,\n\t\t\tupdate: update\n\t\t});\n\n\t\tinit();\n\t}\n\n\tfunction destroy(ta) {\n\t\tvar methods = map.get(ta);\n\t\tif (methods) {\n\t\t\tmethods.destroy();\n\t\t}\n\t}\n\n\tfunction update(ta) {\n\t\tvar methods = map.get(ta);\n\t\tif (methods) {\n\t\t\tmethods.update();\n\t\t}\n\t}\n\n\tvar autosize = null;\n\n\t// Do nothing in Node.js environment and IE8 (or lower)\n\tif (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {\n\t\tautosize = function autosize(el) {\n\t\t\treturn el;\n\t\t};\n\t\tautosize.destroy = function (el) {\n\t\t\treturn el;\n\t\t};\n\t\tautosize.update = function (el) {\n\t\t\treturn el;\n\t\t};\n\t} else {\n\t\tautosize = function autosize(el, options) {\n\t\t\tif (el) {\n\t\t\t\tArray.prototype.forEach.call(el.length ? el : [el], function (x) {\n\t\t\t\t\treturn assign(x, options);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn el;\n\t\t};\n\t\tautosize.destroy = function (el) {\n\t\t\tif (el) {\n\t\t\t\tArray.prototype.forEach.call(el.length ? el : [el], destroy);\n\t\t\t}\n\t\t\treturn el;\n\t\t};\n\t\tautosize.update = function (el) {\n\t\t\tif (el) {\n\t\t\t\tArray.prototype.forEach.call(el.length ? el : [el], update);\n\t\t\t}\n\t\t\treturn el;\n\t\t};\n\t}\n\n\texports.default = autosize;\n\tmodule.exports = exports['default'];\n});","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n if (err) {\n throw err\n }\n}\n","module.exports = {};\n","\"use strict\";\n/*exported ndjsonStream*/\n\nvar namespace = require('can-namespace');\n\nvar ndjsonStream = function(response) {\n // For cancellation\n var is_reader, cancellationRequest = false;\n return new ReadableStream({\n start: function(controller) {\n var reader = response.getReader();\n is_reader = reader;\n var decoder = new TextDecoder();\n var data_buf = \"\";\n\n reader.read().then(function processResult(result) {\n if (result.done) {\n if (cancellationRequest) {\n // Immediately exit\n return;\n }\n\n data_buf = data_buf.trim();\n if (data_buf.length !== 0) {\n try {\n var data_l = JSON.parse(data_buf);\n controller.enqueue(data_l);\n } catch(e) {\n controller.error(e);\n return;\n }\n }\n controller.close();\n return;\n }\n\n var data = decoder.decode(result.value, {stream: true});\n data_buf += data;\n var lines = data_buf.split(\"\\n\");\n for(var i = 0; i < lines.length - 1; ++i) {\n var l = lines[i].trim();\n if (l.length > 0) {\n try {\n var data_line = JSON.parse(l);\n controller.enqueue(data_line);\n } catch(e) {\n controller.error(e);\n cancellationRequest = true;\n reader.cancel();\n return;\n }\n }\n }\n data_buf = lines[lines.length-1];\n\n return reader.read().then(processResult);\n });\n\n },\n cancel: function(reason) {\n console.log(\"Cancel registered due to \", reason);\n cancellationRequest = true;\n is_reader.cancel();\n }\n });\n};\n\nmodule.exports = namespace.ndjsonStream = ndjsonStream;\n","/*! clipboard-copy. MIT License. Feross Aboukhadijeh */\n/* global DOMException */\n\nmodule.exports = clipboardCopy\n\nfunction makeError () {\n return new DOMException('The request is not allowed', 'NotAllowedError')\n}\n\nasync function copyClipboardApi (text) {\n // Use the Async Clipboard API when available. Requires a secure browsing\n // context (i.e. HTTPS)\n if (!navigator.clipboard) {\n throw makeError()\n }\n return navigator.clipboard.writeText(text)\n}\n\nasync function copyExecCommand (text) {\n // Put the text to copy into a \n const span = document.createElement('span')\n span.textContent = text\n\n // Preserve consecutive spaces and newlines\n span.style.whiteSpace = 'pre'\n span.style.webkitUserSelect = 'auto'\n span.style.userSelect = 'all'\n\n // Add the to the page\n document.body.appendChild(span)\n\n // Make a selection object representing the range of text selected by the user\n const selection = window.getSelection()\n const range = window.document.createRange()\n selection.removeAllRanges()\n range.selectNode(span)\n selection.addRange(range)\n\n // Copy text to the clipboard\n let success = false\n try {\n success = window.document.execCommand('copy')\n } finally {\n // Cleanup\n selection.removeAllRanges()\n window.document.body.removeChild(span)\n }\n\n if (!success) throw makeError()\n}\n\nasync function clipboardCopy (text) {\n try {\n await copyClipboardApi(text)\n } catch (err) {\n // ...Otherwise, use document.execCommand() fallback\n try {\n await copyExecCommand(text)\n } catch (err2) {\n throw (err2 || err || makeError())\n }\n }\n}\n","function toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\nexport default function () {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n","// This code has been refactored for 140 bytes\n// You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js\nvar computedStyle = function (el, prop, getComputedStyle) {\n getComputedStyle = window.getComputedStyle;\n\n // In one fell swoop\n return (\n // If we have getComputedStyle\n getComputedStyle ?\n // Query it\n // TODO: From CSS-Query notes, we might need (node, null) for FF\n getComputedStyle(el) :\n\n // Otherwise, we are in IE and use currentStyle\n el.currentStyle\n )[\n // Switch to camelCase for CSSOM\n // DEV: Grabbed from jQuery\n // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194\n // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597\n prop.replace(/-(\\w)/gi, function (word, letter) {\n return letter.toUpperCase();\n })\n ];\n};\n\nmodule.exports = computedStyle;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","'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';\n\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var arrA = isArray(a)\n , arrB = isArray(b)\n , i\n , length\n , key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length)\n return false;\n\n for (i = length; i-- !== 0;)\n if (!hasProp.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n return a!==a && b!==b;\n};\n","var fa=function(i){return fa[i.replace(/-./g,function(x){return x.substr(1).toUpperCase()})]};fa.glass=\"\\uf000\";fa.music=\"\\uf001\";fa.search=\"\\uf002\";fa.envelopeO=\"\\uf003\";fa.heart=\"\\uf004\";fa.star=\"\\uf005\";fa.starO=\"\\uf006\";fa.user=\"\\uf007\";fa.film=\"\\uf008\";fa.thLarge=\"\\uf009\";fa.th=\"\\uf00a\";fa.thList=\"\\uf00b\";fa.check=\"\\uf00c\";fa.remove=\"\\uf00d\";fa.close=\"\\uf00d\";fa.times=\"\\uf00d\";fa.searchPlus=\"\\uf00e\";fa.searchMinus=\"\\uf010\";fa.powerOff=\"\\uf011\";fa.signal=\"\\uf012\";fa.gear=\"\\uf013\";fa.cog=\"\\uf013\";fa.trashO=\"\\uf014\";fa.home=\"\\uf015\";fa.fileO=\"\\uf016\";fa.clockO=\"\\uf017\";fa.road=\"\\uf018\";fa.download=\"\\uf019\";fa.arrowCircleODown=\"\\uf01a\";fa.arrowCircleOUp=\"\\uf01b\";fa.inbox=\"\\uf01c\";fa.playCircleO=\"\\uf01d\";fa.rotateRight=\"\\uf01e\";fa.repeat=\"\\uf01e\";fa.refresh=\"\\uf021\";fa.listAlt=\"\\uf022\";fa.lock=\"\\uf023\";fa.flag=\"\\uf024\";fa.headphones=\"\\uf025\";fa.volumeOff=\"\\uf026\";fa.volumeDown=\"\\uf027\";fa.volumeUp=\"\\uf028\";fa.qrcode=\"\\uf029\";fa.barcode=\"\\uf02a\";fa.tag=\"\\uf02b\";fa.tags=\"\\uf02c\";fa.book=\"\\uf02d\";fa.bookmark=\"\\uf02e\";fa.print=\"\\uf02f\";fa.camera=\"\\uf030\";fa.font=\"\\uf031\";fa.bold=\"\\uf032\";fa.italic=\"\\uf033\";fa.textHeight=\"\\uf034\";fa.textWidth=\"\\uf035\";fa.alignLeft=\"\\uf036\";fa.alignCenter=\"\\uf037\";fa.alignRight=\"\\uf038\";fa.alignJustify=\"\\uf039\";fa.list=\"\\uf03a\";fa.dedent=\"\\uf03b\";fa.outdent=\"\\uf03b\";fa.indent=\"\\uf03c\";fa.videoCamera=\"\\uf03d\";fa.photo=\"\\uf03e\";fa.image=\"\\uf03e\";fa.pictureO=\"\\uf03e\";fa.pencil=\"\\uf040\";fa.mapMarker=\"\\uf041\";fa.adjust=\"\\uf042\";fa.tint=\"\\uf043\";fa.edit=\"\\uf044\";fa.pencilSquareO=\"\\uf044\";fa.shareSquareO=\"\\uf045\";fa.checkSquareO=\"\\uf046\";fa.arrows=\"\\uf047\";fa.stepBackward=\"\\uf048\";fa.fastBackward=\"\\uf049\";fa.backward=\"\\uf04a\";fa.play=\"\\uf04b\";fa.pause=\"\\uf04c\";fa.stop=\"\\uf04d\";fa.forward=\"\\uf04e\";fa.fastForward=\"\\uf050\";fa.stepForward=\"\\uf051\";fa.eject=\"\\uf052\";fa.chevronLeft=\"\\uf053\";fa.chevronRight=\"\\uf054\";fa.plusCircle=\"\\uf055\";fa.minusCircle=\"\\uf056\";fa.timesCircle=\"\\uf057\";fa.checkCircle=\"\\uf058\";fa.questionCircle=\"\\uf059\";fa.infoCircle=\"\\uf05a\";fa.crosshairs=\"\\uf05b\";fa.timesCircleO=\"\\uf05c\";fa.checkCircleO=\"\\uf05d\";fa.ban=\"\\uf05e\";fa.arrowLeft=\"\\uf060\";fa.arrowRight=\"\\uf061\";fa.arrowUp=\"\\uf062\";fa.arrowDown=\"\\uf063\";fa.mailForward=\"\\uf064\";fa.share=\"\\uf064\";fa.expand=\"\\uf065\";fa.compress=\"\\uf066\";fa.plus=\"\\uf067\";fa.minus=\"\\uf068\";fa.asterisk=\"\\uf069\";fa.exclamationCircle=\"\\uf06a\";fa.gift=\"\\uf06b\";fa.leaf=\"\\uf06c\";fa.fire=\"\\uf06d\";fa.eye=\"\\uf06e\";fa.eyeSlash=\"\\uf070\";fa.warning=\"\\uf071\";fa.exclamationTriangle=\"\\uf071\";fa.plane=\"\\uf072\";fa.calendar=\"\\uf073\";fa.random=\"\\uf074\";fa.comment=\"\\uf075\";fa.magnet=\"\\uf076\";fa.chevronUp=\"\\uf077\";fa.chevronDown=\"\\uf078\";fa.retweet=\"\\uf079\";fa.shoppingCart=\"\\uf07a\";fa.folder=\"\\uf07b\";fa.folderOpen=\"\\uf07c\";fa.arrowsV=\"\\uf07d\";fa.arrowsH=\"\\uf07e\";fa.barChartO=\"\\uf080\";fa.barChart=\"\\uf080\";fa.twitterSquare=\"\\uf081\";fa.facebookSquare=\"\\uf082\";fa.cameraRetro=\"\\uf083\";fa.key=\"\\uf084\";fa.gears=\"\\uf085\";fa.cogs=\"\\uf085\";fa.comments=\"\\uf086\";fa.thumbsOUp=\"\\uf087\";fa.thumbsODown=\"\\uf088\";fa.starHalf=\"\\uf089\";fa.heartO=\"\\uf08a\";fa.signOut=\"\\uf08b\";fa.linkedinSquare=\"\\uf08c\";fa.thumbTack=\"\\uf08d\";fa.externalLink=\"\\uf08e\";fa.signIn=\"\\uf090\";fa.trophy=\"\\uf091\";fa.githubSquare=\"\\uf092\";fa.upload=\"\\uf093\";fa.lemonO=\"\\uf094\";fa.phone=\"\\uf095\";fa.squareO=\"\\uf096\";fa.bookmarkO=\"\\uf097\";fa.phoneSquare=\"\\uf098\";fa.twitter=\"\\uf099\";fa.facebookF=\"\\uf09a\";fa.facebook=\"\\uf09a\";fa.github=\"\\uf09b\";fa.unlock=\"\\uf09c\";fa.creditCard=\"\\uf09d\";fa.feed=\"\\uf09e\";fa.rss=\"\\uf09e\";fa.hddO=\"\\uf0a0\";fa.bullhorn=\"\\uf0a1\";fa.bell=\"\\uf0f3\";fa.certificate=\"\\uf0a3\";fa.handORight=\"\\uf0a4\";fa.handOLeft=\"\\uf0a5\";fa.handOUp=\"\\uf0a6\";fa.handODown=\"\\uf0a7\";fa.arrowCircleLeft=\"\\uf0a8\";fa.arrowCircleRight=\"\\uf0a9\";fa.arrowCircleUp=\"\\uf0aa\";fa.arrowCircleDown=\"\\uf0ab\";fa.globe=\"\\uf0ac\";fa.wrench=\"\\uf0ad\";fa.tasks=\"\\uf0ae\";fa.filter=\"\\uf0b0\";fa.briefcase=\"\\uf0b1\";fa.arrowsAlt=\"\\uf0b2\";fa.group=\"\\uf0c0\";fa.users=\"\\uf0c0\";fa.chain=\"\\uf0c1\";fa.link=\"\\uf0c1\";fa.cloud=\"\\uf0c2\";fa.flask=\"\\uf0c3\";fa.cut=\"\\uf0c4\";fa.scissors=\"\\uf0c4\";fa.copy=\"\\uf0c5\";fa.filesO=\"\\uf0c5\";fa.paperclip=\"\\uf0c6\";fa.save=\"\\uf0c7\";fa.floppyO=\"\\uf0c7\";fa.square=\"\\uf0c8\";fa.navicon=\"\\uf0c9\";fa.reorder=\"\\uf0c9\";fa.bars=\"\\uf0c9\";fa.listUl=\"\\uf0ca\";fa.listOl=\"\\uf0cb\";fa.strikethrough=\"\\uf0cc\";fa.underline=\"\\uf0cd\";fa.table=\"\\uf0ce\";fa.magic=\"\\uf0d0\";fa.truck=\"\\uf0d1\";fa.pinterest=\"\\uf0d2\";fa.pinterestSquare=\"\\uf0d3\";fa.googlePlusSquare=\"\\uf0d4\";fa.googlePlus=\"\\uf0d5\";fa.money=\"\\uf0d6\";fa.caretDown=\"\\uf0d7\";fa.caretUp=\"\\uf0d8\";fa.caretLeft=\"\\uf0d9\";fa.caretRight=\"\\uf0da\";fa.columns=\"\\uf0db\";fa.unsorted=\"\\uf0dc\";fa.sort=\"\\uf0dc\";fa.sortDown=\"\\uf0dd\";fa.sortDesc=\"\\uf0dd\";fa.sortUp=\"\\uf0de\";fa.sortAsc=\"\\uf0de\";fa.envelope=\"\\uf0e0\";fa.linkedin=\"\\uf0e1\";fa.rotateLeft=\"\\uf0e2\";fa.undo=\"\\uf0e2\";fa.legal=\"\\uf0e3\";fa.gavel=\"\\uf0e3\";fa.dashboard=\"\\uf0e4\";fa.tachometer=\"\\uf0e4\";fa.commentO=\"\\uf0e5\";fa.commentsO=\"\\uf0e6\";fa.flash=\"\\uf0e7\";fa.bolt=\"\\uf0e7\";fa.sitemap=\"\\uf0e8\";fa.umbrella=\"\\uf0e9\";fa.paste=\"\\uf0ea\";fa.clipboard=\"\\uf0ea\";fa.lightbulbO=\"\\uf0eb\";fa.exchange=\"\\uf0ec\";fa.cloudDownload=\"\\uf0ed\";fa.cloudUpload=\"\\uf0ee\";fa.userMd=\"\\uf0f0\";fa.stethoscope=\"\\uf0f1\";fa.suitcase=\"\\uf0f2\";fa.bellO=\"\\uf0a2\";fa.coffee=\"\\uf0f4\";fa.cutlery=\"\\uf0f5\";fa.fileTextO=\"\\uf0f6\";fa.buildingO=\"\\uf0f7\";fa.hospitalO=\"\\uf0f8\";fa.ambulance=\"\\uf0f9\";fa.medkit=\"\\uf0fa\";fa.fighterJet=\"\\uf0fb\";fa.beer=\"\\uf0fc\";fa.hSquare=\"\\uf0fd\";fa.plusSquare=\"\\uf0fe\";fa.angleDoubleLeft=\"\\uf100\";fa.angleDoubleRight=\"\\uf101\";fa.angleDoubleUp=\"\\uf102\";fa.angleDoubleDown=\"\\uf103\";fa.angleLeft=\"\\uf104\";fa.angleRight=\"\\uf105\";fa.angleUp=\"\\uf106\";fa.angleDown=\"\\uf107\";fa.desktop=\"\\uf108\";fa.laptop=\"\\uf109\";fa.tablet=\"\\uf10a\";fa.mobilePhone=\"\\uf10b\";fa.mobile=\"\\uf10b\";fa.circleO=\"\\uf10c\";fa.quoteLeft=\"\\uf10d\";fa.quoteRight=\"\\uf10e\";fa.spinner=\"\\uf110\";fa.circle=\"\\uf111\";fa.mailReply=\"\\uf112\";fa.reply=\"\\uf112\";fa.githubAlt=\"\\uf113\";fa.folderO=\"\\uf114\";fa.folderOpenO=\"\\uf115\";fa.smileO=\"\\uf118\";fa.frownO=\"\\uf119\";fa.mehO=\"\\uf11a\";fa.gamepad=\"\\uf11b\";fa.keyboardO=\"\\uf11c\";fa.flagO=\"\\uf11d\";fa.flagCheckered=\"\\uf11e\";fa.terminal=\"\\uf120\";fa.code=\"\\uf121\";fa.mailReplyAll=\"\\uf122\";fa.replyAll=\"\\uf122\";fa.starHalfEmpty=\"\\uf123\";fa.starHalfFull=\"\\uf123\";fa.starHalfO=\"\\uf123\";fa.locationArrow=\"\\uf124\";fa.crop=\"\\uf125\";fa.codeFork=\"\\uf126\";fa.unlink=\"\\uf127\";fa.chainBroken=\"\\uf127\";fa.question=\"\\uf128\";fa.info=\"\\uf129\";fa.exclamation=\"\\uf12a\";fa.superscript=\"\\uf12b\";fa.subscript=\"\\uf12c\";fa.eraser=\"\\uf12d\";fa.puzzlePiece=\"\\uf12e\";fa.microphone=\"\\uf130\";fa.microphoneSlash=\"\\uf131\";fa.shield=\"\\uf132\";fa.calendarO=\"\\uf133\";fa.fireExtinguisher=\"\\uf134\";fa.rocket=\"\\uf135\";fa.maxcdn=\"\\uf136\";fa.chevronCircleLeft=\"\\uf137\";fa.chevronCircleRight=\"\\uf138\";fa.chevronCircleUp=\"\\uf139\";fa.chevronCircleDown=\"\\uf13a\";fa.html5=\"\\uf13b\";fa.css3=\"\\uf13c\";fa.anchor=\"\\uf13d\";fa.unlockAlt=\"\\uf13e\";fa.bullseye=\"\\uf140\";fa.ellipsisH=\"\\uf141\";fa.ellipsisV=\"\\uf142\";fa.rssSquare=\"\\uf143\";fa.playCircle=\"\\uf144\";fa.ticket=\"\\uf145\";fa.minusSquare=\"\\uf146\";fa.minusSquareO=\"\\uf147\";fa.levelUp=\"\\uf148\";fa.levelDown=\"\\uf149\";fa.checkSquare=\"\\uf14a\";fa.pencilSquare=\"\\uf14b\";fa.externalLinkSquare=\"\\uf14c\";fa.shareSquare=\"\\uf14d\";fa.compass=\"\\uf14e\";fa.toggleDown=\"\\uf150\";fa.caretSquareODown=\"\\uf150\";fa.toggleUp=\"\\uf151\";fa.caretSquareOUp=\"\\uf151\";fa.toggleRight=\"\\uf152\";fa.caretSquareORight=\"\\uf152\";fa.euro=\"\\uf153\";fa.eur=\"\\uf153\";fa.gbp=\"\\uf154\";fa.dollar=\"\\uf155\";fa.usd=\"\\uf155\";fa.rupee=\"\\uf156\";fa.inr=\"\\uf156\";fa.cny=\"\\uf157\";fa.rmb=\"\\uf157\";fa.yen=\"\\uf157\";fa.jpy=\"\\uf157\";fa.ruble=\"\\uf158\";fa.rouble=\"\\uf158\";fa.rub=\"\\uf158\";fa.won=\"\\uf159\";fa.krw=\"\\uf159\";fa.bitcoin=\"\\uf15a\";fa.btc=\"\\uf15a\";fa.file=\"\\uf15b\";fa.fileText=\"\\uf15c\";fa.sortAlphaAsc=\"\\uf15d\";fa.sortAlphaDesc=\"\\uf15e\";fa.sortAmountAsc=\"\\uf160\";fa.sortAmountDesc=\"\\uf161\";fa.sortNumericAsc=\"\\uf162\";fa.sortNumericDesc=\"\\uf163\";fa.thumbsUp=\"\\uf164\";fa.thumbsDown=\"\\uf165\";fa.youtubeSquare=\"\\uf166\";fa.youtube=\"\\uf167\";fa.xing=\"\\uf168\";fa.xingSquare=\"\\uf169\";fa.youtubePlay=\"\\uf16a\";fa.dropbox=\"\\uf16b\";fa.stackOverflow=\"\\uf16c\";fa.instagram=\"\\uf16d\";fa.flickr=\"\\uf16e\";fa.adn=\"\\uf170\";fa.bitbucket=\"\\uf171\";fa.bitbucketSquare=\"\\uf172\";fa.tumblr=\"\\uf173\";fa.tumblrSquare=\"\\uf174\";fa.longArrowDown=\"\\uf175\";fa.longArrowUp=\"\\uf176\";fa.longArrowLeft=\"\\uf177\";fa.longArrowRight=\"\\uf178\";fa.apple=\"\\uf179\";fa.windows=\"\\uf17a\";fa.android=\"\\uf17b\";fa.linux=\"\\uf17c\";fa.dribbble=\"\\uf17d\";fa.skype=\"\\uf17e\";fa.foursquare=\"\\uf180\";fa.trello=\"\\uf181\";fa.female=\"\\uf182\";fa.male=\"\\uf183\";fa.gittip=\"\\uf184\";fa.gratipay=\"\\uf184\";fa.sunO=\"\\uf185\";fa.moonO=\"\\uf186\";fa.archive=\"\\uf187\";fa.bug=\"\\uf188\";fa.vk=\"\\uf189\";fa.weibo=\"\\uf18a\";fa.renren=\"\\uf18b\";fa.pagelines=\"\\uf18c\";fa.stackExchange=\"\\uf18d\";fa.arrowCircleORight=\"\\uf18e\";fa.arrowCircleOLeft=\"\\uf190\";fa.toggleLeft=\"\\uf191\";fa.caretSquareOLeft=\"\\uf191\";fa.dotCircleO=\"\\uf192\";fa.wheelchair=\"\\uf193\";fa.vimeoSquare=\"\\uf194\";fa.turkishLira=\"\\uf195\";fa.try=\"\\uf195\";fa.plusSquareO=\"\\uf196\";fa.spaceShuttle=\"\\uf197\";fa.slack=\"\\uf198\";fa.envelopeSquare=\"\\uf199\";fa.wordpress=\"\\uf19a\";fa.openid=\"\\uf19b\";fa.institution=\"\\uf19c\";fa.bank=\"\\uf19c\";fa.university=\"\\uf19c\";fa.mortarBoard=\"\\uf19d\";fa.graduationCap=\"\\uf19d\";fa.yahoo=\"\\uf19e\";fa.google=\"\\uf1a0\";fa.reddit=\"\\uf1a1\";fa.redditSquare=\"\\uf1a2\";fa.stumbleuponCircle=\"\\uf1a3\";fa.stumbleupon=\"\\uf1a4\";fa.delicious=\"\\uf1a5\";fa.digg=\"\\uf1a6\";fa.piedPiperPp=\"\\uf1a7\";fa.piedPiperAlt=\"\\uf1a8\";fa.drupal=\"\\uf1a9\";fa.joomla=\"\\uf1aa\";fa.language=\"\\uf1ab\";fa.fax=\"\\uf1ac\";fa.building=\"\\uf1ad\";fa.child=\"\\uf1ae\";fa.paw=\"\\uf1b0\";fa.spoon=\"\\uf1b1\";fa.cube=\"\\uf1b2\";fa.cubes=\"\\uf1b3\";fa.behance=\"\\uf1b4\";fa.behanceSquare=\"\\uf1b5\";fa.steam=\"\\uf1b6\";fa.steamSquare=\"\\uf1b7\";fa.recycle=\"\\uf1b8\";fa.automobile=\"\\uf1b9\";fa.car=\"\\uf1b9\";fa.cab=\"\\uf1ba\";fa.taxi=\"\\uf1ba\";fa.tree=\"\\uf1bb\";fa.spotify=\"\\uf1bc\";fa.deviantart=\"\\uf1bd\";fa.soundcloud=\"\\uf1be\";fa.database=\"\\uf1c0\";fa.filePdfO=\"\\uf1c1\";fa.fileWordO=\"\\uf1c2\";fa.fileExcelO=\"\\uf1c3\";fa.filePowerpointO=\"\\uf1c4\";fa.filePhotoO=\"\\uf1c5\";fa.filePictureO=\"\\uf1c5\";fa.fileImageO=\"\\uf1c5\";fa.fileZipO=\"\\uf1c6\";fa.fileArchiveO=\"\\uf1c6\";fa.fileSoundO=\"\\uf1c7\";fa.fileAudioO=\"\\uf1c7\";fa.fileMovieO=\"\\uf1c8\";fa.fileVideoO=\"\\uf1c8\";fa.fileCodeO=\"\\uf1c9\";fa.vine=\"\\uf1ca\";fa.codepen=\"\\uf1cb\";fa.jsfiddle=\"\\uf1cc\";fa.lifeBouy=\"\\uf1cd\";fa.lifeBuoy=\"\\uf1cd\";fa.lifeSaver=\"\\uf1cd\";fa.support=\"\\uf1cd\";fa.lifeRing=\"\\uf1cd\";fa.circleONotch=\"\\uf1ce\";fa.ra=\"\\uf1d0\";fa.resistance=\"\\uf1d0\";fa.rebel=\"\\uf1d0\";fa.ge=\"\\uf1d1\";fa.empire=\"\\uf1d1\";fa.gitSquare=\"\\uf1d2\";fa.git=\"\\uf1d3\";fa.yCombinatorSquare=\"\\uf1d4\";fa.ycSquare=\"\\uf1d4\";fa.hackerNews=\"\\uf1d4\";fa.tencentWeibo=\"\\uf1d5\";fa.qq=\"\\uf1d6\";fa.wechat=\"\\uf1d7\";fa.weixin=\"\\uf1d7\";fa.send=\"\\uf1d8\";fa.paperPlane=\"\\uf1d8\";fa.sendO=\"\\uf1d9\";fa.paperPlaneO=\"\\uf1d9\";fa.history=\"\\uf1da\";fa.circleThin=\"\\uf1db\";fa.header=\"\\uf1dc\";fa.paragraph=\"\\uf1dd\";fa.sliders=\"\\uf1de\";fa.shareAlt=\"\\uf1e0\";fa.shareAltSquare=\"\\uf1e1\";fa.bomb=\"\\uf1e2\";fa.soccerBallO=\"\\uf1e3\";fa.futbolO=\"\\uf1e3\";fa.tty=\"\\uf1e4\";fa.binoculars=\"\\uf1e5\";fa.plug=\"\\uf1e6\";fa.slideshare=\"\\uf1e7\";fa.twitch=\"\\uf1e8\";fa.yelp=\"\\uf1e9\";fa.newspaperO=\"\\uf1ea\";fa.wifi=\"\\uf1eb\";fa.calculator=\"\\uf1ec\";fa.paypal=\"\\uf1ed\";fa.googleWallet=\"\\uf1ee\";fa.ccVisa=\"\\uf1f0\";fa.ccMastercard=\"\\uf1f1\";fa.ccDiscover=\"\\uf1f2\";fa.ccAmex=\"\\uf1f3\";fa.ccPaypal=\"\\uf1f4\";fa.ccStripe=\"\\uf1f5\";fa.bellSlash=\"\\uf1f6\";fa.bellSlashO=\"\\uf1f7\";fa.trash=\"\\uf1f8\";fa.copyright=\"\\uf1f9\";fa.at=\"\\uf1fa\";fa.eyedropper=\"\\uf1fb\";fa.paintBrush=\"\\uf1fc\";fa.birthdayCake=\"\\uf1fd\";fa.areaChart=\"\\uf1fe\";fa.pieChart=\"\\uf200\";fa.lineChart=\"\\uf201\";fa.lastfm=\"\\uf202\";fa.lastfmSquare=\"\\uf203\";fa.toggleOff=\"\\uf204\";fa.toggleOn=\"\\uf205\";fa.bicycle=\"\\uf206\";fa.bus=\"\\uf207\";fa.ioxhost=\"\\uf208\";fa.angellist=\"\\uf209\";fa.cc=\"\\uf20a\";fa.shekel=\"\\uf20b\";fa.sheqel=\"\\uf20b\";fa.ils=\"\\uf20b\";fa.meanpath=\"\\uf20c\";fa.buysellads=\"\\uf20d\";fa.connectdevelop=\"\\uf20e\";fa.dashcube=\"\\uf210\";fa.forumbee=\"\\uf211\";fa.leanpub=\"\\uf212\";fa.sellsy=\"\\uf213\";fa.shirtsinbulk=\"\\uf214\";fa.simplybuilt=\"\\uf215\";fa.skyatlas=\"\\uf216\";fa.cartPlus=\"\\uf217\";fa.cartArrowDown=\"\\uf218\";fa.diamond=\"\\uf219\";fa.ship=\"\\uf21a\";fa.userSecret=\"\\uf21b\";fa.motorcycle=\"\\uf21c\";fa.streetView=\"\\uf21d\";fa.heartbeat=\"\\uf21e\";fa.venus=\"\\uf221\";fa.mars=\"\\uf222\";fa.mercury=\"\\uf223\";fa.intersex=\"\\uf224\";fa.transgender=\"\\uf224\";fa.transgenderAlt=\"\\uf225\";fa.venusDouble=\"\\uf226\";fa.marsDouble=\"\\uf227\";fa.venusMars=\"\\uf228\";fa.marsStroke=\"\\uf229\";fa.marsStrokeV=\"\\uf22a\";fa.marsStrokeH=\"\\uf22b\";fa.neuter=\"\\uf22c\";fa.genderless=\"\\uf22d\";fa.facebookOfficial=\"\\uf230\";fa.pinterestP=\"\\uf231\";fa.whatsapp=\"\\uf232\";fa.server=\"\\uf233\";fa.userPlus=\"\\uf234\";fa.userTimes=\"\\uf235\";fa.hotel=\"\\uf236\";fa.bed=\"\\uf236\";fa.viacoin=\"\\uf237\";fa.train=\"\\uf238\";fa.subway=\"\\uf239\";fa.medium=\"\\uf23a\";fa.yc=\"\\uf23b\";fa.yCombinator=\"\\uf23b\";fa.optinMonster=\"\\uf23c\";fa.opencart=\"\\uf23d\";fa.expeditedssl=\"\\uf23e\";fa.battery4=\"\\uf240\";fa.battery=\"\\uf240\";fa.batteryFull=\"\\uf240\";fa.battery3=\"\\uf241\";fa.batteryThreeQuarters=\"\\uf241\";fa.battery2=\"\\uf242\";fa.batteryHalf=\"\\uf242\";fa.battery1=\"\\uf243\";fa.batteryQuarter=\"\\uf243\";fa.battery0=\"\\uf244\";fa.batteryEmpty=\"\\uf244\";fa.mousePointer=\"\\uf245\";fa.iCursor=\"\\uf246\";fa.objectGroup=\"\\uf247\";fa.objectUngroup=\"\\uf248\";fa.stickyNote=\"\\uf249\";fa.stickyNoteO=\"\\uf24a\";fa.ccJcb=\"\\uf24b\";fa.ccDinersClub=\"\\uf24c\";fa.clone=\"\\uf24d\";fa.balanceScale=\"\\uf24e\";fa.hourglassO=\"\\uf250\";fa.hourglass1=\"\\uf251\";fa.hourglassStart=\"\\uf251\";fa.hourglass2=\"\\uf252\";fa.hourglassHalf=\"\\uf252\";fa.hourglass3=\"\\uf253\";fa.hourglassEnd=\"\\uf253\";fa.hourglass=\"\\uf254\";fa.handGrabO=\"\\uf255\";fa.handRockO=\"\\uf255\";fa.handStopO=\"\\uf256\";fa.handPaperO=\"\\uf256\";fa.handScissorsO=\"\\uf257\";fa.handLizardO=\"\\uf258\";fa.handSpockO=\"\\uf259\";fa.handPointerO=\"\\uf25a\";fa.handPeaceO=\"\\uf25b\";fa.trademark=\"\\uf25c\";fa.registered=\"\\uf25d\";fa.creativeCommons=\"\\uf25e\";fa.gg=\"\\uf260\";fa.ggCircle=\"\\uf261\";fa.tripadvisor=\"\\uf262\";fa.odnoklassniki=\"\\uf263\";fa.odnoklassnikiSquare=\"\\uf264\";fa.getPocket=\"\\uf265\";fa.wikipediaW=\"\\uf266\";fa.safari=\"\\uf267\";fa.chrome=\"\\uf268\";fa.firefox=\"\\uf269\";fa.opera=\"\\uf26a\";fa.internetExplorer=\"\\uf26b\";fa.tv=\"\\uf26c\";fa.television=\"\\uf26c\";fa.contao=\"\\uf26d\";fa[\"500px\"]=\"\\uf26e\";fa.amazon=\"\\uf270\";fa.calendarPlusO=\"\\uf271\";fa.calendarMinusO=\"\\uf272\";fa.calendarTimesO=\"\\uf273\";fa.calendarCheckO=\"\\uf274\";fa.industry=\"\\uf275\";fa.mapPin=\"\\uf276\";fa.mapSigns=\"\\uf277\";fa.mapO=\"\\uf278\";fa.map=\"\\uf279\";fa.commenting=\"\\uf27a\";fa.commentingO=\"\\uf27b\";fa.houzz=\"\\uf27c\";fa.vimeo=\"\\uf27d\";fa.blackTie=\"\\uf27e\";fa.fonticons=\"\\uf280\";fa.redditAlien=\"\\uf281\";fa.edge=\"\\uf282\";fa.creditCardAlt=\"\\uf283\";fa.codiepie=\"\\uf284\";fa.modx=\"\\uf285\";fa.fortAwesome=\"\\uf286\";fa.usb=\"\\uf287\";fa.productHunt=\"\\uf288\";fa.mixcloud=\"\\uf289\";fa.scribd=\"\\uf28a\";fa.pauseCircle=\"\\uf28b\";fa.pauseCircleO=\"\\uf28c\";fa.stopCircle=\"\\uf28d\";fa.stopCircleO=\"\\uf28e\";fa.shoppingBag=\"\\uf290\";fa.shoppingBasket=\"\\uf291\";fa.hashtag=\"\\uf292\";fa.bluetooth=\"\\uf293\";fa.bluetoothB=\"\\uf294\";fa.percent=\"\\uf295\";fa.gitlab=\"\\uf296\";fa.wpbeginner=\"\\uf297\";fa.wpforms=\"\\uf298\";fa.envira=\"\\uf299\";fa.universalAccess=\"\\uf29a\";fa.wheelchairAlt=\"\\uf29b\";fa.questionCircleO=\"\\uf29c\";fa.blind=\"\\uf29d\";fa.audioDescription=\"\\uf29e\";fa.volumeControlPhone=\"\\uf2a0\";fa.braille=\"\\uf2a1\";fa.assistiveListeningSystems=\"\\uf2a2\";fa.aslInterpreting=\"\\uf2a3\";fa.americanSignLanguageInterpreting=\"\\uf2a3\";fa.deafness=\"\\uf2a4\";fa.hardOfHearing=\"\\uf2a4\";fa.deaf=\"\\uf2a4\";fa.glide=\"\\uf2a5\";fa.glideG=\"\\uf2a6\";fa.signing=\"\\uf2a7\";fa.signLanguage=\"\\uf2a7\";fa.lowVision=\"\\uf2a8\";fa.viadeo=\"\\uf2a9\";fa.viadeoSquare=\"\\uf2aa\";fa.snapchat=\"\\uf2ab\";fa.snapchatGhost=\"\\uf2ac\";fa.snapchatSquare=\"\\uf2ad\";fa.piedPiper=\"\\uf2ae\";fa.firstOrder=\"\\uf2b0\";fa.yoast=\"\\uf2b1\";fa.themeisle=\"\\uf2b2\";fa.googlePlusCircle=\"\\uf2b3\";fa.googlePlusOfficial=\"\\uf2b3\";fa.fa=\"\\uf2b4\";fa.fontAwesome=\"\\uf2b4\";fa.handshakeO=\"\\uf2b5\";fa.envelopeOpen=\"\\uf2b6\";fa.envelopeOpenO=\"\\uf2b7\";fa.linode=\"\\uf2b8\";fa.addressBook=\"\\uf2b9\";fa.addressBookO=\"\\uf2ba\";fa.vcard=\"\\uf2bb\";fa.addressCard=\"\\uf2bb\";fa.vcardO=\"\\uf2bc\";fa.addressCardO=\"\\uf2bc\";fa.userCircle=\"\\uf2bd\";fa.userCircleO=\"\\uf2be\";fa.userO=\"\\uf2c0\";fa.idBadge=\"\\uf2c1\";fa.driversLicense=\"\\uf2c2\";fa.idCard=\"\\uf2c2\";fa.driversLicenseO=\"\\uf2c3\";fa.idCardO=\"\\uf2c3\";fa.quora=\"\\uf2c4\";fa.freeCodeCamp=\"\\uf2c5\";fa.telegram=\"\\uf2c6\";fa.thermometer4=\"\\uf2c7\";fa.thermometer=\"\\uf2c7\";fa.thermometerFull=\"\\uf2c7\";fa.thermometer3=\"\\uf2c8\";fa.thermometerThreeQuarters=\"\\uf2c8\";fa.thermometer2=\"\\uf2c9\";fa.thermometerHalf=\"\\uf2c9\";fa.thermometer1=\"\\uf2ca\";fa.thermometerQuarter=\"\\uf2ca\";fa.thermometer0=\"\\uf2cb\";fa.thermometerEmpty=\"\\uf2cb\";fa.shower=\"\\uf2cc\";fa.bathtub=\"\\uf2cd\";fa.s15=\"\\uf2cd\";fa.bath=\"\\uf2cd\";fa.podcast=\"\\uf2ce\";fa.windowMaximize=\"\\uf2d0\";fa.windowMinimize=\"\\uf2d1\";fa.windowRestore=\"\\uf2d2\";fa.timesRectangle=\"\\uf2d3\";fa.windowClose=\"\\uf2d3\";fa.timesRectangleO=\"\\uf2d4\";fa.windowCloseO=\"\\uf2d4\";fa.bandcamp=\"\\uf2d5\";fa.grav=\"\\uf2d6\";fa.etsy=\"\\uf2d7\";fa.imdb=\"\\uf2d8\";fa.ravelry=\"\\uf2d9\";fa.eercast=\"\\uf2da\";fa.microchip=\"\\uf2db\";fa.snowflakeO=\"\\uf2dc\";fa.superpowers=\"\\uf2dd\";fa.wpexplorer=\"\\uf2de\";fa.meetup=\"\\uf2e0\";module.exports=fa;","import _extends from '@babel/runtime/helpers/esm/extends';\n\n/**\r\n * Actions represent the type of change to a location value.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#action\r\n */\nvar Action;\n\n(function (Action) {\n /**\r\n * A POP indicates a change to an arbitrary index in the history stack, such\r\n * as a back or forward navigation. It does not describe the direction of the\r\n * navigation, only that the current index changed.\r\n *\r\n * Note: This is the default action for newly created history objects.\r\n */\n Action[\"Pop\"] = \"POP\";\n /**\r\n * A PUSH indicates a new entry being added to the history stack, such as when\r\n * a link is clicked and a new page loads. When this happens, all subsequent\r\n * entries in the stack are lost.\r\n */\n\n Action[\"Push\"] = \"PUSH\";\n /**\r\n * A REPLACE indicates the entry at the current index in the history stack\r\n * being replaced by a new one.\r\n */\n\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\n\nvar readOnly = process.env.NODE_ENV !== \"production\" ? function (obj) {\n return Object.freeze(obj);\n} : function (obj) {\n return obj;\n};\n\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== 'undefined') console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message); // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nvar BeforeUnloadEventType = 'beforeunload';\nvar HashChangeEventType = 'hashchange';\nvar PopStateEventType = 'popstate';\n/**\r\n * Browser history stores the location in regular URLs. This is the standard for\r\n * most web apps, but it requires some configuration on the server to ensure you\r\n * serve the same app at multiple URLs.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\r\n */\n\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$window = _options.window,\n window = _options$window === void 0 ? document.defaultView : _options$window;\n var globalHistory = window.history;\n\n function getIndexAndLocation() {\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var state = globalHistory.state || {};\n return [state.idx, readOnly({\n pathname: pathname,\n search: search,\n hash: hash,\n state: state.usr || null,\n key: state.key || 'default'\n })];\n }\n\n var blockedPopTx = null;\n\n function handlePop() {\n if (blockedPopTx) {\n blockers.call(blockedPopTx);\n blockedPopTx = null;\n } else {\n var nextAction = Action.Pop;\n\n var _getIndexAndLocation = getIndexAndLocation(),\n nextIndex = _getIndexAndLocation[0],\n nextLocation = _getIndexAndLocation[1];\n\n if (blockers.length) {\n if (nextIndex != null) {\n var delta = index - nextIndex;\n\n if (delta) {\n // Revert the POP\n blockedPopTx = {\n action: nextAction,\n location: nextLocation,\n retry: function retry() {\n go(delta * -1);\n }\n };\n go(delta);\n }\n } else {\n // Trying to POP to a location with no index. We did not create\n // this location, so we can't effectively block the navigation.\n process.env.NODE_ENV !== \"production\" ? warning(false, // TODO: Write up a doc that explains our blocking strategy in\n // detail and link to it here so people can understand better what\n // is going on and how to avoid it.\n \"You are trying to block a POP navigation to a location that was not \" + \"created by the history library. The block will fail silently in \" + \"production, but in general you should do all navigation with the \" + \"history library (instead of using window.history.pushState directly) \" + \"to avoid this situation.\") : void 0;\n }\n } else {\n applyTx(nextAction);\n }\n }\n }\n\n window.addEventListener(PopStateEventType, handlePop);\n var action = Action.Pop;\n\n var _getIndexAndLocation2 = getIndexAndLocation(),\n index = _getIndexAndLocation2[0],\n location = _getIndexAndLocation2[1];\n\n var listeners = createEvents();\n var blockers = createEvents();\n\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), '');\n }\n\n function createHref(to) {\n return typeof to === 'string' ? to : createPath(to);\n } // state defaults to `null` because `window.history.state` does\n\n\n function getNextLocation(to, state) {\n if (state === void 0) {\n state = null;\n }\n\n return readOnly(_extends({\n pathname: location.pathname,\n hash: '',\n search: ''\n }, typeof to === 'string' ? parsePath(to) : to, {\n state: state,\n key: createKey()\n }));\n }\n\n function getHistoryStateAndUrl(nextLocation, index) {\n return [{\n usr: nextLocation.state,\n key: nextLocation.key,\n idx: index\n }, createHref(nextLocation)];\n }\n\n function allowTx(action, location, retry) {\n return !blockers.length || (blockers.call({\n action: action,\n location: location,\n retry: retry\n }), false);\n }\n\n function applyTx(nextAction) {\n action = nextAction;\n\n var _getIndexAndLocation3 = getIndexAndLocation();\n\n index = _getIndexAndLocation3[0];\n location = _getIndexAndLocation3[1];\n listeners.call({\n action: action,\n location: location\n });\n }\n\n function push(to, state) {\n var nextAction = Action.Push;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n push(to, state);\n }\n\n if (allowTx(nextAction, nextLocation, retry)) {\n var _getHistoryStateAndUr = getHistoryStateAndUrl(nextLocation, index + 1),\n historyState = _getHistoryStateAndUr[0],\n url = _getHistoryStateAndUr[1]; // TODO: Support forced reloading\n // try...catch because iOS limits us to 100 pushState calls :/\n\n\n try {\n globalHistory.pushState(historyState, '', url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n applyTx(nextAction);\n }\n }\n\n function replace(to, state) {\n var nextAction = Action.Replace;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n replace(to, state);\n }\n\n if (allowTx(nextAction, nextLocation, retry)) {\n var _getHistoryStateAndUr2 = getHistoryStateAndUrl(nextLocation, index),\n historyState = _getHistoryStateAndUr2[0],\n url = _getHistoryStateAndUr2[1]; // TODO: Support forced reloading\n\n\n globalHistory.replaceState(historyState, '', url);\n applyTx(nextAction);\n }\n }\n\n function go(delta) {\n globalHistory.go(delta);\n }\n\n var history = {\n get action() {\n return action;\n },\n\n get location() {\n return location;\n },\n\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n back: function back() {\n go(-1);\n },\n forward: function forward() {\n go(1);\n },\n listen: function listen(listener) {\n return listeners.push(listener);\n },\n block: function block(blocker) {\n var unblock = blockers.push(blocker);\n\n if (blockers.length === 1) {\n window.addEventListener(BeforeUnloadEventType, promptBeforeUnload);\n }\n\n return function () {\n unblock(); // Remove the beforeunload listener so the document may\n // still be salvageable in the pagehide event.\n // See https://html.spec.whatwg.org/#unloading-documents\n\n if (!blockers.length) {\n window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload);\n }\n };\n }\n };\n return history;\n}\n/**\r\n * Hash history stores the location in window.location.hash. This makes it ideal\r\n * for situations where you don't want to send the location to the server for\r\n * some reason, either because you do cannot configure it or the URL space is\r\n * reserved for something else.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\r\n */\n\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options2 = options,\n _options2$window = _options2.window,\n window = _options2$window === void 0 ? document.defaultView : _options2$window;\n var globalHistory = window.history;\n\n function getIndexAndLocation() {\n var _parsePath = parsePath(window.location.hash.substr(1)),\n _parsePath$pathname = _parsePath.pathname,\n pathname = _parsePath$pathname === void 0 ? '/' : _parsePath$pathname,\n _parsePath$search = _parsePath.search,\n search = _parsePath$search === void 0 ? '' : _parsePath$search,\n _parsePath$hash = _parsePath.hash,\n hash = _parsePath$hash === void 0 ? '' : _parsePath$hash;\n\n var state = globalHistory.state || {};\n return [state.idx, readOnly({\n pathname: pathname,\n search: search,\n hash: hash,\n state: state.usr || null,\n key: state.key || 'default'\n })];\n }\n\n var blockedPopTx = null;\n\n function handlePop() {\n if (blockedPopTx) {\n blockers.call(blockedPopTx);\n blockedPopTx = null;\n } else {\n var nextAction = Action.Pop;\n\n var _getIndexAndLocation4 = getIndexAndLocation(),\n nextIndex = _getIndexAndLocation4[0],\n nextLocation = _getIndexAndLocation4[1];\n\n if (blockers.length) {\n if (nextIndex != null) {\n var delta = index - nextIndex;\n\n if (delta) {\n // Revert the POP\n blockedPopTx = {\n action: nextAction,\n location: nextLocation,\n retry: function retry() {\n go(delta * -1);\n }\n };\n go(delta);\n }\n } else {\n // Trying to POP to a location with no index. We did not create\n // this location, so we can't effectively block the navigation.\n process.env.NODE_ENV !== \"production\" ? warning(false, // TODO: Write up a doc that explains our blocking strategy in\n // detail and link to it here so people can understand better\n // what is going on and how to avoid it.\n \"You are trying to block a POP navigation to a location that was not \" + \"created by the history library. The block will fail silently in \" + \"production, but in general you should do all navigation with the \" + \"history library (instead of using window.history.pushState directly) \" + \"to avoid this situation.\") : void 0;\n }\n } else {\n applyTx(nextAction);\n }\n }\n }\n\n window.addEventListener(PopStateEventType, handlePop); // popstate does not fire on hashchange in IE 11 and old (trident) Edge\n // https://developer.mozilla.org/de/docs/Web/API/Window/popstate_event\n\n window.addEventListener(HashChangeEventType, function () {\n var _getIndexAndLocation5 = getIndexAndLocation(),\n nextLocation = _getIndexAndLocation5[1]; // Ignore extraneous hashchange events.\n\n\n if (createPath(nextLocation) !== createPath(location)) {\n handlePop();\n }\n });\n var action = Action.Pop;\n\n var _getIndexAndLocation6 = getIndexAndLocation(),\n index = _getIndexAndLocation6[0],\n location = _getIndexAndLocation6[1];\n\n var listeners = createEvents();\n var blockers = createEvents();\n\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), '');\n }\n\n function getBaseHref() {\n var base = document.querySelector('base');\n var href = '';\n\n if (base && base.getAttribute('href')) {\n var url = window.location.href;\n var hashIndex = url.indexOf('#');\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href;\n }\n\n function createHref(to) {\n return getBaseHref() + '#' + (typeof to === 'string' ? to : createPath(to));\n }\n\n function getNextLocation(to, state) {\n if (state === void 0) {\n state = null;\n }\n\n return readOnly(_extends({\n pathname: location.pathname,\n hash: '',\n search: ''\n }, typeof to === 'string' ? parsePath(to) : to, {\n state: state,\n key: createKey()\n }));\n }\n\n function getHistoryStateAndUrl(nextLocation, index) {\n return [{\n usr: nextLocation.state,\n key: nextLocation.key,\n idx: index\n }, createHref(nextLocation)];\n }\n\n function allowTx(action, location, retry) {\n return !blockers.length || (blockers.call({\n action: action,\n location: location,\n retry: retry\n }), false);\n }\n\n function applyTx(nextAction) {\n action = nextAction;\n\n var _getIndexAndLocation7 = getIndexAndLocation();\n\n index = _getIndexAndLocation7[0];\n location = _getIndexAndLocation7[1];\n listeners.call({\n action: action,\n location: location\n });\n }\n\n function push(to, state) {\n var nextAction = Action.Push;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n push(to, state);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(nextLocation.pathname.charAt(0) === '/', \"Relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\") : void 0;\n\n if (allowTx(nextAction, nextLocation, retry)) {\n var _getHistoryStateAndUr3 = getHistoryStateAndUrl(nextLocation, index + 1),\n historyState = _getHistoryStateAndUr3[0],\n url = _getHistoryStateAndUr3[1]; // TODO: Support forced reloading\n // try...catch because iOS limits us to 100 pushState calls :/\n\n\n try {\n globalHistory.pushState(historyState, '', url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n applyTx(nextAction);\n }\n }\n\n function replace(to, state) {\n var nextAction = Action.Replace;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n replace(to, state);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(nextLocation.pathname.charAt(0) === '/', \"Relative pathnames are not supported in hash history.replace(\" + JSON.stringify(to) + \")\") : void 0;\n\n if (allowTx(nextAction, nextLocation, retry)) {\n var _getHistoryStateAndUr4 = getHistoryStateAndUrl(nextLocation, index),\n historyState = _getHistoryStateAndUr4[0],\n url = _getHistoryStateAndUr4[1]; // TODO: Support forced reloading\n\n\n globalHistory.replaceState(historyState, '', url);\n applyTx(nextAction);\n }\n }\n\n function go(delta) {\n globalHistory.go(delta);\n }\n\n var history = {\n get action() {\n return action;\n },\n\n get location() {\n return location;\n },\n\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n back: function back() {\n go(-1);\n },\n forward: function forward() {\n go(1);\n },\n listen: function listen(listener) {\n return listeners.push(listener);\n },\n block: function block(blocker) {\n var unblock = blockers.push(blocker);\n\n if (blockers.length === 1) {\n window.addEventListener(BeforeUnloadEventType, promptBeforeUnload);\n }\n\n return function () {\n unblock(); // Remove the beforeunload listener so the document may\n // still be salvageable in the pagehide event.\n // See https://html.spec.whatwg.org/#unloading-documents\n\n if (!blockers.length) {\n window.removeEventListener(BeforeUnloadEventType, promptBeforeUnload);\n }\n };\n }\n };\n return history;\n}\n/**\r\n * Memory history stores the current location in memory. It is designed for use\r\n * in stateful non-browser environments like tests and React Native.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#creatememoryhistory\r\n */\n\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options3 = options,\n _options3$initialEntr = _options3.initialEntries,\n initialEntries = _options3$initialEntr === void 0 ? ['/'] : _options3$initialEntr,\n initialIndex = _options3.initialIndex;\n var entries = initialEntries.map(function (entry) {\n var location = readOnly(_extends({\n pathname: '/',\n search: '',\n hash: '',\n state: null,\n key: createKey()\n }, typeof entry === 'string' ? parsePath(entry) : entry));\n process.env.NODE_ENV !== \"production\" ? warning(location.pathname.charAt(0) === '/', \"Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: \" + JSON.stringify(entry) + \")\") : void 0;\n return location;\n });\n var index = clamp(initialIndex == null ? entries.length - 1 : initialIndex, 0, entries.length - 1);\n var action = Action.Pop;\n var location = entries[index];\n var listeners = createEvents();\n var blockers = createEvents();\n\n function createHref(to) {\n return typeof to === 'string' ? to : createPath(to);\n }\n\n function getNextLocation(to, state) {\n if (state === void 0) {\n state = null;\n }\n\n return readOnly(_extends({\n pathname: location.pathname,\n search: '',\n hash: ''\n }, typeof to === 'string' ? parsePath(to) : to, {\n state: state,\n key: createKey()\n }));\n }\n\n function allowTx(action, location, retry) {\n return !blockers.length || (blockers.call({\n action: action,\n location: location,\n retry: retry\n }), false);\n }\n\n function applyTx(nextAction, nextLocation) {\n action = nextAction;\n location = nextLocation;\n listeners.call({\n action: action,\n location: location\n });\n }\n\n function push(to, state) {\n var nextAction = Action.Push;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n push(to, state);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(location.pathname.charAt(0) === '/', \"Relative pathnames are not supported in memory history.push(\" + JSON.stringify(to) + \")\") : void 0;\n\n if (allowTx(nextAction, nextLocation, retry)) {\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n applyTx(nextAction, nextLocation);\n }\n }\n\n function replace(to, state) {\n var nextAction = Action.Replace;\n var nextLocation = getNextLocation(to, state);\n\n function retry() {\n replace(to, state);\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(location.pathname.charAt(0) === '/', \"Relative pathnames are not supported in memory history.replace(\" + JSON.stringify(to) + \")\") : void 0;\n\n if (allowTx(nextAction, nextLocation, retry)) {\n entries[index] = nextLocation;\n applyTx(nextAction, nextLocation);\n }\n }\n\n function go(delta) {\n var nextIndex = clamp(index + delta, 0, entries.length - 1);\n var nextAction = Action.Pop;\n var nextLocation = entries[nextIndex];\n\n function retry() {\n go(delta);\n }\n\n if (allowTx(nextAction, nextLocation, retry)) {\n index = nextIndex;\n applyTx(nextAction, nextLocation);\n }\n }\n\n var history = {\n get index() {\n return index;\n },\n\n get action() {\n return action;\n },\n\n get location() {\n return location;\n },\n\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n back: function back() {\n go(-1);\n },\n forward: function forward() {\n go(1);\n },\n listen: function listen(listener) {\n return listeners.push(listener);\n },\n block: function block(blocker) {\n return blockers.push(blocker);\n }\n };\n return history;\n} ////////////////////////////////////////////////////////////////////////////////\n// UTILS\n////////////////////////////////////////////////////////////////////////////////\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n\nfunction promptBeforeUnload(event) {\n // Cancel the event.\n event.preventDefault(); // Chrome (and legacy IE) requires returnValue to be set.\n\n event.returnValue = '';\n}\n\nfunction createEvents() {\n var handlers = [];\n return {\n get length() {\n return handlers.length;\n },\n\n push: function push(fn) {\n handlers.push(fn);\n return function () {\n handlers = handlers.filter(function (handler) {\n return handler !== fn;\n });\n };\n },\n call: function call(arg) {\n handlers.forEach(function (fn) {\n return fn && fn(arg);\n });\n }\n };\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\r\n * Creates a string URL path from the given pathname, search, and hash components.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createpath\r\n */\n\n\nfunction createPath(_ref) {\n var _ref$pathname = _ref.pathname,\n pathname = _ref$pathname === void 0 ? '/' : _ref$pathname,\n _ref$search = _ref.search,\n search = _ref$search === void 0 ? '' : _ref$search,\n _ref$hash = _ref.hash,\n hash = _ref$hash === void 0 ? '' : _ref$hash;\n if (search && search !== '?') pathname += search.charAt(0) === '?' ? search : '?' + search;\n if (hash && hash !== '#') pathname += hash.charAt(0) === '#' ? hash : '#' + hash;\n return pathname;\n}\n/**\r\n * Parses a string URL path into its separate pathname, search, and hash components.\r\n *\r\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#parsepath\r\n */\n\nfunction parsePath(path) {\n var parsedPath = {};\n\n if (path) {\n var hashIndex = path.indexOf('#');\n\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n var searchIndex = path.indexOf('?');\n\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport { Action, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, parsePath };\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Constants enumerating the HTTP status codes.\n *\n * All status codes defined in RFC1945 (HTTP/1.0, RFC2616 (HTTP/1.1),\n * RFC2518 (WebDAV), RFC6585 (Additional HTTP Status Codes), and\n * RFC7538 (Permanent Redirect) are supported.\n *\n * Based on the org.apache.commons.httpclient.HttpStatus Java API.\n *\n * Ported by Bryce Neal.\n */\n\nvar statusCodes = {};\n\nstatusCodes[exports.ACCEPTED = 202] = \"Accepted\";\nstatusCodes[exports.BAD_GATEWAY = 502] = \"Bad Gateway\";\nstatusCodes[exports.BAD_REQUEST = 400] = \"Bad Request\";\nstatusCodes[exports.CONFLICT = 409] = \"Conflict\";\nstatusCodes[exports.CONTINUE = 100] = \"Continue\";\nstatusCodes[exports.CREATED = 201] = \"Created\";\nstatusCodes[exports.EXPECTATION_FAILED = 417] = \"Expectation Failed\";\nstatusCodes[exports.FAILED_DEPENDENCY = 424] = \"Failed Dependency\";\nstatusCodes[exports.FORBIDDEN = 403] = \"Forbidden\";\nstatusCodes[exports.GATEWAY_TIMEOUT = 504] = \"Gateway Timeout\";\nstatusCodes[exports.GONE = 410] = \"Gone\";\nstatusCodes[exports.HTTP_VERSION_NOT_SUPPORTED = 505] = \"HTTP Version Not Supported\";\nstatusCodes[exports.IM_A_TEAPOT = 418] = \"I'm a teapot\";\nstatusCodes[exports.INSUFFICIENT_SPACE_ON_RESOURCE = 419] = \"Insufficient Space on Resource\";\nstatusCodes[exports.INSUFFICIENT_STORAGE = 507] = \"Insufficient Storage\";\nstatusCodes[exports.INTERNAL_SERVER_ERROR = 500] = \"Server Error\";\nstatusCodes[exports.LENGTH_REQUIRED = 411] = \"Length Required\";\nstatusCodes[exports.LOCKED = 423] = \"Locked\";\nstatusCodes[exports.METHOD_FAILURE = 420] = \"Method Failure\";\nstatusCodes[exports.METHOD_NOT_ALLOWED = 405] = \"Method Not Allowed\";\nstatusCodes[exports.MOVED_PERMANENTLY = 301] = \"Moved Permanently\";\nstatusCodes[exports.MOVED_TEMPORARILY = 302] = \"Moved Temporarily\";\nstatusCodes[exports.MULTI_STATUS = 207] = \"Multi-Status\";\nstatusCodes[exports.MULTIPLE_CHOICES = 300] = \"Multiple Choices\";\nstatusCodes[exports.NETWORK_AUTHENTICATION_REQUIRED = 511] = \"Network Authentication Required\";\nstatusCodes[exports.NO_CONTENT = 204] = \"No Content\";\nstatusCodes[exports.NON_AUTHORITATIVE_INFORMATION = 203] = \"Non Authoritative Information\";\nstatusCodes[exports.NOT_ACCEPTABLE = 406] = \"Not Acceptable\";\nstatusCodes[exports.NOT_FOUND = 404] = \"Not Found\";\nstatusCodes[exports.NOT_IMPLEMENTED = 501] = \"Not Implemented\";\nstatusCodes[exports.NOT_MODIFIED = 304] = \"Not Modified\";\nstatusCodes[exports.OK = 200] = \"OK\";\nstatusCodes[exports.PARTIAL_CONTENT = 206] = \"Partial Content\";\nstatusCodes[exports.PAYMENT_REQUIRED = 402] = \"Payment Required\";\nstatusCodes[exports.PERMANENT_REDIRECT = 308] = \"Permanent Redirect\";\nstatusCodes[exports.PRECONDITION_FAILED = 412] = \"Precondition Failed\";\nstatusCodes[exports.PRECONDITION_REQUIRED = 428] = \"Precondition Required\";\nstatusCodes[exports.PROCESSING = 102] = \"Processing\";\nstatusCodes[exports.PROXY_AUTHENTICATION_REQUIRED = 407] = \"Proxy Authentication Required\";\nstatusCodes[exports.REQUEST_HEADER_FIELDS_TOO_LARGE = 431] = \"Request Header Fields Too Large\";\nstatusCodes[exports.REQUEST_TIMEOUT = 408] = \"Request Timeout\";\nstatusCodes[exports.REQUEST_TOO_LONG = 413] = \"Request Entity Too Large\";\nstatusCodes[exports.REQUEST_URI_TOO_LONG = 414] = \"Request-URI Too Long\";\nstatusCodes[exports.REQUESTED_RANGE_NOT_SATISFIABLE = 416] = \"Requested Range Not Satisfiable\";\nstatusCodes[exports.RESET_CONTENT = 205] = \"Reset Content\";\nstatusCodes[exports.SEE_OTHER = 303] = \"See Other\";\nstatusCodes[exports.SERVICE_UNAVAILABLE = 503] = \"Service Unavailable\";\nstatusCodes[exports.SWITCHING_PROTOCOLS = 101] = \"Switching Protocols\";\nstatusCodes[exports.TEMPORARY_REDIRECT = 307] = \"Temporary Redirect\";\nstatusCodes[exports.TOO_MANY_REQUESTS = 429] = \"Too Many Requests\";\nstatusCodes[exports.UNAUTHORIZED = 401] = \"Unauthorized\";\nstatusCodes[exports.UNPROCESSABLE_ENTITY = 422] = \"Unprocessable Entity\";\nstatusCodes[exports.UNSUPPORTED_MEDIA_TYPE = 415] = \"Unsupported Media Type\";\nstatusCodes[exports.USE_PROXY = 305] = \"Use Proxy\";\n\nexports.getStatusText = function(statusCode) {\n if (statusCodes.hasOwnProperty(statusCode)) {\n return statusCodes[statusCode];\n } else {\n throw new Error(\"Status code does not exist: \" + statusCode);\n }\n};\n\nexports.getStatusCode = function(reasonPhrase) {\n for (key in statusCodes) {\n if (statusCodes[key] === reasonPhrase) {\n return parseInt(key, 10);\n }\n }\n throw new Error(\"Reason phrase does not exist: \" + reasonPhrase);\n};\n\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/*!\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","'use strict';\n\nmodule.exports = value => {\n\tif (Object.prototype.toString.call(value) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || prototype === Object.prototype;\n};\n","// Load in dependencies\nvar computedStyle = require('computed-style');\n\n/**\n * Calculate the `line-height` of a given node\n * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.\n * @returns {Number} `line-height` of the element in pixels\n */\nfunction lineHeight(node) {\n // Grab the line-height via style\n var lnHeightStr = computedStyle(node, 'line-height');\n var lnHeight = parseFloat(lnHeightStr, 10);\n\n // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')\n if (lnHeightStr === lnHeight + '') {\n // Save the old lineHeight style and update the em unit to the element\n var _lnHeightStyle = node.style.lineHeight;\n node.style.lineHeight = lnHeightStr + 'em';\n\n // Calculate the em based height\n lnHeightStr = computedStyle(node, 'line-height');\n lnHeight = parseFloat(lnHeightStr, 10);\n\n // Revert the lineHeight style\n if (_lnHeightStyle) {\n node.style.lineHeight = _lnHeightStyle;\n } else {\n delete node.style.lineHeight;\n }\n }\n\n // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)\n // DEV: `em` units are converted to `pt` in IE6\n // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length\n if (lnHeightStr.indexOf('pt') !== -1) {\n lnHeight *= 4;\n lnHeight /= 3;\n // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)\n } else if (lnHeightStr.indexOf('mm') !== -1) {\n lnHeight *= 96;\n lnHeight /= 25.4;\n // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)\n } else if (lnHeightStr.indexOf('cm') !== -1) {\n lnHeight *= 96;\n lnHeight /= 2.54;\n // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)\n } else if (lnHeightStr.indexOf('in') !== -1) {\n lnHeight *= 96;\n // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)\n } else if (lnHeightStr.indexOf('pc') !== -1) {\n lnHeight *= 16;\n }\n\n // Continue our computation\n lnHeight = Math.round(lnHeight);\n\n // If the line-height is \"normal\", calculate by font-size\n if (lnHeightStr === 'normal') {\n // Create a temporary node\n var nodeName = node.nodeName;\n var _node = document.createElement(nodeName);\n _node.innerHTML = ' ';\n\n // If we have a text area, reset it to only 1 row\n // https://github.com/twolfson/line-height/issues/4\n if (nodeName.toUpperCase() === 'TEXTAREA') {\n _node.setAttribute('rows', '1');\n }\n\n // Set the font-size of the element\n var fontSizeStr = computedStyle(node, 'font-size');\n _node.style.fontSize = fontSizeStr;\n\n // Remove default padding/border which can affect offset height\n // https://github.com/twolfson/line-height/issues/4\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight\n _node.style.padding = '0px';\n _node.style.border = '0px';\n\n // Append it to the body\n var body = document.body;\n body.appendChild(_node);\n\n // Assume the line height of the element is the height\n var height = _node.offsetHeight;\n lnHeight = height;\n\n // Remove our child from the DOM\n body.removeChild(_node);\n }\n\n // Return the calculated height\n return lnHeight;\n}\n\n// Export lineHeight\nmodule.exports = lineHeight;\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'Linked-Delta Ontology' ontology */\nexport const ns = createNS(\"http://purl.org/linked-delta/\");\n/* Classes */\nexport const DeltaGraph = /*#__PURE__*/ ns(\"DeltaGraph\");\n/* Properties */\n/* Other terms */\n/** Adds the statement to the store, without duplication. */\nexport const add = /*#__PURE__*/ ns(\"add\");\n/** Removes the entire subject from the store. */\nexport const purge = /*#__PURE__*/ ns(\"purge\");\n/** Removes all (subject,predicate,) matches from the store. */\nexport const remove = /*#__PURE__*/ ns(\"remove\");\n/** Replaces the (subject, predicate,) with the one(s) in this delta. */\nexport const replace = /*#__PURE__*/ ns(\"replace\");\n/** Removes all (subject,predicate,object) matches from the store. */\nexport const slice = /*#__PURE__*/ ns(\"slice\");\n/** Removes all statements of (subject,,) from the store and replaces them with those in the delta. */\nexport const supplant = /*#__PURE__*/ ns(\"supplant\");\n","import { createNS } from \"@ontologies/core\";\n/** Function to create arbitrary terms within the 'The OWL 2 Schema vocabulary (OWL 2)' ontology */\nexport const ns = createNS(\"http://www.w3.org/2002/07/owl#\");\n/* Classes */\n/** The class of collections of pairwise different individuals. */\nexport const AllDifferent = /*#__PURE__*/ ns(\"AllDifferent\");\n/** The class of collections of pairwise disjoint classes. */\nexport const AllDisjointClasses = /*#__PURE__*/ ns(\"AllDisjointClasses\");\n/** The class of collections of pairwise disjoint properties. */\nexport const AllDisjointProperties = /*#__PURE__*/ ns(\"AllDisjointProperties\");\n/** The class of annotated annotations for which the RDF serialization consists of an annotated subject, predicate and object. */\nexport const Annotation = /*#__PURE__*/ ns(\"Annotation\");\n/** The class of annotation properties. */\nexport const AnnotationProperty = /*#__PURE__*/ ns(\"AnnotationProperty\");\n/** The class of asymmetric properties. */\nexport const AsymmetricProperty = /*#__PURE__*/ ns(\"AsymmetricProperty\");\n/** The class of annotated axioms for which the RDF serialization consists of an annotated subject, predicate and object. */\nexport const Axiom = /*#__PURE__*/ ns(\"Axiom\");\n/** The class of OWL classes. */\nexport const Class = /*#__PURE__*/ ns(\"Class\");\n/** The class of OWL data ranges, which are special kinds of datatypes. Note: The use of the IRI owl:DataRange has been deprecated as of OWL 2. The IRI rdfs:Datatype SHOULD be used instead. */\nexport const DataRange = /*#__PURE__*/ ns(\"DataRange\");\n/** The class of data properties. */\nexport const DatatypeProperty = /*#__PURE__*/ ns(\"DatatypeProperty\");\n/** The class of deprecated classes. */\nexport const DeprecatedClass = /*#__PURE__*/ ns(\"DeprecatedClass\");\n/** The class of deprecated properties. */\nexport const DeprecatedProperty = /*#__PURE__*/ ns(\"DeprecatedProperty\");\n/** The class of functional properties. */\nexport const FunctionalProperty = /*#__PURE__*/ ns(\"FunctionalProperty\");\n/** The class of inverse-functional properties. */\nexport const InverseFunctionalProperty = /*#__PURE__*/ ns(\"InverseFunctionalProperty\");\n/** The class of irreflexive properties. */\nexport const IrreflexiveProperty = /*#__PURE__*/ ns(\"IrreflexiveProperty\");\n/** The class of named individuals. */\nexport const NamedIndividual = /*#__PURE__*/ ns(\"NamedIndividual\");\n/** The class of negative property assertions. */\nexport const NegativePropertyAssertion = /*#__PURE__*/ ns(\"NegativePropertyAssertion\");\n/** This is the empty class. */\nexport const Nothing = /*#__PURE__*/ ns(\"Nothing\");\n/** The class of object properties. */\nexport const ObjectProperty = /*#__PURE__*/ ns(\"ObjectProperty\");\n/** The class of ontologies. */\nexport const Ontology = /*#__PURE__*/ ns(\"Ontology\");\n/** The class of ontology properties. */\nexport const OntologyProperty = /*#__PURE__*/ ns(\"OntologyProperty\");\n/** The class of reflexive properties. */\nexport const ReflexiveProperty = /*#__PURE__*/ ns(\"ReflexiveProperty\");\n/** The class of property restrictions. */\nexport const Restriction = /*#__PURE__*/ ns(\"Restriction\");\n/** The class of symmetric properties. */\nexport const SymmetricProperty = /*#__PURE__*/ ns(\"SymmetricProperty\");\n/** The class of transitive properties. */\nexport const TransitiveProperty = /*#__PURE__*/ ns(\"TransitiveProperty\");\n/** The class of OWL individuals. */\nexport const Thing = /*#__PURE__*/ ns(\"Thing\");\n/* Properties */\n/** The property that determines the class that a universal property restriction refers to. */\nexport const allValuesFrom = /*#__PURE__*/ ns(\"allValuesFrom\");\n/** The property that determines the predicate of an annotated axiom or annotated annotation. */\nexport const annotatedProperty = /*#__PURE__*/ ns(\"annotatedProperty\");\n/** The property that determines the subject of an annotated axiom or annotated annotation. */\nexport const annotatedSource = /*#__PURE__*/ ns(\"annotatedSource\");\n/** The property that determines the object of an annotated axiom or annotated annotation. */\nexport const annotatedTarget = /*#__PURE__*/ ns(\"annotatedTarget\");\n/** The property that determines the predicate of a negative property assertion. */\nexport const assertionProperty = /*#__PURE__*/ ns(\"assertionProperty\");\n/** The data property that does not relate any individual to any data value. */\nexport const bottomDataProperty = /*#__PURE__*/ ns(\"bottomDataProperty\");\n/** The object property that does not relate any two individuals. */\nexport const bottomObjectProperty = /*#__PURE__*/ ns(\"bottomObjectProperty\");\n/** The property that determines the cardinality of an exact cardinality restriction. */\nexport const cardinality = /*#__PURE__*/ ns(\"cardinality\");\n/** The property that determines that a given class is the complement of another class. */\nexport const complementOf = /*#__PURE__*/ ns(\"complementOf\");\n/** The property that determines that a given data range is the complement of another data range with respect to the data domain. */\nexport const datatypeComplementOf = /*#__PURE__*/ ns(\"datatypeComplementOf\");\n/** The property that determines that two given individuals are different. */\nexport const differentFrom = /*#__PURE__*/ ns(\"differentFrom\");\n/** The property that determines that a given class is equivalent to the disjoint union of a collection of other classes. */\nexport const disjointUnionOf = /*#__PURE__*/ ns(\"disjointUnionOf\");\n/** The property that determines that two given classes are disjoint. */\nexport const disjointWith = /*#__PURE__*/ ns(\"disjointWith\");\n/** The property that determines the collection of pairwise different individuals in a owl:AllDifferent axiom. */\nexport const distinctMembers = /*#__PURE__*/ ns(\"distinctMembers\");\n/** The property that determines that two given classes are equivalent, and that is used to specify datatype definitions. */\nexport const equivalentClass = /*#__PURE__*/ ns(\"equivalentClass\");\n/** The property that determines that two given properties are equivalent. */\nexport const equivalentProperty = /*#__PURE__*/ ns(\"equivalentProperty\");\n/** The property that determines the collection of properties that jointly build a key. */\nexport const hasKey = /*#__PURE__*/ ns(\"hasKey\");\n/** The property that determines the property that a self restriction refers to. */\nexport const hasSelf = /*#__PURE__*/ ns(\"hasSelf\");\n/** The property that determines the individual that a has-value restriction refers to. */\nexport const hasValue = /*#__PURE__*/ ns(\"hasValue\");\n/** The property that determines the collection of classes or data ranges that build an intersection. */\nexport const intersectionOf = /*#__PURE__*/ ns(\"intersectionOf\");\n/** The property that determines that two given properties are inverse. */\nexport const inverseOf = /*#__PURE__*/ ns(\"inverseOf\");\n/** The property that determines the cardinality of a maximum cardinality restriction. */\nexport const maxCardinality = /*#__PURE__*/ ns(\"maxCardinality\");\n/** The property that determines the cardinality of a maximum qualified cardinality restriction. */\nexport const maxQualifiedCardinality = /*#__PURE__*/ ns(\"maxQualifiedCardinality\");\n/** The property that determines the collection of members in either a owl:AllDifferent, owl:AllDisjointClasses or owl:AllDisjointProperties axiom. */\nexport const members = /*#__PURE__*/ ns(\"members\");\n/** The property that determines the cardinality of a minimum cardinality restriction. */\nexport const minCardinality = /*#__PURE__*/ ns(\"minCardinality\");\n/** The property that determines the cardinality of a minimum qualified cardinality restriction. */\nexport const minQualifiedCardinality = /*#__PURE__*/ ns(\"minQualifiedCardinality\");\n/** The property that determines the class that a qualified object cardinality restriction refers to. */\nexport const onClass = /*#__PURE__*/ ns(\"onClass\");\n/** The property that determines the data range that a qualified data cardinality restriction refers to. */\nexport const onDataRange = /*#__PURE__*/ ns(\"onDataRange\");\n/** The property that determines the datatype that a datatype restriction refers to. */\nexport const onDatatype = /*#__PURE__*/ ns(\"onDatatype\");\n/** The property that determines the collection of individuals or data values that build an enumeration. */\nexport const oneOf = /*#__PURE__*/ ns(\"oneOf\");\n/** The property that determines the n-tuple of properties that a property restriction on an n-ary data range refers to. */\nexport const onProperties = /*#__PURE__*/ ns(\"onProperties\");\n/** The property that determines the property that a property restriction refers to. */\nexport const onProperty = /*#__PURE__*/ ns(\"onProperty\");\n/** The property that determines the n-tuple of properties that build a sub property chain of a given property. */\nexport const propertyChainAxiom = /*#__PURE__*/ ns(\"propertyChainAxiom\");\n/** The property that determines that two given properties are disjoint. */\nexport const propertyDisjointWith = /*#__PURE__*/ ns(\"propertyDisjointWith\");\n/** The property that determines the cardinality of an exact qualified cardinality restriction. */\nexport const qualifiedCardinality = /*#__PURE__*/ ns(\"qualifiedCardinality\");\n/** The property that determines that two given individuals are equal. */\nexport const sameAs = /*#__PURE__*/ ns(\"sameAs\");\n/** The property that determines the class that an existential property restriction refers to. */\nexport const someValuesFrom = /*#__PURE__*/ ns(\"someValuesFrom\");\n/** The property that determines the subject of a negative property assertion. */\nexport const sourceIndividual = /*#__PURE__*/ ns(\"sourceIndividual\");\n/** The property that determines the object of a negative object property assertion. */\nexport const targetIndividual = /*#__PURE__*/ ns(\"targetIndividual\");\n/** The property that determines the value of a negative data property assertion. */\nexport const targetValue = /*#__PURE__*/ ns(\"targetValue\");\n/** The data property that relates every individual to every data value. */\nexport const topDataProperty = /*#__PURE__*/ ns(\"topDataProperty\");\n/** The object property that relates every two individuals. */\nexport const topObjectProperty = /*#__PURE__*/ ns(\"topObjectProperty\");\n/** The property that determines the collection of classes or data ranges that build a union. */\nexport const unionOf = /*#__PURE__*/ ns(\"unionOf\");\n/** The property that determines the collection of facet-value pairs that define a datatype restriction. */\nexport const withRestrictions = /*#__PURE__*/ ns(\"withRestrictions\");\n/* Other terms */\n/** The annotation property that indicates that a given ontology is backward compatible with another ontology. */\nexport const backwardCompatibleWith = /*#__PURE__*/ ns(\"backwardCompatibleWith\");\n/** The annotation property that indicates that a given entity has been deprecated. */\nexport const deprecated = /*#__PURE__*/ ns(\"deprecated\");\n/** The property that is used for importing other ontologies into a given ontology. */\nexport const imports = /*#__PURE__*/ ns(\"imports\");\n/** The annotation property that indicates that a given ontology is incompatible with another ontology. */\nexport const incompatibleWith = /*#__PURE__*/ ns(\"incompatibleWith\");\n/** The annotation property that indicates the predecessor ontology of a given ontology. */\nexport const priorVersion = /*#__PURE__*/ ns(\"priorVersion\");\n/** The annotation property that provides version information for an ontology or another OWL construct. */\nexport const versionInfo = /*#__PURE__*/ ns(\"versionInfo\");\n/** The property that identifies the version IRI of an ontology. */\nexport const versionIRI = /*#__PURE__*/ ns(\"versionIRI\");\n","import rdf, { QuadPosition } from '@ontologies/core';\nimport NdjsonStream from 'can-ndjson-stream';\n\nvar HexPosition;\n(function (HexPosition) {\n HexPosition[HexPosition[\"Subject\"] = 0] = \"Subject\";\n HexPosition[HexPosition[\"Predicate\"] = 1] = \"Predicate\";\n HexPosition[HexPosition[\"Value\"] = 2] = \"Value\";\n HexPosition[HexPosition[\"Datatype\"] = 3] = \"Datatype\";\n HexPosition[HexPosition[\"Language\"] = 4] = \"Language\";\n HexPosition[HexPosition[\"Graph\"] = 5] = \"Graph\";\n})(HexPosition || (HexPosition = {}));\n\nconst createLineParser = (rdfFactory = rdf) => {\n const bnMap = {};\n // Skip the (expensive) proxy object when parsing\n const quad = rdfFactory.quad.bind(rdfFactory);\n const literal = rdfFactory.literal.bind(rdfFactory);\n const namedNode = rdfFactory.namedNode.bind(rdfFactory);\n const blankNodeF = rdfFactory.blankNode.bind(rdfFactory);\n const defaultGraph = rdfFactory.defaultGraph.bind(rdfFactory);\n const blankNode = (v) => {\n if (!bnMap[v]) {\n bnMap[v] = blankNodeF();\n }\n return bnMap[v];\n };\n const object = (v, dt, l) => {\n if (l) {\n return literal(v, l);\n }\n else if (dt === \"globalId\") {\n return namedNode(v);\n }\n else if (dt === \"localId\") {\n return blankNode(v);\n }\n return literal(v, namedNode(dt));\n };\n return (h) => quad(h[HexPosition.Subject].startsWith(\"_:\") ? blankNode(h[HexPosition.Subject]) : namedNode(h[HexPosition.Subject]), namedNode(h[HexPosition.Predicate]), object(h[HexPosition.Value], h[HexPosition.Datatype], h[HexPosition.Language]), h[HexPosition.Graph] ? namedNode(h[HexPosition.Graph]) : defaultGraph());\n};\n\nconst hextupleStringParser = (bodyString, rdfFactory = rdf) => {\n const lineToQuad = createLineParser(rdfFactory);\n const delta = [];\n for (const line of bodyString.split(\"\\n\")) {\n if (line.length > 0) {\n delta.push(lineToQuad(JSON.parse(line)));\n }\n }\n return delta;\n};\n\nclass HextuplesRDFLibParser {\n constructor(store, errorHandler = console.error) {\n this.store = store;\n this.rdfFactory = store.rdfFactory;\n this.errorHandler = errorHandler;\n }\n loadBuf(str) {\n this.addArr(this.parseString(str));\n }\n parseString(str) {\n return hextupleStringParser(str, this.rdfFactory).map((q) => [\n q.subject,\n q.predicate,\n q.object,\n q.graph,\n ]);\n }\n addArr(quads) {\n let q;\n for (let i = 0, len = quads.length; i < len; i++) {\n q = quads[i];\n if (q) {\n this.store.add(q[QuadPosition.subject], q[QuadPosition.predicate], q[QuadPosition.object], q[QuadPosition.graph]);\n }\n }\n }\n}\n\nlet hasReadableStreamConstructor = false;\ntry {\n // tslint:disable-next-line:typedef no-empty no-unused-expression\n new ReadableStream({ start() { } });\n hasReadableStreamConstructor = true;\n}\ncatch (e) {\n // ignore\n}\nconst hextuplesTransformer = async (res, rdfFactory = rdf) => {\n const delta = [];\n let parse;\n if (res instanceof Response && hasReadableStreamConstructor) {\n const stream = new NdjsonStream(res.body);\n const reader = stream.getReader();\n const lineToQuad = createLineParser(rdfFactory);\n let read;\n parse = reader\n .read()\n .then(read = (result) => {\n if (result.done) {\n return;\n }\n delta.push(lineToQuad(result.value));\n return reader.read().then(read);\n });\n }\n else {\n let body;\n if (res instanceof Response) {\n body = res.text();\n }\n else if (typeof XMLHttpRequest !== \"undefined\"\n && res instanceof XMLHttpRequest\n || typeof res.responseText === \"string\") {\n body = Promise.resolve(res.responseText);\n }\n else {\n if (typeof res.body !== \"string\") {\n throw Error(\"Unsupported input format\");\n }\n body = Promise.resolve(res.body);\n }\n parse = body\n .then((text) => {\n delta.push(...hextupleStringParser(text));\n });\n }\n await parse;\n return delta;\n};\n\nconst hextupleMime = \"application/hex+x-ndjson\";\n\nexport { HexPosition, HextuplesRDFLibParser, createLineParser, hextupleMime, hextupleStringParser, hextuplesTransformer };\n//# sourceMappingURL=index.js.map\n","import { QuadPosition } from '@ontologies/core';\n\nclass NQuadsParser {\n constructor(store, errorHandler = console.error) {\n this.nnClosingTagError = () => new Error(`named node without closing angle bracket`);\n this.unexpectedCharError = (identifier) => new Error(`Unexpected character '${identifier}'`);\n this.nnOpeningToken = '<';\n this.nnOpeningTokenOffset = this.nnOpeningToken.length;\n this.nnClosingToken = '>';\n this.nnClosingPostfix = '> ';\n this.nnClosingPostfixOffset = this.nnClosingPostfix.length;\n this.bnOpeningToken = '_';\n this.bnOpeningPrefix = '_:';\n this.bnOpeningPrefixOffset = this.bnOpeningPrefix.length;\n this.bnClosingToken = ' ';\n this.bnClosingTokenOffset = this.bnClosingToken.length;\n this.ltOpeningToken = '\"';\n this.ltOpeningTokenOffset = this.ltOpeningToken.length;\n this.ltReservedReplace = /\\\\(.)/g;\n this.ltReservedReplaceFn = (match) => {\n switch (match) {\n case \"\\\\n\": return \"\\n\";\n case \"\\\\r\": return \"\\r\";\n case \"\\\\\\\"\": return \"\\\"\";\n case \"\\\\\\\\\": return \"\\\\\";\n default: throw new Error(`Unknown token ${match}`);\n }\n };\n this.ltNewline = '\\n';\n this.lgOpeningToken = '@';\n this.lgOpeningTokenOffset = this.lgOpeningToken.length;\n this.lgClosingToken = ' ';\n this.dtSplitPrefix = '\"^^<';\n this.dtSplitPrefixOffset = this.dtSplitPrefix.length;\n this.store = store;\n this.rdfFactory = store.rdfFactory;\n this.errorHandler = errorHandler;\n this.rdfLangString = this.rdfFactory.namedNode('http://www.w3.org/1999/02/22-rdf-syntax-ns#langString');\n this.xsdString = this.rdfFactory.namedNode('http://www.w3.org/2001/XMLSchema#string');\n this.xsdBool = this.rdfFactory.namedNode('http://www.w3.org/2001/XMLSchema#boolean');\n }\n loadBuf(str) {\n this.addArr(this.parseString(str));\n }\n parseString(str) {\n if (!str || str.length === 0) {\n return [];\n }\n const rawStatements = str.split('\\n');\n let i, len = rawStatements.length;\n const quads = new Array(len);\n const blankNodeMap = {};\n let cleaned, rightBoundary, leftBoundary;\n let subject, predicate, object, graph;\n let dtOrLgBoundary, lang, datatype;\n for (i = 0; i < len; i++) {\n try {\n cleaned = rawStatements[i].trim();\n if (cleaned.length === 0) {\n continue;\n }\n rightBoundary = -1;\n leftBoundary = -1;\n /*\n * Parse the subject\n */\n switch (cleaned.charAt(0)) {\n case '#':\n continue;\n case this.nnOpeningToken:\n rightBoundary = cleaned.indexOf(this.nnClosingPostfix);\n if (rightBoundary === -1) {\n throw this.nnClosingTagError();\n }\n subject = this.rdfFactory.namedNode(cleaned.substring(this.nnOpeningTokenOffset, rightBoundary));\n leftBoundary = rightBoundary + this.nnClosingPostfixOffset;\n break;\n case this.bnOpeningToken:\n rightBoundary = cleaned.indexOf(this.bnClosingToken);\n subject = cleaned.substring(this.bnOpeningPrefixOffset, rightBoundary);\n if (blankNodeMap[subject] !== undefined) {\n subject = blankNodeMap[subject];\n }\n else {\n subject = blankNodeMap[subject] = this.rdfFactory.blankNode();\n }\n leftBoundary = rightBoundary + this.bnClosingTokenOffset;\n break;\n default:\n throw this.unexpectedCharError(cleaned.charAt(0));\n }\n /*\n * Parse the predicate\n */\n // We currently assume blank nodes can't be predicates\n rightBoundary = cleaned.indexOf(this.nnClosingPostfix, leftBoundary);\n if (rightBoundary === -1) {\n throw this.nnClosingTagError();\n }\n leftBoundary = cleaned.indexOf(this.nnOpeningToken, leftBoundary) + this.nnOpeningTokenOffset;\n predicate = this.rdfFactory.namedNode(cleaned.substring(leftBoundary, rightBoundary));\n leftBoundary = rightBoundary + this.nnClosingPostfixOffset;\n /*\n * Parse the object\n */\n dtOrLgBoundary = -1;\n switch (cleaned.charAt(leftBoundary)) {\n case this.nnOpeningToken:\n leftBoundary = leftBoundary + this.nnOpeningTokenOffset;\n // When parsing ntriples, the space of the nnClosingPostfix might not exist, so it can't be used\n rightBoundary = cleaned.indexOf(this.nnClosingToken, leftBoundary);\n if (rightBoundary === -1) {\n throw this.nnClosingTagError();\n }\n object = this.rdfFactory.namedNode(cleaned.substring(leftBoundary, rightBoundary));\n break;\n case this.bnOpeningToken:\n leftBoundary = cleaned.indexOf(this.bnOpeningPrefix, leftBoundary) + this.bnOpeningPrefixOffset;\n rightBoundary = cleaned.indexOf(this.bnClosingToken, leftBoundary);\n // Doesn't contain a comment, nor is a quad, so the bn id is followed by the newline\n if (rightBoundary === -1) {\n rightBoundary = Infinity;\n }\n object = cleaned.substring(leftBoundary, rightBoundary);\n if (blankNodeMap[object] !== undefined) {\n object = blankNodeMap[object];\n }\n else {\n object = blankNodeMap[object] = this.rdfFactory.blankNode();\n }\n break;\n case '\"':\n leftBoundary = leftBoundary + this.ltOpeningTokenOffset;\n const objEndIndex = cleaned.lastIndexOf(this.ltOpeningToken);\n object = cleaned\n .substring(leftBoundary, objEndIndex)\n .replace(this.ltReservedReplace, this.ltReservedReplaceFn);\n leftBoundary = objEndIndex;\n dtOrLgBoundary = cleaned.indexOf(this.dtSplitPrefix, leftBoundary);\n if (dtOrLgBoundary >= 0) {\n // Typed literal\n rightBoundary = cleaned.indexOf(this.nnClosingToken, dtOrLgBoundary);\n datatype = this.rdfFactory.namedNode(cleaned.substring(dtOrLgBoundary + this.dtSplitPrefixOffset, rightBoundary));\n if (datatype.value === this.xsdBool.value && (object === \"1\" || object === \"0\")) {\n object = object === \"1\" ? \"true\" : \"false\";\n }\n leftBoundary = rightBoundary;\n }\n else {\n dtOrLgBoundary = cleaned.indexOf(this.lgOpeningToken, leftBoundary);\n if (dtOrLgBoundary >= 0) {\n lang = cleaned.substring(dtOrLgBoundary + this.lgOpeningTokenOffset, cleaned.indexOf(this.lgClosingToken, dtOrLgBoundary + this.lgOpeningTokenOffset));\n datatype = this.rdfLangString;\n }\n else {\n // Implicit literals are strings\n datatype = this.xsdString;\n }\n }\n object = this.rdfFactory.literal(object, lang || datatype);\n break;\n default:\n throw this.unexpectedCharError(cleaned.charAt(leftBoundary));\n }\n /*\n * Parse the graph, if any\n */\n leftBoundary = cleaned.indexOf(this.nnOpeningToken, leftBoundary) + this.nnOpeningTokenOffset;\n graph = leftBoundary - this.nnOpeningTokenOffset >= 0\n ? this.rdfFactory.namedNode(cleaned.substring(leftBoundary, cleaned.indexOf(this.nnClosingPostfix, leftBoundary)))\n : this.rdfFactory.defaultGraph();\n quads[i] = [subject, predicate, object, graph];\n }\n catch (e) {\n this.errorHandler(e, rawStatements[i]);\n }\n }\n return quads;\n }\n addArr(quads) {\n let q;\n for (let i = 0, len = quads.length; i < len; i++) {\n q = quads[i];\n if (q) {\n this.store.add(q[QuadPosition.subject], q[QuadPosition.predicate], q[QuadPosition.object], q[QuadPosition.graph]);\n }\n }\n }\n}\n\nexport { NQuadsParser };\n//# sourceMappingURL=index.js.map\n","import rdfFactory, { createNS, Feature, QuadPosition, TermType, isLiteral, isNode, isQuad } from '@ontologies/core';\nimport { ns, type, first, rest, nil, Seq, Property, subject, Statement, predicate, object, List, value as value$1, Alt, Bag } from '@ontologies/rdf';\nimport { target, url, httpMethod, Thing } from '@ontologies/schema';\nimport { Resource, member as member$1, domain, range, subPropertyOf, subClassOf, Class, seeAlso, isDefinedBy, comment, label, Literal, Container, ContainerMembershipProperty, Datatype } from '@ontologies/rdfs';\nimport { ns as ns$1, add, purge, remove, replace, slice } from '@ontologies/ld';\nimport { integer } from '@ontologies/xsd';\nimport { site } from '@rdfdev/iri';\nimport { BAD_REQUEST, INTERNAL_SERVER_ERROR, NOT_FOUND } from 'http-status-codes';\nimport { sameAs } from '@ontologies/owl';\nimport { hextuplesTransformer } from 'hextuples';\nimport { NQuadsParser } from 'n-quads-parser';\n\nconst ll = createNS(\"http://purl.org/link-lib/\");\nvar ll$1 = {\n ns: ll,\n defaultTopology: ll(\"defaultTopology\"),\n graph: ll(\"graph\"),\n meta: ll(\"meta\"),\n nop: ll(\"nop\"),\n targetResource: ll(\"targetResource\"),\n typeRenderClass: ll(\"typeRenderClass\"),\n ClientError: ll(\"ClientError\"),\n ErrorResource: ll(\"ErrorResource\"),\n ServerError: ll(\"ServerError\"),\n /** @deprecated */\n add: ll(\"add\"),\n /** @deprecated */\n purge: ll(\"purge\"),\n /** @deprecated */\n remove: ll(\"remove\"),\n /** @deprecated */\n replace: ll(\"replace\"),\n /** @deprecated */\n slice: ll(\"slice\"),\n};\n\nconst F_NTRIPLES = \"application/n-triples\";\nconst F_TURTLE = \"text/turtle\";\nconst F_N3 = \"text/n3\";\nconst F_PLAIN = \"text/plain\";\nconst F_JSONLD = \"application/ld+json\";\nconst F_RDF_XML = \"application/rdf+xml\";\nconst F_NTRIPLES_DEP = \"text/ntriples\";\nconst F_TURTLE_DEP = \"application/x-turtle\";\nconst NON_CONTENT_EXTS = [\"php\", \"asp\", \"aspx\", \"cgi\", \"jsp\"];\nconst DEFAULT_TOPOLOGY = ll$1.defaultTopology;\n/** Constant used to determine that a class is used to render a type rather than a property. */\nconst RENDER_CLASS_NAME = ll$1.typeRenderClass;\nconst MAIN_NODE_DEFAULT_IRI = ll$1.targetResource;\n// tslint:disable-next-line ban-types\nconst NON_DATA_OBJECTS_CTORS = [\n Array,\n ArrayBuffer,\n Boolean,\n DataView,\n Date,\n Error,\n EvalError,\n Float32Array,\n Float64Array,\n Int16Array,\n Int32Array,\n Int8Array,\n Intl.Collator,\n Intl.DateTimeFormat,\n Intl.NumberFormat,\n Map,\n Number,\n Promise,\n /* istanbul ignore next */\n (typeof Proxy !== \"undefined\" ? Proxy : undefined),\n RangeError,\n ReferenceError,\n RegExp,\n Set,\n].filter(Boolean);\nconst MSG_BAD_REQUEST = \"Request failed with bad status code\";\nconst MSG_INCORRECT_TARGET = \"Collections or Literals can't be the target\";\nconst MSG_URL_UNDEFINED = \"No url given with action.\";\nconst MSG_URL_UNRESOLVABLE = \"Can't execute action with non-named-node url.\";\n\nclass ComponentCache {\n constructor() {\n this.lookupCache = {};\n }\n /**\n * Adds a renderer to {this.lookupCache}\n * @param component The render component.\n * @param key The memoization key.\n * @returns The renderer passed with {component}\n */\n add(component, key) {\n this.lookupCache[key] = component;\n return this.lookupCache[key];\n }\n clear() {\n this.lookupCache = {};\n }\n /**\n * Resolves a renderer from the {lookupCache}.\n * @param key The key to look up.\n * @returns If saved the render component, otherwise undefined.\n */\n get(key) {\n return this.lookupCache[key];\n }\n}\n\nconst MSG_TYPE_ERR = \"Non-optimized NamedNode instance given. Please memoize your namespace correctly.\";\n/** Constant used to determine that a component is used to render a type rather than a property. */\nconst RENDER_CLASS_NAME$1 = ll$1.typeRenderClass;\nfunction convertToCacheKey(types, props, topology) {\n return `${types.join()}[${props.join()}][${topology}]`;\n}\nconst assert = (obj) => {\n if (obj === undefined) {\n throw new TypeError(MSG_TYPE_ERR);\n }\n};\n/**\n * Handles registration and querying for view components.\n */\nclass ComponentStore {\n constructor(schema) {\n this.lookupCache = new ComponentCache();\n /**\n * Lookup map ordered with the following hierarchy;\n * [propertyType][resourceType][topology]\n */\n this.registrations = {};\n this.schema = schema;\n this.registrations[RENDER_CLASS_NAME$1.value] = {};\n }\n /**\n * Generate registration description objects for later registration use.\n * @see LinkedRenderStore#registerAll\n */\n static registerRenderer(component, types, fields, topologies) {\n if (typeof component === \"undefined\") {\n throw new Error(`Undefined component was given for (${types}, ${fields}, ${topologies}).`);\n }\n const registrations = [];\n for (let t = 0; t < types.length; t++) {\n assert(types[t]);\n for (let p = 0; p < fields.length; p++) {\n assert(fields[p]);\n for (let top = 0; top < topologies.length; top++) {\n assert(topologies[top]);\n registrations.push({\n component,\n property: fields[p],\n topology: topologies[top],\n type: types[t],\n });\n }\n }\n }\n return registrations;\n }\n /**\n * TODO: remove defaultType - Basically a bug. We default the type if no matches were found, rather than using\n * inheritance to associate unknown types the RDF way (using rdfs:Resource).\n */\n getRenderComponent(types, fields, topology, defaultType) {\n const oTypes = this.schema.expand(types);\n const key = convertToCacheKey(oTypes, fields, topology);\n const cached = this.lookupCache.get(key);\n if (cached !== undefined) {\n return cached;\n }\n for (let p = 0; p < fields.length; p++) {\n for (let t = 0; t < oTypes.length; t++) {\n const exact = this.lookup(fields[p], oTypes[t], topology);\n if (exact !== undefined) {\n return this.lookupCache.add(exact, key);\n }\n }\n }\n const possibleClasses = this.registeredClasses(fields, topology);\n if (possibleClasses.length === 0) {\n if (topology === DEFAULT_TOPOLOGY.value) {\n return this.lookupCache.add(null, key);\n }\n const foundComponent = this.getRenderComponent(oTypes, fields, DEFAULT_TOPOLOGY.value, defaultType);\n if (!foundComponent) {\n return this.lookupCache.add(null, key);\n }\n return this.lookupCache.add(foundComponent, key);\n }\n for (let i = 0; i < fields.length; i++) {\n const bestClass = this.bestClass(possibleClasses, oTypes);\n const component = bestClass && this.lookup(fields[i], bestClass, topology);\n if (component) {\n return this.lookupCache.add(component, key);\n }\n }\n for (let i = 0; i < fields.length; i++) {\n const component = this.lookup(fields[i], defaultType, topology);\n if (component) {\n return this.lookupCache.add(component, key);\n }\n }\n return this.lookupCache.add(null, key);\n }\n /**\n * Register a renderer for a type/property.\n * @param component The component to return for the rendering of the object.\n * @param type The type's SomeNode of the object which the {component} can render.\n * @param [field] The property's SomeNode if the {component} is a subject renderer.\n * @param [topology] An alternate topology this {component} should render.\n */\n registerRenderer(component, type, field = RENDER_CLASS_NAME$1.value, topology = DEFAULT_TOPOLOGY.value) {\n if (!field || !type) {\n return;\n }\n this.store(component, field, type, topology);\n this.lookupCache.clear();\n }\n /**\n * Find a component from a cache.\n * @param field The property (or {RENDER_CLASS_NAME})\n * @param klass Either the resource type or resource IRI\n * @param topology The topology\n * @param cache The cache to look into (defaults to the mapping)\n * @returns The appropriate component if any\n */\n lookup(field, klass, topology, cache = this.registrations) {\n const predMap = cache[field];\n if (!predMap || !predMap[klass]) {\n return undefined;\n }\n return predMap[klass][topology];\n }\n /** Store a component to a cache. */\n store(component, field, klass, topology, cache = this.registrations) {\n if (typeof cache[field] === \"undefined\") {\n cache[field] = {};\n }\n if (typeof cache[field][klass] === \"undefined\") {\n cache[field][klass] = {};\n }\n cache[field][klass][topology] = component;\n }\n /**\n * Expands the given types and returns the best class to render it with.\n * @param components The set of components to choose from.\n * @param [types] The types to expand on.\n * @returns The best match for the given components and types.\n */\n bestClass(components, types) {\n if (types.length > 0) {\n const direct = this.schema.sort(types).find((c) => components.indexOf(c) >= 0);\n if (direct) {\n return direct;\n }\n }\n const chain = this.schema.expand(types ?? []);\n return components.find((c) => chain.indexOf(c) > 0);\n }\n // interface ComponentMapping { [type: string]: { [obj: string]: { [topology: string]: T } }; }\n /**\n * Returns a list of classes which have registrations for a combination of {fields} and {topology}.\n * @private\n */\n registeredClasses(fields, topology) {\n const classes = [Resource.value];\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i];\n if (typeof this.registrations[field] === \"undefined\") {\n continue;\n }\n const types = Object.keys(this.registrations[field]);\n for (let j = 0; j < types.length; j++) {\n const compType = this.lookup(field, types[j], topology);\n if (compType !== undefined) {\n classes.push(types[j]);\n }\n }\n }\n return classes;\n }\n}\n\nconst createEqualComparator = (factory) => factory.supports[Feature.identity]\n ? (a, b) => a === b\n : factory.supports[Feature.idStamp]\n ? (a, b) => a?.id === b?.id\n : (a, b) => factory.equals(a, b);\n/** @internal */\nconst equals = createEqualComparator(rdfFactory);\nconst noIdError = (obj) => {\n throw new TypeError(`Factory has idStamp feature, but the property wasn't present on ${obj}`);\n};\nconst noValueError = (obj) => {\n throw new TypeError(`Unable to lookup property 'value' on ${obj}.`);\n};\n/** @internal */\nconst id = rdfFactory.supports[Feature.idStamp]\n ? (obj) => obj?.id || noIdError(obj)\n : (obj) => rdfFactory.id(obj);\n/** @internal */\nconst value = (obj) => obj?.value ?? noValueError(obj);\nconst idToValue = (recordId) => {\n if (recordId.includes(\":\") && !recordId.startsWith(\"_:\")) {\n return rdfFactory.namedNode(recordId);\n }\n else {\n return rdfFactory.blankNode(recordId);\n }\n};\n\n/**\n * Tries to schedule updates async if possible.\n */\nclass ProcessBroadcast {\n constructor(opts) {\n this.hasIdleCallback = \"requestIdleCallback\" in window;\n this.hasRequestAnimationFrame = \"requestAnimationFrame\" in window;\n this.resolve = () => undefined;\n this.timeout = opts.timeout;\n this.regUpdateTime = Date.now();\n this.bulkSubscriptions = opts.bulkSubscriptions;\n this.changedSubjects = opts.changedSubjects;\n this.subjectSubscriptions = opts.subjectSubscriptions;\n this.queue = this.queue.bind(this);\n }\n done() {\n return this.subjectSubscriptions.length === 0 && this.bulkSubscriptions.length === 0;\n }\n run() {\n if (this.timeout === 0) {\n this.queue();\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n this.resolve = resolve;\n this.queue();\n });\n }\n /**\n * Calls the subscriber callback function {reg} with the correct arguments according to its\n * registration settings.\n */\n callSubscriber(reg) {\n if (reg.markedForDelete) {\n return;\n }\n reg.callback(this.changedSubjects, this.regUpdateTime);\n }\n process() {\n if (this.bulkSubscriptions.length > 0) {\n this.callSubscriber(this.bulkSubscriptions.pop());\n }\n else if (this.subjectSubscriptions.length > 0) {\n this.callSubscriber(this.subjectSubscriptions.pop());\n }\n }\n queue(idleCallback) {\n if (this.timeout !== 0 && this.hasIdleCallback) {\n while (typeof idleCallback === \"object\"\n && (!this.done() && (idleCallback.timeRemaining() > 0 || idleCallback.didTimeout))) {\n this.process();\n }\n if (this.done()) {\n return this.resolve();\n }\n window.requestIdleCallback(this.queue, { timeout: this.timeout });\n }\n else if (this.timeout !== 0 && this.hasRequestAnimationFrame) {\n this.process();\n while (typeof idleCallback === \"number\" && (performance.now() - idleCallback) < 33) {\n this.process();\n }\n if (this.done()) {\n return this.resolve();\n }\n window.requestAnimationFrame(this.queue);\n }\n else {\n while (!this.done()) {\n this.process();\n }\n this.resolve();\n }\n }\n}\n\nconst http = createNS(\"http://www.w3.org/2011/http#\");\nvar http$1 = {\n ns: http,\n /* properties */\n status: http(\"status\"),\n statusCode: http(\"statusCode\"),\n};\n\nconst httph = createNS(\"http://www.w3.org/2007/ont/httph#\");\nvar httph$1 = {\n \"ns\": httph,\n /* properties */\n \"Exec-Action\": httph(\"Exec-Action\"),\n \"date\": httph(\"date\"),\n \"status\": httph(\"status\"),\n};\n\n/* global chrome */\nconst memberPrefix = ns(\"_\").value;\nconst find = (x, langPrefs) => {\n const language = isLiteral(x) ? x.language : null;\n const index = langPrefs.findIndex((pref) => pref === language);\n return index !== -1 ? index : Infinity;\n};\n/**\n * Filters {obj} to only include statements where the subject equals {predicate}.\n * @param obj The statements to filter.\n * @param predicate The subject to filter for.\n * @return A possibly empty filtered array of statements.\n */\nfunction allRDFPropertyStatements(obj, predicate) {\n if (typeof obj === \"undefined\") {\n return [];\n }\n if (rdfFactory.equals(predicate, member$1)) {\n return obj.filter((s) => rdfFactory.equals(s[QuadPosition.predicate], member$1)\n || s[QuadPosition.predicate].value.startsWith(memberPrefix));\n }\n return obj.filter((s) => rdfFactory.equals(s[QuadPosition.predicate], predicate));\n}\n/**\n * Filters {obj} on subject {predicate} returning the resulting statements' objects.\n * @see allRDFPropertyStatements\n */\nfunction allRDFValues(obj, predicate) {\n const props = allRDFPropertyStatements(obj, predicate);\n if (props.length === 0) {\n return [];\n }\n return props.map((s) => s[QuadPosition.object]);\n}\n/**\n * Resolve {predicate} to any value, if any. If present, additional values are ignored.\n */\nfunction anyRDFValue(obj, predicate) {\n if (!Array.isArray(obj)) {\n return undefined;\n }\n const match = rdfFactory.equals(predicate, member$1)\n ? obj.find((s) => s[QuadPosition.predicate].value.startsWith(memberPrefix))\n : obj.find((s) => rdfFactory.equals(s[QuadPosition.predicate], predicate));\n if (typeof match === \"undefined\") {\n return undefined;\n }\n return match[QuadPosition.object];\n}\nfunction doc(iri) {\n if (iri.value.includes(\"#\")) {\n return rdfFactory.namedNode(iri.value.split(\"#\").shift());\n }\n return iri;\n}\nfunction getPropBestLang(rawProp, langPrefs) {\n if (rawProp.length === 1) {\n return rawProp[0][QuadPosition.object];\n }\n return sortByBestLang(rawProp, langPrefs)[0][QuadPosition.object];\n}\nfunction getPropBestLangRaw(statements, langPrefs) {\n if (statements.length === 1) {\n return statements[0];\n }\n return sortByBestLang(statements, langPrefs)[0];\n}\nfunction getTermBestLang(rawTerm, langPrefs) {\n if (!Array.isArray(rawTerm)) {\n return rawTerm;\n }\n if (rawTerm.length === 1) {\n return rawTerm[0];\n }\n for (let i = 0; i < langPrefs.length; i++) {\n const pIndex = rawTerm.findIndex((p) => \"language\" in p && p.language === langPrefs[i]);\n if (pIndex >= 0) {\n return rawTerm[pIndex];\n }\n }\n return rawTerm[0];\n}\nfunction sortByBestLang(statements, langPrefs) {\n return statements.sort((a, b) => find(a[QuadPosition.object], langPrefs) - find(b[QuadPosition.object], langPrefs));\n}\n/**\n * Checks if the origin of {href} matches current origin from {window.location}\n * @returns `true` if matches, `false` otherwise.\n */\nfunction isDifferentOrigin(href) {\n if (typeof href !== \"string\" && href.termType === TermType.BlankNode) {\n return false;\n }\n const origin = typeof href !== \"string\" ? href.value : href;\n return !origin.startsWith(self.location.origin + \"/\");\n}\nfunction normalizeType(type) {\n return Array.isArray(type) ? type : [type];\n}\n\n/**\n * Extracts the content type from a request.\n * The content-type value has precedence if it contains a known type.\n * Otherwise it returns the extension if present, or the content-type without the encoding.\n *\n * @summary Extracts the content type from a request.\n */\nfunction getContentType(res) {\n const contentTypeRaw = getHeader(res, \"Content-Type\");\n if (contentTypeRaw === undefined || contentTypeRaw === null) {\n return \"\";\n }\n const contentType = contentTypeRaw.split(\";\")[0];\n const url = getURL(res);\n const urlMatch = url && new URL(url).href.match(/\\.([a-zA-Z0-9]{1,8})($|\\?|#)/);\n const ext = urlMatch ? urlMatch[1] : \"\";\n if (contentType) {\n const matched = contentTypeByMimeString(contentType, ext);\n if (matched) {\n return matched;\n }\n }\n if (ext && !NON_CONTENT_EXTS.includes(ext)) {\n return contentTypeByExtention(ext);\n }\n return contentTypeRaw.split(\";\")[0];\n}\nasync function getJSON(res) {\n if (res instanceof Response) {\n return res.json();\n }\n else if (res instanceof XMLHttpRequest) {\n return JSON.parse(res.responseText);\n }\n return JSON.parse(res.body);\n}\nfunction getHeader(res, header) {\n if (res instanceof Response) {\n return res.headers.get(header);\n }\n else if (typeof XMLHttpRequest !== \"undefined\" && res instanceof XMLHttpRequest) {\n return res.getResponseHeader(header) || null;\n }\n else if (res && res.headers) {\n const headerValue = res.headers[header];\n return headerValue || null;\n }\n return null;\n}\nfunction getURL(res) {\n if (typeof XMLHttpRequest !== \"undefined\" && res instanceof XMLHttpRequest) {\n return res.responseURL;\n }\n else if (\"requestedURI\" in res) {\n return res.requestedURI;\n }\n return res.url;\n}\nfunction contentTypeByExtention(ext) {\n if ([\"ttl\"].includes(ext)) {\n return F_TURTLE;\n }\n else if ([\"ntriples\", \"nt\"].includes(ext)) {\n return F_NTRIPLES;\n }\n else if ([\"jsonld\"].includes(ext)) {\n return F_JSONLD;\n }\n else if ([\"n3\"].includes(ext)) {\n return F_N3;\n }\n return ext;\n}\nfunction contentTypeByMimeString(contentType, ext) {\n if (contentType.includes(F_NTRIPLES) || contentType.includes(F_NTRIPLES_DEP)) {\n return F_NTRIPLES;\n }\n else if (contentType.includes(F_PLAIN) && [\"ntriples\", \"nt\"].indexOf(ext) >= 0) {\n return F_NTRIPLES;\n }\n else if (contentType.includes(F_TURTLE) || contentType.includes(F_TURTLE_DEP)) {\n return F_TURTLE;\n }\n else if (contentType.includes(F_N3)) {\n return F_N3;\n }\n else if (contentType.includes(F_JSONLD)) {\n return F_JSONLD;\n }\n else if (contentType.includes(F_RDF_XML)) {\n return F_RDF_XML;\n }\n return undefined;\n}\n\nvar RecordState;\n(function (RecordState) {\n RecordState[RecordState[\"Absent\"] = 0] = \"Absent\";\n RecordState[RecordState[\"Queued\"] = 1] = \"Queued\";\n RecordState[RecordState[\"Requested\"] = 2] = \"Requested\";\n RecordState[RecordState[\"Receiving\"] = 3] = \"Receiving\";\n RecordState[RecordState[\"Present\"] = 4] = \"Present\";\n})(RecordState || (RecordState = {}));\n\nclass ProcessorError extends Error {\n constructor(msg, response) {\n super(msg);\n this.response = response;\n }\n}\n\nclass RequestInitGenerator {\n constructor(opts = {}) {\n this.baseHeaders = opts.headers || {};\n this.csrfFieldName = opts.csrfFieldName ?? \"csrf-token\";\n this.credentials = opts.credentials ?? \"include\";\n this.mode = opts.mode ?? \"same-origin\";\n this.xRequestedWith = opts.xRequestedWith ?? \"XMLHttpRequest\";\n }\n authenticityHeader(options = {}) {\n return Object.assign({}, options, {\n \"X-CSRF-Token\": this.getAuthenticityToken(),\n \"X-Requested-With\": this.xRequestedWith,\n });\n }\n generate(method = \"GET\", accept = \"text/turtle\", body) {\n const isFormEncoded = body instanceof URLSearchParams;\n const headers = this.getHeaders(accept);\n if (isFormEncoded) {\n headers[\"Content-Type\"] = \"application/x-www-form-urlencoded; charset=UTF-8\";\n }\n return {\n body: isFormEncoded ? body.toString() : body,\n credentials: this.credentials,\n headers,\n method: method.toUpperCase(),\n mode: this.mode,\n };\n }\n getHeaders(accept) {\n const acceptHeader = Object.assign({}, this.baseHeaders, { Accept: accept });\n if (this.credentials === \"include\" || this.credentials === \"same-origin\") {\n return this.authenticityHeader(acceptHeader);\n }\n return acceptHeader;\n }\n getMetaContent(name) {\n const header = document.head && document.head.querySelector(`meta[name=\"${name}\"]`);\n return header && header.getAttribute(\"content\");\n }\n getAuthenticityToken() {\n return this.getMetaContent(this.csrfFieldName) || \"\";\n }\n}\n\nconst SAFE_METHODS = [\"GET\", \"HEAD\", \"OPTIONS\", \"CONNECT\", \"TRACE\"];\nasync function handleStatus(res) {\n if (res.status === NOT_FOUND) {\n throw {\n message: `404: '${getURL(res)}' could not be found`,\n res,\n };\n }\n else if (res.status >= BAD_REQUEST && res.status < INTERNAL_SERVER_ERROR) {\n if ((getHeader(res, \"Content-Type\") || \"\").includes(\"json\")) {\n const body = await getJSON(res);\n throw {\n message: \"errors\" in body ? body.errors && body.errors[0] && body.errors[0].message : \"\",\n res,\n };\n }\n throw {\n message: `404: '${getURL(res)}' could not be found`,\n res,\n };\n }\n else if (res.status >= INTERNAL_SERVER_ERROR) {\n return Promise.reject({\n message: \"Internal server error\",\n res,\n });\n }\n return res;\n}\n/**\n * Pushes in-place value {v} onto an array under key {k} of Map {map}.\n * @param map The reference to the Map to add the data to.\n * @param k The key on {map}. An array is initialized when it doesn't yet exists.\n * @param v The value to push on the array under {k}.\n */\nfunction pushToMap(map, k, v) {\n if (typeof map[k] === \"undefined\") {\n map[k] = [];\n }\n map[k].push(v);\n}\n/**\n * Saves response metadata into a graph.\n * @param iri The original iri that was fetched.\n * @param res The (fetch) response object from the request.\n * @returns A graph with metadata about the response.\n */\nfunction processResponse(iri, res) {\n const rawURL = getURL(res);\n const origin = typeof iri === \"string\"\n ? rdfFactory.namedNode(new URL(rawURL).origin)\n : site(iri);\n if (rawURL && iri !== rawURL) {\n return [\n [\n typeof iri === \"string\" ? rdfFactory.namedNode(iri) : iri,\n rdfFactory.namedNode(\"http://www.w3.org/2002/07/owl#sameAs\"),\n rdfFactory.namedNode(rawURL),\n origin,\n ],\n ];\n }\n return [];\n}\nconst emptyRequest = Object.freeze({\n lastRequested: null,\n requested: false,\n status: null,\n timesRequested: 0,\n});\nclass DataProcessor {\n constructor(opts) {\n this.deltas = [];\n this.accept = opts.accept || {\n default: \"\",\n };\n this.bulkEndpoint = opts.bulkEndpoint || `${typeof window !== \"undefined\" ? window.location.origin : \"\"}/link-lib/bulk`;\n this._dispatch = opts.dispatch;\n this.invalidationMap = new Map();\n this.requestInitGenerator = opts.requestInitGenerator || new RequestInitGenerator();\n this.mapping = opts.mapping || {};\n this.report = opts.report;\n this.requestMap = new Map();\n this.statusMap = {};\n this.store = opts.store;\n this.fetch = opts.fetch || (typeof window !== \"undefined\" && typeof fetch !== \"undefined\"\n ? fetch.bind(window)\n : (_, __) => Promise.reject());\n if (opts.transformers) {\n opts.transformers.forEach((t) => this.registerTransformer(t.transformer, t.mediaType, t.acceptValue));\n }\n this.execExecHeader = this.execExecHeader.bind(this);\n this.processExecAction = this.processExecAction.bind(this);\n this.feedResponse = this.feedResponse.bind(this);\n }\n get dispatch() {\n if (typeof this._dispatch === \"undefined\") {\n throw new Error(\"Invariant: cannot call `dispatch` before initialization is complete\");\n }\n return this._dispatch;\n }\n set dispatch(value) {\n this._dispatch = value;\n }\n async execActionByIRI(subject, dataTuple) {\n const [graph, blobs = []] = dataTuple;\n if (this.store.getInternalStore().store.getRecord(subject.value) === undefined) {\n await this.getEntity(subject);\n }\n const target$1 = this.store.getResourceProperty(subject, target);\n if (!target$1 || target$1.termType === \"Collection\" || target$1.termType === TermType.Literal) {\n throw new ProcessorError(MSG_INCORRECT_TARGET);\n }\n const urls = this.store.getResourceProperty(target$1, url);\n const url$1 = Array.isArray(urls) ? urls[0] : urls;\n if (!url$1) {\n throw new ProcessorError(MSG_URL_UNDEFINED);\n }\n if (url$1.termType !== TermType.NamedNode) {\n throw new ProcessorError(MSG_URL_UNRESOLVABLE);\n }\n const targetMethod = this.store.getResourceProperty(target$1, httpMethod);\n const method = typeof targetMethod !== \"undefined\" ? targetMethod.value : \"GET\";\n const opts = this.requestInitGenerator.generate(method, this.acceptForHost(url$1));\n if (opts.headers instanceof Headers) {\n opts.headers.set(\"Request-Referrer\", subject.value);\n }\n else if (opts.headers && !Array.isArray(opts.headers)) {\n opts.headers[\"Request-Referrer\"] = subject.value;\n }\n if (!SAFE_METHODS.includes(method) && graph && graph.store.recordCount > 0) {\n if (opts.headers instanceof Headers) {\n opts.headers.delete(\"Content-Type\");\n }\n else if (opts.headers && !Array.isArray(opts.headers)) {\n delete opts.headers[\"Content-Type\"];\n }\n const data = new FormData();\n const rdfSerialization = this.serialize(graph.quads);\n data.append(ll$1.graph.toString(), new Blob([rdfSerialization], { type: F_NTRIPLES }));\n for (let i = 0; i < blobs.length; i++) {\n data.append(blobs[i][0].toString(), blobs[i][1]);\n }\n opts.body = data;\n }\n const resp = await this.fetch(url$1.value, opts).then(this.processExecAction);\n if (resp.status > BAD_REQUEST) {\n // TODO: process responses with a correct content-type.\n throw new ProcessorError(MSG_BAD_REQUEST, resp);\n }\n const statements = await this.feedResponse(resp, true);\n const location = getHeader(resp, \"Location\");\n const fqLocation = location && new URL(location || \"\", window.location.origin).toString();\n const iri = fqLocation && rdfFactory.namedNode(fqLocation) || null;\n return {\n data: statements,\n iri,\n };\n }\n flush() {\n const deltas = this.deltas;\n this.deltas = [];\n for (let i = 0; i < deltas.length; i++) {\n try {\n this.processDelta(deltas[i]);\n }\n catch (e) {\n this.report(e);\n }\n }\n return new Set();\n }\n getEntities(resources) {\n const toBeFetched = new Set();\n for (const [iri, fetchOpts] of resources) {\n const rId = id(iri);\n if (fetchOpts && fetchOpts.reload) ;\n else if (this.requestMap.has(rId)) {\n continue;\n }\n toBeFetched.add(iri);\n }\n if (toBeFetched.size === 0) {\n return Promise.resolve([]);\n }\n const body = new URLSearchParams();\n for (const entry of toBeFetched) {\n body.append(\"resource[]\", encodeURIComponent(entry.value));\n }\n const opts = this.requestInitGenerator.generate(\"POST\", this.acceptForHost(this.bulkEndpoint), body);\n const chain = this.fetch(this.bulkEndpoint, opts)\n .then(this.feedResponse)\n .catch((err) => {\n const hasStatus = err && \"status\" in err;\n this.report(err);\n const status = rdfFactory.literal(hasStatus ? err.status : 499, integer);\n const delta = resources\n .map(([s]) => {\n this.setStatus(s, status);\n return [s, http$1.statusCode, status, ll$1.meta];\n });\n return this.processDelta(delta);\n }).finally(() => {\n toBeFetched.forEach((resource) => this.requestMap.delete(id(resource)));\n });\n toBeFetched.forEach((resource) => {\n this.requestMap.set(id(resource), chain);\n this.setStatus(resource, null);\n });\n return chain;\n }\n /**\n * @see LinkedDataAPI#getEntity\n * @param iri The SomeNode of the entity\n * @param opts The options for fetch-/processing the resource.\n * @param opts The options for fetch-/processing the resource.\n * @return A promise with the resulting entity\n */\n async getEntity(iri, opts) {\n const url = new URL(iri.value);\n url.hash = \"\";\n const requestIRI = rdfFactory.namedNode(url.toString());\n const existing = this.requestMap.get(requestIRI.id);\n if (existing) {\n return existing;\n }\n let preExistingData = [];\n if (opts && opts.clearPreviousData) {\n preExistingData = this.store.quadsFor(iri);\n preExistingData = preExistingData.concat(this.store.quadsFor(requestIRI));\n }\n try {\n const reqOpts = this.requestInitGenerator.generate(\"GET\", this.acceptForHost(requestIRI));\n const req = this.fetch(requestIRI.value, reqOpts)\n .then((response) => {\n this.setStatus(iri, response.status);\n return response;\n })\n .then(this.feedResponse)\n .catch((err) => {\n this.report(err);\n const hasStatus = err && \"status\" in err;\n const status = rdfFactory.literal(hasStatus ? err.status : 499, integer);\n this.setStatus(iri, status);\n const delta = [\n [requestIRI, http$1.statusCode, status, ll$1.meta],\n ];\n return this.processDelta(delta);\n });\n this.requestMap.set(id(requestIRI), req);\n return await req;\n }\n catch (e) {\n if (typeof e.res === \"undefined\") {\n throw e;\n }\n this.store.removeQuads(preExistingData);\n const responseQuads = processResponse(iri, e.res);\n this.setStatus(iri, 499);\n this.store.addQuads(responseQuads);\n return responseQuads;\n }\n finally {\n this.requestMap.delete(id(requestIRI));\n }\n }\n /**\n * @see LinkedDataAPI#getStatus for documentation\n */\n getStatus(iri) {\n const irl = doc(iri);\n const existing = this.statusMap[irl.value];\n if (existing) {\n return existing;\n }\n return emptyRequest;\n }\n invalidate(iri, _err) {\n const subject = typeof iri === \"string\" ? rdfFactory.namedNode(iri) : iri;\n this.invalidationMap.set(id(subject));\n this.store.getInternalStore().store.transition(subject.value, RecordState.Absent);\n // TODO: Don't just remove, but rather mark it as invalidated so it's history isn't lost.\n this.clearStatus(subject);\n return true;\n }\n isInvalid(iri) {\n return this.invalidationMap.has(id(iri));\n }\n processExternalResponse(response) {\n return handleStatus(response)\n .then(this.feedResponse);\n }\n processDelta(delta) {\n let s;\n for (let i = 0, len = delta.length; i < len; i++) {\n s = delta[i];\n const subj = s ? s[0] : undefined;\n if (!s || !equals(s[QuadPosition.graph], ll$1.meta)) {\n continue;\n }\n if (equals(s[1], http$1.statusCode)) {\n const subject = subj;\n const status = parseInt(s[2].value, 10);\n this.removeInvalidation(subject);\n if (status >= 200 && status < 400) {\n this.store.getInternalStore().store.transition(s[0].value, RecordState.Present);\n this.setStatus(subject, Number.parseInt(s[2].value, 10), false);\n }\n else if (status >= 400 && status < 500) {\n this.store.getInternalStore().store.deleteRecord(s[0].value);\n this.store.getInternalStore().store.addField(s[0].value, type.value, ll$1.ErrorResource);\n this.store.getInternalStore().store.addField(s[0].value, type.value, ll$1.ClientError);\n this.store.getInternalStore().store.addField(s[0].value, http$1.statusCode.value, rdfFactory.literal(status));\n this.setStatus(subject, Number.parseInt(s[2].value, 10), false);\n }\n else if (status >= 500 && status < 600) {\n this.store.getInternalStore().store.deleteRecord(s[0].value);\n this.store.getInternalStore().store.addField(s[0].value, type.value, ll$1.ErrorResource);\n this.store.getInternalStore().store.addField(s[0].value, type.value, ll$1.ServerError);\n this.store.getInternalStore().store.addField(s[0].value, http$1.statusCode.value, rdfFactory.literal(status));\n this.setStatus(subject, Number.parseInt(s[2].value, 10), false);\n }\n else {\n this.setStatus(subject, Number.parseInt(s[2].value, 10), false);\n }\n }\n else if (equals(s[1], httph$1[\"Exec-Action\"])) {\n this.execExecHeader(s[2].value);\n }\n }\n return [];\n }\n /** Register a transformer so it can be used to interact with API's. */\n registerTransformer(transformer, mediaType, acceptValue) {\n const mediaTypes = Array.isArray(mediaType) ? mediaType : [mediaType];\n mediaTypes.forEach((type) => {\n pushToMap(this.mapping, type, transformer);\n this.accept.default = [this.accept.default, [type, acceptValue].join(\";\")].join();\n });\n }\n queueDelta(delta) {\n this.deltas.push(delta);\n const store = this.store.getInternalStore().store;\n const llNS = ll$1.ns(\"\").value;\n const ldNS = ns$1(\"\").value;\n for (const d of delta) {\n if (!d) {\n continue;\n }\n const g = d[QuadPosition.graph];\n if (g.value.startsWith(llNS) || g.value.startsWith(ldNS)) {\n const s = d[QuadPosition.subject].value;\n if (!this.statusMap[s]) {\n store.transition(s, RecordState.Receiving);\n }\n }\n }\n }\n setAcceptForHost(origin, acceptValue) {\n this.accept[new URL(origin).origin] = acceptValue;\n }\n acceptForHost(iri) {\n return this.accept[new URL(typeof iri === \"string\" ? iri : iri.value).origin]\n || this.accept.default;\n }\n execExecHeader(actionsHeader, args) {\n if (actionsHeader) {\n const actions = actionsHeader.split(\", \");\n for (let i = 0; i < actions.length; i++) {\n this.dispatch(rdfFactory.namedNode(actions[i]), args);\n }\n }\n }\n feedResponse(res, expedite = false) {\n if (res.status >= INTERNAL_SERVER_ERROR) {\n return Promise.reject(res);\n }\n const format = getContentType(res);\n const formatProcessors = this.mapping[format];\n const processor = formatProcessors && formatProcessors[0];\n if (processor === undefined) {\n return Promise.resolve([]);\n }\n res.expedite = expedite;\n return processor(res);\n }\n memoizeStatus(iri, s, transition = true) {\n if (transition) {\n this.store.getInternalStore().store.transition(iri.value, this.requestStatusToJournalStatus(s));\n }\n this.statusMap[iri.value] = s;\n return s;\n }\n clearStatus(iri) {\n this.statusMap[iri.value] = undefined;\n }\n requestStatusToJournalStatus(s) {\n if (s.requested && s.status === null) {\n return RecordState.Requested;\n }\n else if (s.requested) {\n return RecordState.Present;\n }\n else if (!s.requested && s.status === null) {\n return RecordState.Absent;\n }\n else {\n throw new Error(`Unmapped status ${s}`);\n }\n }\n processExecAction(res) {\n const actionsHeader = getHeader(res, \"Exec-Action\");\n this.execExecHeader(actionsHeader);\n return Promise.resolve(res);\n }\n removeInvalidation(subject) {\n this.invalidationMap.delete(id(subject));\n }\n serialize(data) {\n return data.reduce((acc, qdr) => acc.concat(rdfFactory.toNQ(rdfFactory.quad(qdr[QuadPosition.subject], qdr[QuadPosition.predicate], qdr[QuadPosition.object], qdr[QuadPosition.graph]))), \"\");\n }\n setStatus(iri, status, transition = true) {\n const url = doc(iri);\n const prevStatus = this.statusMap[url.value];\n this.memoizeStatus(url, {\n lastRequested: new Date(),\n lastResponseHeaders: null,\n requested: true,\n status,\n subject: iri,\n timesRequested: prevStatus ? prevStatus.timesRequested + 1 : 1,\n }, transition);\n }\n}\n\nconst mergeTerms = (a, b) => {\n if (Array.isArray(a)) {\n return Array.from(new Set([...a, ...normalizeType(b)]));\n }\n else if (a) {\n return Array.from(new Set([a, ...normalizeType(b)]));\n }\n else {\n return b;\n }\n};\nconst isLocalId = (id) => id.startsWith(\"_:\");\nconst isGlobalId = (id) => id.startsWith(\"/\") || (id.includes(\":\") && !id.startsWith(\"_:\"));\n\nconst doc$1 = (recordId) => {\n return recordId.split(\"#\")[0];\n};\nconst absentStatus = {\n current: RecordState.Absent,\n lastUpdate: -1,\n previous: RecordState.Absent,\n};\n// tslint:disable member-ordering\nclass RecordJournal {\n constructor(onChange, data) {\n this.data = {};\n this.onChange = () => undefined;\n this.onChange = onChange;\n if (data) {\n this.data = data;\n }\n }\n copy(onChange = null) {\n return new RecordJournal(onChange ?? this.onChange, JSON.parse(JSON.stringify(this.data)));\n }\n /**\n * Get the [RecordStatus] for the [recordId].\n * Will return an invalid status when passing a local id.\n */\n get(recordId) {\n return this.data[doc$1(recordId)] ?? absentStatus;\n }\n touch(recordId) {\n const docId = doc$1(recordId);\n if (this.data[docId] === undefined) {\n this.data[docId] = {\n current: RecordState.Absent,\n lastUpdate: Date.now(),\n previous: RecordState.Absent,\n };\n }\n else {\n this.data[docId].lastUpdate = Date.now();\n }\n this.onChange(docId);\n this.onChange(recordId);\n }\n transition(recordId, state) {\n const docId = doc$1(recordId);\n const existing = this.data[docId];\n const previous = existing !== undefined\n ? existing.current\n : RecordState.Absent;\n this.data[docId] = {\n current: state,\n lastUpdate: Date.now(),\n previous,\n };\n this.onChange(docId);\n if (docId !== recordId) {\n this.onChange(recordId);\n }\n }\n}\n\nconst idField = \"_id\";\nconst member = member$1.value;\nconst memberPrefix$1 = ns(\"_\").value;\nconst namedNode = rdfFactory.namedNode.bind(rdfFactory);\nconst blankNode = rdfFactory.blankNode.bind(rdfFactory);\nconst tryParseInt = (value) => {\n try {\n const parsed = parseInt(value, 10);\n return Number.isNaN(parsed) ? value : parsed;\n }\n catch (e) {\n return value;\n }\n};\nconst tryParseSeqNumber = (value) => {\n const ordinal = value.split(memberPrefix$1).pop();\n if (ordinal !== undefined) {\n return tryParseInt(ordinal);\n }\n else {\n return value;\n }\n};\nconst getSortedFieldMembers = (record) => {\n const values = [];\n const sortedEntries = Object\n .entries(record)\n .sort(([k1], [k2]) => {\n const a = tryParseSeqNumber(k1);\n const b = tryParseSeqNumber(k2);\n if (typeof a !== \"string\" && typeof b !== \"string\") {\n return a - b;\n }\n if (typeof a !== \"string\") {\n return -1;\n }\n return a < b ? -1 : (a > b ? 1 : 0);\n });\n for (const [f, v] of sortedEntries) {\n if (f === member || f.startsWith(memberPrefix$1)) {\n values.push(...normalizeType(v));\n }\n }\n return values;\n};\nclass StructuredStore {\n /**\n *\n * @param base\n * @param data Will be modified, so don't re-use the reference elsewhere.\n * @param onChange @internal\n */\n constructor(base = \"rdf:defaultGraph\", data = {}, onChange = () => undefined) {\n this.aliases = {};\n this.base = base;\n this.data = data ?? {};\n this.journal = new RecordJournal(onChange);\n for (const key in this.data) {\n if (this.data.hasOwnProperty(key)) {\n this.journal.transition(key, RecordState.Present);\n }\n }\n }\n static toSomeNode(id) {\n if (id.indexOf(\"_:\") === 0) {\n return blankNode(id);\n }\n else {\n return namedNode(id);\n }\n }\n get recordCount() {\n return Object.keys(this.data).length;\n }\n getStatus(recordId) {\n return this.journal.get(this.primary(recordId));\n }\n transition(recordId, state) {\n this.journal.transition(recordId, state);\n }\n touch(recordId) {\n this.journal.touch(recordId);\n }\n deleteRecord(recordId) {\n if (this.data[recordId] === undefined) {\n if (this.journal.get(recordId).current !== RecordState.Absent) {\n this.journal.transition(recordId, RecordState.Absent);\n }\n }\n else {\n this.journal.transition(recordId, RecordState.Absent);\n delete this.data[recordId];\n }\n }\n getField(recordId, field) {\n if (field === member) {\n const record = this.getRecord(recordId);\n if (record === undefined) {\n return undefined;\n }\n return getSortedFieldMembers(record);\n }\n else {\n return this.getRecord(recordId)?.[field];\n }\n }\n /**\n * @returns Whether a mutation has occurred.\n */\n setField(recordId, field, value) {\n if (field === idField) {\n throw new Error(\"Can't set system fields\");\n }\n this.initializeRecord(recordId);\n const current = this.getRecord(recordId);\n if (current[field] === value) {\n return false;\n }\n this.setRecord(recordId, {\n ...current,\n [field]: (Array.isArray(value) && value.length === 1)\n ? value[0]\n : value,\n });\n return true;\n }\n /**\n * Adds a value to a field.\n * @returns Whether a mutation has occurred.\n */\n addField(recordId, field, value) {\n if (field === idField) {\n throw new Error(\"Can't set system fields\");\n }\n this.initializeRecord(recordId);\n const existingRecord = this.getRecord(recordId);\n const existingValue = existingRecord?.[field];\n const existingIsArray = Array.isArray(existingValue);\n const valueAlreadyPresent = existingIsArray\n ? existingValue.includes(value)\n : existingValue !== undefined && existingValue === value;\n if (valueAlreadyPresent) {\n return false;\n }\n const combined = existingIsArray\n ? [...existingValue, value]\n : existingValue\n ? [existingValue, value]\n : value;\n this.setRecord(recordId, {\n ...existingRecord,\n [field]: combined,\n });\n return true;\n }\n deleteField(recordId, field) {\n if (this.getField(recordId, field) === undefined) {\n return;\n }\n const next = {\n ...this.getRecord(recordId),\n };\n delete next[field];\n this.setRecord(recordId, next);\n }\n deleteFieldMatching(recordId, field, value) {\n const current = this.getField(recordId, field);\n if (current === undefined) {\n return;\n }\n if (Array.isArray(current) ? !current.includes(value) : current !== value) {\n return;\n }\n const rest = Array.isArray(current) ? current.filter((s) => s !== value) : undefined;\n if (rest !== undefined && rest.length > 0) {\n this.setField(recordId, field, rest);\n }\n else {\n this.deleteField(recordId, field);\n }\n }\n /**\n * Returns the [Id] which is used to store the data under.\n * @internal\n */\n primary(id) {\n return (this.aliases[id] ?? id);\n }\n /**\n * Find all records which reference this given [recordId]\n */\n references(recordId) {\n const references = [];\n const data = this.data;\n for (const rId in data) {\n if (!data.hasOwnProperty(rId)) {\n continue;\n }\n const record = data[rId];\n for (const field in record) {\n if (!record.hasOwnProperty(field) || field === idField) {\n continue;\n }\n const values = record[field];\n if (Array.isArray(values)) {\n for (const value of values) {\n if (value.termType !== TermType.Literal && value.value === recordId) {\n references.push(rId);\n }\n }\n }\n else {\n if (values.termType !== TermType.Literal && values.value === recordId) {\n references.push(rId);\n }\n }\n }\n }\n return references;\n }\n /**\n * Sets the {previous} aliased to the topmost alias of {current}.\n * Aliasing only applies to record ids.\n * Any previous alias will be ignored, circular aliasing will be ignored.\n * Blank nodes should not be {current}.\n */\n setAlias(previous, current) {\n if (previous === current\n || this.aliases[previous] === current\n || this.aliases[current] === previous) {\n return;\n }\n if (this.aliases[current] !== undefined) {\n this.setAlias(previous, this.aliases[current]);\n return;\n }\n this.aliases[previous] = current;\n }\n allRecords() {\n return Object.values(this.data);\n }\n getRecord(recordId) {\n return this.data[this.primary(recordId)];\n }\n collectRecord(recordId, collected = []) {\n const record = this.getRecord(recordId);\n if (!record) {\n return undefined;\n }\n const unpack = (v) => {\n if (v.termType !== \"BlankNode\" || collected.includes(v.value)) {\n return v;\n }\n return this.collectRecord(v.value, [v.value, ...collected]) ?? v;\n };\n return Object.entries(record).reduce((acc, [k, v]) => ({\n [k]: (Array.isArray(v) ? v.map(unpack) : unpack(v)),\n ...acc,\n }), { _id: record._id });\n }\n setRecord(recordId, fields) {\n this.initializeRecord(recordId);\n this.data[recordId] = {\n ...fields,\n _id: this.data[recordId]._id,\n };\n this.journal.transition(recordId, RecordState.Present);\n return this.data[recordId];\n }\n initializeRecord(recordId) {\n if (this.data[recordId] === undefined) {\n this.journal.transition(recordId, RecordState.Receiving);\n this.data[recordId] = {\n _id: StructuredStore.toSomeNode(recordId),\n };\n }\n }\n}\n\nconst EMPTY_ST_ARR = Object.freeze([]);\nclass RDFAdapter {\n constructor(opts = {}) {\n this.recordCallbacks = [];\n this.store = new StructuredStore(\"rdf:defaultGraph\", opts.data, (recordId) => {\n if (opts.onChange) {\n opts.onChange(recordId);\n }\n this.recordCallbacks.forEach((cb) => cb(recordId));\n });\n this.rdfFactory = opts.rdfFactory ?? rdfFactory;\n opts.quads?.forEach((q) => this.add(q[QuadPosition.subject], q[QuadPosition.predicate], q[QuadPosition.object], q[QuadPosition.graph]));\n this.addRecordCallback(this.handleAlias.bind(this));\n this.storeGraph = this.rdfFactory.namedNode(this.store.base);\n }\n /** @deprecated */\n get quads() {\n const qdrs = [];\n const data = this.store.data;\n for (const recordId in data) {\n if (!data.hasOwnProperty(recordId)) {\n continue;\n }\n qdrs.push(...this.quadsForRecord(recordId));\n }\n return qdrs;\n }\n /** @deprecated */\n add(subject, predicate, object, _graph = this.rdfFactory.defaultGraph()) {\n const asQuadruple = [subject, predicate, object, _graph];\n this.store.addField(subject.value, predicate.value, object);\n return asQuadruple;\n }\n addRecordCallback(callback) {\n this.recordCallbacks.push(callback);\n }\n deleteRecord(subject) {\n this.store.deleteRecord(subject.value);\n }\n /**\n * Remove a quad from the store\n * @deprecated\n */\n remove(st) {\n const value = this.store.getField(st[QuadPosition.subject].value, st[QuadPosition.predicate].value);\n if (value === undefined) {\n throw new Error(`Quad to be removed is not on store: ${st}`);\n }\n this.store.deleteFieldMatching(st[QuadPosition.subject].value, st[QuadPosition.predicate].value, st[QuadPosition.object]);\n return this;\n }\n /** @deprecated */\n removeQuads(quads) {\n // Ensure we don't loop over the array we're modifying.\n const toRemove = quads.slice();\n for (let i = 0; i < toRemove.length; i++) {\n this.remove(toRemove[i]);\n }\n return this;\n }\n /** @deprecated */\n match(aSubject, aPredicate, aObject, justOne = false) {\n const subject = aSubject ? this.primary(aSubject) : null;\n const predicate = aPredicate ? this.primary(aPredicate) : null;\n const object = aObject\n ? (isNode(aObject) ? this.primary(aObject) : aObject)\n : null;\n let quads;\n if (subject && predicate) {\n const value = this.store.getField(subject.value, predicate.value);\n if (Array.isArray(value)) {\n quads = value.map((v) => [subject, predicate, v, this.storeGraph]);\n }\n else if (value) {\n quads = [[subject, predicate, value, this.storeGraph]];\n }\n else {\n quads = EMPTY_ST_ARR;\n }\n }\n else if (subject) {\n quads = this.quadsForRecord(subject.value);\n }\n else {\n quads = this.quads;\n }\n const filter = (q) => (subject === null || q[QuadPosition.subject] === subject)\n && (predicate === null || q[QuadPosition.predicate] === predicate)\n && (object === null || q[QuadPosition.object] === object);\n if (justOne) {\n const res = quads.find(filter);\n return res ? [res] : EMPTY_ST_ARR;\n }\n return quads.filter(filter);\n }\n /** @deprecated */\n quadsForRecord(recordId) {\n const factory = this.rdfFactory;\n const record = this.store.getRecord(recordId);\n if (record === undefined) {\n return EMPTY_ST_ARR;\n }\n const subject = isGlobalId(recordId)\n ? factory.namedNode(recordId)\n : factory.blankNode(recordId);\n const quadruples = [];\n for (const field in record) {\n if (!record.hasOwnProperty(field) || field === idField) {\n continue;\n }\n const value = record[field];\n const fieldTerm = factory.namedNode(field);\n if (Array.isArray(value)) {\n for (const v of value) {\n quadruples.push([subject, fieldTerm, v, this.storeGraph]);\n }\n }\n else {\n quadruples.push([subject, fieldTerm, value, this.storeGraph]);\n }\n }\n return quadruples;\n }\n /** @private */\n primary(node) {\n const p = this.store.primary(node.value);\n if (isLocalId(p)) {\n return this.rdfFactory.blankNode(p);\n }\n else {\n return this.rdfFactory.namedNode(p);\n }\n }\n handleAlias(recordId) {\n const rawRecord = this.store.data[recordId];\n if (rawRecord === undefined) {\n return;\n }\n const sameAsValue = rawRecord[sameAs.value];\n if (sameAsValue) {\n this.store.setAlias(rawRecord._id.value, (Array.isArray(sameAsValue) ? sameAsValue[0] : sameAsValue).value);\n }\n }\n}\n\nconst CI_MATCH_PREFIX = 0;\nconst CI_MATCH_SUFFIX = 1;\n/**\n * Expands a property if it's in short-form while preserving long-form.\n * Note: The vocabulary needs to be present in the store prefix mapping\n * @param prop The short- or long-form property\n * @param namespaces Object of namespaces by their abbreviation.\n * @returns The (expanded) property\n */\nfunction expandProperty(prop, namespaces = {}) {\n if (!prop) {\n return prop;\n }\n if (typeof prop !== \"string\"\n && Object.prototype.hasOwnProperty.call(prop, \"termType\")\n && prop.termType === \"NamedNode\") {\n return rdfFactory.namedNode(prop.value);\n }\n if (typeof prop === \"object\") {\n if (prop.termType === \"NamedNode\") {\n return rdfFactory.namedNode(prop.value);\n }\n return undefined;\n }\n if (prop.indexOf(\"/\") >= 1) {\n if (prop.startsWith(\"<\") && prop.endsWith(\">\")) {\n return rdfFactory.namedNode(prop.slice(1, -1));\n }\n return rdfFactory.namedNode(prop);\n }\n const matches = prop.split(\":\");\n const constructor = namespaces[matches[CI_MATCH_PREFIX]]?.ns;\n return constructor && constructor(matches[CI_MATCH_SUFFIX]);\n}\n\nconst BASE = 36;\nconst DEC_CUTOFF = 2;\nconst IRI_LEN = 20;\nfunction isPlainObject(o) {\n return typeof o === \"object\"\n && o !== null\n && !NON_DATA_OBJECTS_CTORS.find((c) => typeof o.prototype !== \"undefined\" && o instanceof c)\n && !Object.prototype.hasOwnProperty.call(o, \"termType\");\n}\nfunction isIterable(o) {\n return Array.isArray(o) || o instanceof Set;\n}\nfunction uploadIRI() {\n return ll$1.ns(`blobs/a${Math.random().toString(BASE).substr(DEC_CUTOFF, IRI_LEN)}`);\n}\n/**\n * Converts an array to an RDF list-shaped {DataObject} for serialization.\n */\nfunction list(arr) {\n // @ts-ignore\n return arr.reduceRight((acc, next) => ({\n [first.toString()]: next,\n [rest.toString()]: acc,\n }), nil);\n}\n/**\n * Converts an array to an RDF sequence-shaped {DataObject} for serialization.\n */\nfunction seq(arr, id) {\n const base = { [type.toString()]: Seq };\n if (id) {\n base[\"@id\"] = id;\n }\n return arr.reduce((acc, next, n) => Object.assign(acc, { [ns(`_${n}`).toString()]: next }), base);\n}\nconst isFile = (value) => typeof File !== \"undefined\" && value instanceof File;\n/** @private */\nfunction processObject(subject, predicate, datum, store, ns) {\n let blobs = [];\n if (isIterable(datum)) {\n for (const subResource of datum) {\n blobs = blobs.concat(processObject(subject, predicate, subResource, store, ns));\n }\n }\n else if (typeof datum === \"string\"\n || typeof datum === \"number\"\n || typeof datum === \"boolean\"\n || datum instanceof Date) {\n store.store.addField(subject.value, predicate.value, rdfFactory.literal(datum));\n }\n else if (isFile(datum)) {\n const f = uploadIRI();\n blobs.push([f, datum]);\n store.store.addField(subject.value, predicate.value, f);\n }\n else if (isPlainObject(datum)) {\n const id = datum[\"@id\"] || rdfFactory.blankNode();\n blobs = blobs.concat(processDataObject(id, datum, store, ns));\n store.store.addField(subject.value, predicate.value, id);\n }\n else if (datum && datum.termType === TermType.NamedNode) {\n store.store.addField(subject.value, predicate.value, rdfFactory.namedNode(datum.value));\n }\n else if (datum && datum.termType === TermType.Literal) {\n store.store.addField(subject.value, predicate.value, rdfFactory.literal(datum.value, datum.language || rdfFactory.namedNode(datum.datatype.value)));\n }\n else if (datum !== null && datum !== undefined) {\n store.add(subject, predicate, rdfFactory.literal(datum));\n }\n return blobs;\n}\nfunction processDataObject(subject, data, store, ns) {\n let blobs = [];\n const keys = Object.keys(data);\n for (let i = 0; i < keys.length; i++) {\n if (keys[i] === \"@id\") {\n continue;\n }\n const predicate = expandProperty(keys[i], ns || {});\n const datum = data[keys[i]];\n if (predicate === undefined) {\n throw new Error(`Unknown predicate ${keys[i]} given (for subject '${subject}').`);\n }\n blobs = blobs.concat(processObject(subject, predicate, datum, store, ns));\n }\n return blobs;\n}\nfunction dataToGraphTuple(data, ns) {\n const store = new RDFAdapter();\n const blobs = processDataObject(MAIN_NODE_DEFAULT_IRI, data, store, ns);\n return [store, blobs];\n}\n/**\n * Convert a DataObject into a graph. Useful for writing test data in semi-plain JS objects\n * @param iriOrData The data object or an iri for the top-level object.\n * @param data The data object if an IRI was passed.\n * @param store A graph to write the statements into.\n * @param ns Namespace mapping for converting shortened keys.\n */\nfunction toGraph(iriOrData, data, store, ns) {\n const passedIRI = iriOrData.termType === TermType.BlankNode || iriOrData.termType === TermType.NamedNode;\n if (passedIRI && !data) {\n throw new TypeError(\"Only an IRI was passed to `toObject`, a valid data object has to be the second argument\");\n }\n const embeddedIRI = (passedIRI ? data : iriOrData)[\"@id\"];\n let iri;\n if (embeddedIRI) {\n if (typeof embeddedIRI !== \"string\") {\n throw new TypeError(\"Embedded IRI (`@id`) value must be of type string\");\n }\n iri = rdfFactory.namedNode(embeddedIRI);\n }\n else {\n iri = passedIRI ? iriOrData : rdfFactory.blankNode();\n }\n const dataObj = passedIRI ? data : iriOrData;\n const s = store || new RDFAdapter();\n const blobs = processDataObject(iri, dataObj, s, ns);\n return [iri, s, blobs];\n}\n\nconst matchSingle = (graphIRI) => {\n const value = graphIRI.value;\n return (graph) => equals(graph, graphIRI) || graph.value.startsWith(value);\n};\nconst isInGraph = (graphIRIS) => {\n if (graphIRIS.length === 0) {\n throw new Error(\"Pass a default graph explicitly\");\n }\n const matchers = graphIRIS.map((iri) => matchSingle(iri));\n return (graph) => matchers.some((matcher) => matcher(graph));\n};\nconst pushQuadruple = (arr, quadruple, graph) => {\n arr.push([\n quadruple[QuadPosition.subject],\n quadruple[QuadPosition.predicate],\n quadruple[QuadPosition.object],\n graph,\n ]);\n};\nconst deltaProcessor = (addGraphIRIS, replaceGraphIRIS, removeGraphIRIS, purgeGraphIRIS, sliceGraphIRIS) => {\n const defaultGraph = rdfFactory.defaultGraph();\n const isAdd = isInGraph(addGraphIRIS);\n const isReplace = isInGraph(replaceGraphIRIS);\n const isRemove = isInGraph(removeGraphIRIS);\n const isPurge = isInGraph(purgeGraphIRIS);\n const isSlice = isInGraph(sliceGraphIRIS);\n return (store) => (delta) => {\n const addable = [];\n const replaceable = [];\n const removable = [];\n let quad;\n for (let i = 0, len = delta.length; i < len; i++) {\n quad = delta[i];\n if (!quad) {\n continue;\n }\n const g = new URL(quad[QuadPosition.graph].value).searchParams.get(\"graph\");\n const graph = g ? rdfFactory.termFromNQ(g) : defaultGraph;\n if (isAdd(quad[QuadPosition.graph])) {\n pushQuadruple(addable, quad, graph);\n }\n else if (isReplace(quad[QuadPosition.graph])) {\n pushQuadruple(replaceable, quad, graph);\n }\n else if (isRemove(quad[QuadPosition.graph])) {\n removable.push(...store.match(quad[QuadPosition.subject], quad[QuadPosition.predicate], null));\n }\n else if (isPurge(quad[QuadPosition.graph])) {\n removable.push(...store.match(quad[QuadPosition.subject], null, null));\n }\n else if (isSlice(quad[QuadPosition.graph])) {\n removable.push(...store.match(quad[QuadPosition.subject], quad[QuadPosition.predicate], quad[QuadPosition.object]));\n }\n }\n return [\n addable,\n replaceable,\n removable,\n ];\n };\n};\n\nconst EMPTY_ST_ARR$1 = Object.freeze([]);\n/**\n * Provides a clean consistent interface to stored (RDF) data.\n */\nclass RDFStore {\n constructor({ data, deltaProcessorOpts, innerStore } = {}) {\n this.langPrefs = Array.from(typeof navigator !== \"undefined\"\n ? (navigator.languages || [navigator.language])\n : [\"en\"]);\n this.changedResources = new Set();\n this.deltas = [];\n this.store = new RDFAdapter({\n onChange: this.handleChange.bind(this),\n });\n this.defaultGraph = this.rdfFactory.defaultGraph();\n this.processDelta = this.processDelta.bind(this);\n this.store = innerStore || new RDFAdapter({ data, onChange: this.handleChange.bind(this) });\n const defaults = {\n addGraphIRIS: [ll$1.add, add],\n purgeGraphIRIS: [ll$1.purge, purge],\n removeGraphIRIS: [ll$1.remove, remove],\n replaceGraphIRIS: [\n ll$1.replace,\n replace,\n rdfFactory.defaultGraph(),\n ],\n sliceGraphIRIS: [ll$1.slice, slice],\n };\n this.deltaProcessor = deltaProcessor(deltaProcessorOpts?.addGraphIRIS || defaults.addGraphIRIS, deltaProcessorOpts?.replaceGraphIRIS || defaults.replaceGraphIRIS, deltaProcessorOpts?.removeGraphIRIS || defaults.removeGraphIRIS, deltaProcessorOpts?.purgeGraphIRIS || defaults.purgeGraphIRIS, deltaProcessorOpts?.sliceGraphIRIS || defaults.sliceGraphIRIS)(this.store);\n }\n get rdfFactory() {\n return rdfFactory;\n }\n set rdfFactory(_) {\n throw new Error(\"Factory is global (see @ontologies/core)\");\n }\n /** @deprecated */\n add(subject, predicate, object) {\n return this.store.add(subject, predicate, object);\n }\n /**\n * Add statements to the store.\n * @param data Data to parse and add to the store.\n * @deprecated\n */\n addQuads(data) {\n if (!Array.isArray(data)) {\n throw new TypeError(\"An array of quads must be passed to addQuads\");\n }\n for (const q of data) {\n this.store.store.addField(q[QuadPosition.subject].value, q[QuadPosition.predicate].value, q[QuadPosition.object]);\n }\n }\n /** @deprecated */\n addQuadruples(data) {\n const statements = new Array(data.length);\n for (let i = 0, len = data.length; i < len; i++) {\n statements[i] = this.store.add(data[i][0], data[i][1], data[i][2], data[i][3]);\n }\n return statements;\n }\n /** @deprecated */\n primary(term) {\n return this.store.primary(term);\n }\n /**\n * Flushes the change buffer to the return value.\n * @return Statements held in memory since the last flush.\n */\n flush() {\n const deltas = this.deltas;\n this.deltas = [];\n for (let i = 0; i < deltas.length; i++) {\n this.processDelta(deltas[i]);\n }\n const changes = this.changedResources;\n this.changedResources = new Set();\n return changes;\n }\n /** @private */\n getInternalStore() {\n return this.store;\n }\n references(recordId) {\n return this.store.store.references(recordId.value);\n }\n /** @deprecated */\n match(subj, pred, obj, justOne = false) {\n return this.store.match(subj, pred, obj, justOne) ?? EMPTY_ST_ARR$1;\n }\n processDelta(delta) {\n const [addables, replacables, removables,] = this.deltaProcessor(delta);\n this.removeQuads(removables);\n return this.replaceMatches(replacables).concat(this.addQuadruples(addables));\n }\n removeResource(subject) {\n this.touch(subject);\n this.store.deleteRecord(subject);\n }\n /** @deprecated */\n removeQuads(statements) {\n this.store.removeQuads(statements);\n }\n /** @deprecated */\n replaceMatches(statements) {\n for (let i = 0; i < statements.length; i++) {\n this.removeQuads(this.match(statements[i][0], statements[i][1], null));\n }\n return this.addQuadruples(statements);\n }\n getResourcePropertyRaw(subject, property) {\n const properties = normalizeType(property);\n const matched = [];\n for (const prop of properties) {\n const quads = normalizeType(this.store.store.getField(subject.value, prop.value))\n .filter((v) => v !== undefined)\n .map((v) => [subject, prop, v, this.defaultGraph]);\n matched.push(...quads);\n }\n if (matched.length === 0) {\n return EMPTY_ST_ARR$1;\n }\n return sortByBestLang(matched, this.langPrefs);\n }\n getResourceProperties(subject, property) {\n if (property === type) {\n const value = this.store.store.getField(subject.value, type.value);\n if (!value) {\n return EMPTY_ST_ARR$1;\n }\n else {\n return normalizeType(value);\n }\n }\n const properties = normalizeType(property);\n const matched = [];\n for (const prop of properties) {\n const quads = normalizeType(this.store.store.getField(subject.value, prop.value))\n .filter((v) => v !== undefined);\n matched.push(...quads);\n }\n if (matched.length === 0) {\n return EMPTY_ST_ARR$1;\n }\n return matched;\n }\n getResourceProperty(subject, property) {\n if (!Array.isArray(property) && equals(property, type)) {\n return this.store.store.getField(subject.value, type.value);\n }\n const rawProp = this.getResourcePropertyRaw(subject, property);\n if (rawProp.length === 0) {\n return undefined;\n }\n return getPropBestLang(rawProp, this.langPrefs);\n }\n queueDelta(delta) {\n this.deltas.push(delta);\n }\n /**\n * Searches the store for all the quads on {iri} (so not all statements relating to {iri}).\n * @param subject The identifier of the resource.\n */\n quadsFor(subject) {\n return this.store.quadsForRecord(subject.value);\n }\n touch(iri) {\n this.store.store.touch(iri.value);\n }\n workAvailable() {\n return this.deltas.length + this.changedResources.size;\n }\n handleChange(docId) {\n this.changedResources.add(docId);\n }\n}\n\nconst nsOWLsameAs = sameAs.value;\nconst OWL = {\n axioms: [],\n processStatement(recordId, field, value, ctx) {\n if (field === nsOWLsameAs && recordId !== value.value) {\n const a = ctx.equivalenceSet.add(value.value);\n const b = ctx.equivalenceSet.add(recordId);\n ctx.equivalenceSet.union(a, b);\n }\n },\n processType(_, __) {\n return false;\n },\n};\n\nconst defaultGraph = rdfFactory.defaultGraph();\n/**\n * Implements the RDF/RDFS axioms and rules.\n */\nconst RDFS = {\n axioms: [\n [type, domain, Resource, defaultGraph],\n [domain, domain, Property, defaultGraph],\n [range, domain, Property, defaultGraph],\n [subPropertyOf, domain, Property, defaultGraph],\n [subClassOf, domain, Class, defaultGraph],\n [subject, domain, Statement, defaultGraph],\n [predicate, domain, Statement, defaultGraph],\n [object, domain, Statement, defaultGraph],\n [member$1, domain, Resource, defaultGraph],\n [first, domain, List, defaultGraph],\n [rest, domain, List, defaultGraph],\n [seeAlso, domain, Resource, defaultGraph],\n [isDefinedBy, domain, Resource, defaultGraph],\n [comment, domain, Resource, defaultGraph],\n [label, domain, Resource, defaultGraph],\n [value$1, domain, Resource, defaultGraph],\n [type, range, Class, defaultGraph],\n [domain, range, Class, defaultGraph],\n [range, range, Class, defaultGraph],\n [subPropertyOf, range, Property, defaultGraph],\n [subClassOf, range, Class, defaultGraph],\n [subject, range, Resource, defaultGraph],\n [predicate, range, Resource, defaultGraph],\n [object, range, Resource, defaultGraph],\n [member$1, range, Resource, defaultGraph],\n [first, range, Resource, defaultGraph],\n [rest, range, List, defaultGraph],\n [seeAlso, range, Resource, defaultGraph],\n [isDefinedBy, range, Resource, defaultGraph],\n [comment, range, Literal, defaultGraph],\n [label, range, Literal, defaultGraph],\n [value$1, range, Resource, defaultGraph],\n [Alt, subClassOf, Container, defaultGraph],\n [Bag, subClassOf, Container, defaultGraph],\n [Seq, subClassOf, Container, defaultGraph],\n [ContainerMembershipProperty, subClassOf, Property, defaultGraph],\n [isDefinedBy, subPropertyOf, seeAlso, defaultGraph],\n [Datatype, subClassOf, Class, defaultGraph],\n [Resource, type, Class, defaultGraph],\n [Class, type, Class, defaultGraph],\n ],\n processStatement(recordId, field, value, ctx) {\n switch (field) {\n case subClassOf.value: { // C1 rdfs:subClassOf C2\n const objectType = value.termType;\n if (!(objectType === TermType.NamedNode || objectType === TermType.BlankNode)) {\n throw new Error(\"Object of subClassOf statement must be a NamedNode\");\n }\n const iSubject = recordId;\n const iObject = value.value;\n if (!ctx.superMap.has(iObject)) {\n ctx.superMap.set(iObject, new Set([Resource.value]));\n }\n let parents = ctx.superMap.get(iObject);\n if (parents === undefined) {\n parents = new Set();\n ctx.superMap.set(iObject, parents);\n }\n parents.add(iObject);\n const itemVal = ctx.superMap.get(iSubject) || new Set([iSubject]);\n parents.forEach((i) => itemVal.add(i));\n ctx.superMap.set(iSubject, itemVal);\n ctx.superMap.forEach((v, k) => {\n if (k !== iSubject && v.has(iSubject)) {\n itemVal.forEach(v.add, v);\n }\n });\n break;\n }\n }\n },\n processType(type, ctx) {\n RDFS.processStatement(type, subClassOf.value, Resource, ctx);\n return false;\n },\n};\n\n/**\n * DisjointSet\n * Module port from https://github.com/mljs/disjoint-set/\n */\n/**\n * @class DisjointSet\n */\nclass DisjointSet {\n constructor() {\n this.nodes = new Map();\n }\n /**\n * Adds an element as a new set\n * @param {*} value\n * @return {DisjointSetNode} Object holding the element\n */\n add(value) {\n let node = this.nodes.get(value);\n if (!node) {\n node = new DisjointSetNode(value);\n this.nodes.set(value, node);\n }\n return node;\n }\n allValues(value) {\n const node = this.nodes.get(value);\n if (!node) {\n return [value];\n }\n let currentParent = this.find(node);\n const entries = this.nodes.entries();\n const parents = [];\n const values = [];\n const process = (obj) => {\n for (const [k, v] of entries) {\n if (v.parent === obj && !parents.includes(v)) {\n values.push(k);\n parents.push(v);\n }\n }\n };\n process(currentParent);\n for (let i = 0; i < parents.length; i++) {\n currentParent = parents[i];\n process(currentParent);\n }\n return values;\n }\n /**\n * Merges the sets that contain x and y\n * @param {DisjointSetNode} x\n * @param {DisjointSetNode} y\n */\n union(x, y) {\n const rootX = this.find(x);\n const rootY = this.find(y);\n if (rootX === rootY) {\n return;\n }\n if (rootX.rank < rootY.rank) {\n rootX.parent = rootY;\n }\n else if (rootX.rank > rootY.rank) {\n rootY.parent = rootX;\n }\n else {\n rootY.parent = rootX;\n rootX.rank++;\n }\n }\n /**\n * Finds and returns the root node of the set that contains node\n * @param {DisjointSetNode} node\n * @return {DisjointSetNode}\n */\n find(node) {\n let rootX = node;\n while (rootX.parent !== null) {\n rootX = rootX.parent;\n }\n let toUpdateX = node;\n while (toUpdateX.parent !== null) {\n const toUpdateParent = toUpdateX;\n toUpdateX = toUpdateX.parent;\n toUpdateParent.parent = rootX;\n }\n return rootX;\n }\n /**\n * Returns true if x and y belong to the same set\n * @param {DisjointSetNode} x\n * @param {DisjointSetNode} y\n */\n connected(x, y) {\n return this.find(x) === this.find(y);\n }\n}\n// tslint:disable-next-line max-classes-per-file\nclass DisjointSetNode {\n constructor(value) {\n this.value = value;\n this.parent = null;\n this.rank = 0;\n }\n}\n\n/**\n * Implements some RDF/OWL logic to enhance the functionality of the property lookups.\n *\n * Basically duplicates some functionality already present in {IndexedFormula} IIRC, but this API should be more\n * optimized so it can be used in real-time by low-power devices as well.\n */\nclass Schema {\n constructor(liveStore) {\n this.equivalenceSet = new DisjointSet();\n this.superMap = new Map();\n this.processedTypes = [];\n this.liveStore = liveStore;\n this.liveStore.getInternalStore().addRecordCallback((recordId) => {\n const record = this.liveStore.getInternalStore().store.getRecord(recordId);\n if (record === undefined) {\n return;\n }\n this.process.call(this, record);\n });\n this.expansionCache = {};\n for (let i = 0; i < Schema.vocabularies.length; i++) {\n this.liveStore.addQuads(Schema.vocabularies[i].axioms);\n }\n const preexisting = liveStore.getInternalStore().store.allRecords();\n for (const record of preexisting) {\n this.process(record);\n }\n }\n allEquals(recordId, grade = 1.0) {\n if (grade >= 0) {\n return this.equivalenceSet.allValues(recordId);\n }\n return [recordId];\n }\n /** @private */\n isInstanceOf(recordId, klass) {\n const type$1 = this.liveStore.getInternalStore().store.getField(recordId, type.value);\n if (type$1 === undefined) {\n return false;\n }\n const allCheckTypes = this.expand([klass]);\n const allRecordTypes = this.expand(Array.isArray(type$1) ? type$1.map((t) => t.value) : [type$1.value]);\n return allRecordTypes.some((t) => allCheckTypes.includes(t));\n }\n expand(types) {\n if (types.length === 1) {\n const existing = this.expansionCache[types[0]];\n this.expansionCache[types[0]] = existing\n ? existing\n : this.sort(this.mineForTypes(types));\n return this.expansionCache[types[0]];\n }\n return this.sort(this.mineForTypes(types));\n }\n getProcessingCtx() {\n return {\n dataStore: this.liveStore,\n equivalenceSet: this.equivalenceSet,\n store: this,\n superMap: this.superMap,\n };\n }\n /**\n * Expands the given lookupTypes to include all their equivalent and subclasses.\n * This is done in multiple iterations until no new types are found.\n * @param lookupTypes The types to look up. Once given, these are assumed to be classes.\n */\n mineForTypes(lookupTypes) {\n if (lookupTypes.length === 0) {\n return [Resource.value];\n }\n const canonicalTypes = [];\n const lookupTypesExpanded = [];\n for (let i = 0; i < lookupTypes.length; i++) {\n lookupTypesExpanded.push(...this.allEquals(lookupTypes[i]));\n }\n for (let i = 0; i < lookupTypesExpanded.length; i++) {\n const canon = this.liveStore.getInternalStore().store.primary(lookupTypes[i]);\n if (!this.processedTypes.includes(canon)) {\n for (let j = 0; j < Schema.vocabularies.length; j++) {\n Schema.vocabularies[j].processType(canon, this.getProcessingCtx());\n }\n this.processedTypes.push(canon);\n }\n if (!canonicalTypes.includes(canon)) {\n canonicalTypes.push(canon);\n }\n }\n const allTypes = canonicalTypes\n .reduce((a, b) => {\n const superSet = this.superMap.get(b);\n if (typeof superSet === \"undefined\") {\n return a;\n }\n superSet.forEach((s) => {\n if (!a.includes(s)) {\n a.push(s);\n }\n });\n return a;\n }, [...lookupTypes]);\n return this.sort(allTypes);\n }\n sort(types) {\n return types.sort((a, b) => {\n if (this.isSubclassOf(a, b)) {\n return -1;\n }\n else if (this.isSubclassOf(b, a)) {\n return 1;\n }\n const aDepth = this.superTypeDepth(a);\n const bDepth = this.superTypeDepth(b);\n if (aDepth < bDepth) {\n return 1;\n }\n else if (aDepth > bDepth) {\n return -1;\n }\n return 0;\n });\n }\n /**\n * Returns the hierarchical depth of the type, or -1 if unknown.\n * @param type the type to check\n */\n superTypeDepth(type) {\n const superMap = this.superMap.get(type);\n return superMap ? superMap.size : -1;\n }\n isSubclassOf(resource, superClass) {\n const resourceMap = this.superMap.get(resource);\n if (resourceMap) {\n return resourceMap.has(superClass);\n }\n return false;\n }\n process(record) {\n for (let i = 0; i < Schema.vocabularies.length; i++) {\n for (const [field, values] of Object.entries(record)) {\n for (const value of normalizeType(values)) {\n Schema.vocabularies[i].processStatement(record._id.value, field, value, this.getProcessingCtx());\n }\n }\n }\n }\n}\nSchema.vocabularies = [OWL, RDFS];\n\n// @ts-ignore Used when looking up values.\nclass AttributeKey {\n constructor(key) {\n this.key = key;\n }\n toString() {\n return this.key;\n }\n}\n// tslint:disable-next-line:max-classes-per-file\nclass TypedRecord {\n constructor() {\n this.records = new Map();\n }\n get(key) {\n return this.records.get(key);\n }\n get [Symbol.toStringTag]() {\n return this.records[Symbol.toStringTag];\n }\n get size() {\n return this.records.size;\n }\n [Symbol.iterator]() {\n return this.records[Symbol.iterator]();\n }\n clear() {\n this.records.clear();\n }\n delete(key) {\n return this.records.delete(key);\n }\n entries() {\n return this.records.entries();\n }\n forEach(callbackfn, thisArg) {\n return this.records.forEach(callbackfn, thisArg);\n }\n has(key) {\n return this.records.has(key);\n }\n keys() {\n return this.records.keys();\n }\n set(key, value) {\n this.records.set(key, value);\n return this;\n }\n values() {\n return this.records.values();\n }\n}\n\nconst normalizedIds = (item, defaultValue) => normalizeType(item)\n .map((t) => (t ?? defaultValue).value);\n/**\n * Main entrypoint into the functionality of link-lib.\n *\n * Before using the methods for querying data and views here, search through your render library (e.g. link-redux) to\n * see if it exposes an API which covers your use-case. Skipping the render library might cause unexpected behaviour and\n * hard to solve bugs.\n */\nclass LinkedRenderStore {\n // tslint:disable-next-line no-object-literal-type-assertion\n constructor(opts = {}) {\n /**\n * Map of {ActionMap} which hold action dispatchers. Calling a dispatcher should execute the action, causing them to\n * be handled like any back-end sent action.\n *\n * Constructing action IRI's and dispatching them in user code was a bit hard, this object allows any middleware to\n * define their actions (within their namespace) in a code-oriented fashion. The middleware has control over how the\n * actions will be dispatched, but it should be the same as if a back-end would have executed the action (via the\n * Exec-Action header).\n */\n this.actions = new TypedRecord();\n /** Whenever a resource has no type, assume it to be this. */\n this.defaultType = Thing;\n /**\n * Can aid in parsing and creating prefix mapping strings.\n * @deprecated Please use @ontologies/ packages in your programs, canonicalizing certain\n * prefixes will lead to brittle and hard to refactor code!\n */\n this.namespaces = {};\n this.settings = new TypedRecord();\n /**\n * Enable the bulk api to fetch data with.\n */\n this.bulkFetch = false;\n this.cleanupTimout = 500;\n this.bulkSubscriptions = [];\n this.subjectSubscriptions = {};\n this.resourceQueueFlushTimer = 100;\n if (opts.store) {\n this.store = opts.store;\n }\n else {\n this.store = new RDFStore({ data: opts.data });\n }\n this.report = opts.report || ((e) => { throw e; });\n this.api = opts.api || new DataProcessor({\n ...opts.apiOpts,\n dispatch: opts.dispatch,\n report: this.report,\n store: this.store,\n });\n this.deltaProcessors = [this.api, this.store];\n if (opts.dispatch) {\n this.dispatch = opts.dispatch;\n }\n this.defaultType = opts.defaultType || Thing;\n this.namespaces = opts.namespaces || {};\n this.schema = opts.schema || new Schema(this.store);\n this.mapping = opts.mapping || new ComponentStore(this.schema);\n this.resourceQueue = [];\n this.broadcast = this.broadcast.bind(this);\n this.processResourceQueue = this.processResourceQueue.bind(this);\n }\n static registerRenderer(component, type, prop = RENDER_CLASS_NAME, topology = DEFAULT_TOPOLOGY) {\n const types = normalizedIds(type);\n const props = normalizedIds(prop, RENDER_CLASS_NAME);\n const topologies = normalizedIds(topology, DEFAULT_TOPOLOGY);\n return ComponentStore.registerRenderer(component, types, props, topologies);\n }\n get dispatch() {\n if (typeof this._dispatch === \"undefined\") {\n throw new Error(\"Invariant: cannot call `dispatch` before initialization is complete, see createStore\");\n }\n return this._dispatch;\n }\n set dispatch(v) {\n this._dispatch = v;\n this.api.dispatch = v;\n }\n /**\n * Add a custom delta processor in the stack.\n */\n addDeltaProcessor(processor) {\n this.deltaProcessors.unshift(processor);\n }\n /**\n * Execute an Action by its IRI. This will result in an HTTP request being done and probably some state changes.\n * @param subject The resource to execute. Generally a schema:Action derivative with a\n * schema:EntryPoint to describe the request. Currently schema:url is used over schema:urlTemplate\n * to acquire the request URL, since template processing isn't implemented (yet).\n * @param data An object to send in the body when a non-safe method is used.\n */\n execActionByIRI(subject, data) {\n const preparedData = dataToGraphTuple(data || {}, this.namespaces);\n return this\n .api\n .execActionByIRI(subject, preparedData)\n .then((res) => {\n this.broadcast(false, 100);\n return res;\n });\n }\n /**\n * Execute a resource.\n *\n * Every action will fall through the execution middleware layers.\n *\n * @see https://github.com/rescribet/link-lib/wiki/%5BDesign-draft%5D-Actions,-data-streams,-and-middleware\n *\n * @param subject The resource to execute (can be either an IRI or an URI)\n * @param args The arguments to the function defined by the subject.\n */\n async exec(subject, args) {\n return this.dispatch(subject, args);\n }\n /**\n * Resolve the values at the end of the path\n * @param subject The resource to start descending on\n * @param path A list of linked predicates to descend on.\n */\n dig(subject, path) {\n const [result] = this.digDeeper(subject, path);\n return result.map((q) => q[QuadPosition.object]);\n }\n /**\n * @internal See {dig}\n * @param subject\n * @param path\n * @param subject - The subject traversed.\n */\n digDeeper(subject, path) {\n if (path.length === 0 || typeof subject === \"undefined\") {\n return [[], []];\n }\n const last = path.length - 1;\n let ids = [subject];\n const intermediates = [subject];\n const values = [];\n for (let i = 0; i <= last; i++) {\n const field = path[i];\n const segmentIds = ids;\n ids = [];\n for (let j = 0; j < segmentIds.length; j++) {\n const id = segmentIds[j];\n const quads = this.getResourcePropertyRaw(id, field);\n if (i === last) {\n values.push(...quads);\n continue;\n }\n const next = quads\n .map((q) => q[QuadPosition.object])\n .filter((v) => isNode(v));\n intermediates.push(...next);\n ids.push(...next);\n }\n }\n return [values, intermediates];\n }\n /**\n * Retrieve the subjects from {subject} to find all resources which have an object at the\n * end of the {path} which matches {match}.\n * @param subject The resource to start descending on.\n * @param path A list of linked predicates to descend on.\n * @param match The value which the predicate at the end of {path} has to match for its subject to return.\n */\n findSubject(subject, path, match) {\n if (path.length === 0 || typeof subject === \"undefined\") {\n return [];\n }\n const remaining = path.slice();\n const pred = remaining.shift();\n const props = this.getResourceProperties(subject, pred);\n if (props.length === 0) {\n return [];\n }\n if (remaining.length === 0) {\n const finder = Array.isArray(match)\n ? (p) => match.some((m) => equals(m, p))\n : (p) => equals(match, p);\n return props.find(finder) ? [subject] : [];\n }\n return props\n .map((term) => (term.termType === TermType.NamedNode || term.termType === TermType.BlankNode)\n && this.findSubject(term, remaining, match))\n .flat(1)\n .filter(Boolean);\n }\n /**\n * Finds the best render component for a given property in respect to a topology.\n *\n * @renderlibrary This should only be used by render-libraries, not by application code.\n * @param type The type(s) of the resource to render.\n * @param predicate The predicate(s) (property(s)) to render.\n * @param [topology] The topology of the resource, if any\n * @returns The most appropriate renderer, if any.\n */\n getComponentForProperty(type = this.defaultType, predicate, topology = DEFAULT_TOPOLOGY) {\n if (type === undefined || (Array.isArray(type) && type.length === 0)) {\n return undefined;\n }\n const types = normalizeType(type).map(value);\n const predicates = normalizeType(predicate).map(value);\n return this.mapping.getRenderComponent(types, predicates, value(topology), value(this.defaultType));\n }\n /**\n * Finds the best render component for a type in respect to a topology.\n *\n * @renderlibrary This should only be used by render-libraries, not by application code.\n * @see LinkedRenderStore#getComponentForProperty\n * @param type The type(s) of the resource to render.\n * @param [topology] The topology of the resource, if any\n * @returns The most appropriate renderer, if any.\n */\n getComponentForType(type, topology = DEFAULT_TOPOLOGY) {\n return this.getComponentForProperty(type, RENDER_CLASS_NAME, topology);\n }\n /**\n * Efficiently queues a resource to be fetched later.\n *\n * This skips the overhead of creating a promise and allows the subsystem to retrieve multiple resource in one\n * round trip, sacrificing loading status for performance.\n * @renderlibrary This should only be used by render-libraries, not by application code.\n */\n queueEntity(iri, opts) {\n if (!(opts && opts.reload) && !this.shouldLoadResource(iri)) {\n return;\n }\n this.store.getInternalStore().store.transition(iri.value, RecordState.Queued);\n this.resourceQueue.push([iri, opts]);\n this.scheduleResourceQueue();\n }\n /**\n * Queue a linked-delta to be processed.\n *\n * Note: This should only be used by render-libraries (e.g. link-redux), not by application code.\n * @renderlibrary This should only be used by render-libraries, not by application code.\n */\n queueDelta(delta, expedite = false) {\n const quadArr = isQuad(delta[0])\n ? delta.map((s) => rdfFactory.qdrFromQuad(s))\n : delta;\n for (const dp of this.deltaProcessors) {\n dp.queueDelta(quadArr);\n }\n return this.broadcastWithExpedite(expedite);\n }\n /**\n * Will fetch the entity with the URL {iri}. When a resource under that subject is already present, it will not\n * be fetched again.\n *\n * @deprecated Use {queueEntity} instead\n * @param iri The Node of the resource\n * @param opts The options for fetch-/processing the resource.\n * @return A promise with the resulting entity\n */\n async getEntity(iri, opts) {\n const apiOpts = {};\n let preExistingData;\n if (opts && opts.reload) {\n apiOpts.clearPreviousData = true;\n preExistingData = this.tryEntity(iri);\n }\n if (preExistingData !== undefined) {\n // TODO: refactor to use removeRecord\n this.store.removeQuads(preExistingData);\n }\n await this.api.getEntity(iri, apiOpts);\n return this.broadcast();\n }\n /**\n * Resolves all the properties {property} of resource {subject} to their statements.\n *\n * @renderlibrary This should only be used by render-libraries, not by application code.\n * @param {Node} subject The resource to get the properties for.\n * @param {Node | Node[]} property\n * @return {Statement[]} All the statements of {property} on {subject}, or an empty array when none are present.\n */\n getResourcePropertyRaw(subject, property) {\n if (typeof subject === \"undefined\" || typeof property === \"undefined\") {\n return [];\n }\n return this.store.getResourcePropertyRaw(subject, property);\n }\n /**\n * Resolves all the properties {property} of resource {subject} to a value.\n *\n * @renderlibrary This should only be used by render-libraries, not by application code.\n * @typeParam TT The expected return type for the properties.\n * @param {Node} subject The resource to get the properties for.\n * @param {Node | Node[]} property\n * @return {Term[]} The resolved values of {property}, or an empty array when none are present.\n */\n getResourceProperties(subject, property) {\n if (typeof subject === \"undefined\" || typeof property === \"undefined\") {\n return [];\n }\n return this.store.getResourceProperties(subject, property);\n }\n /**\n * Resolves the property {property} of resource {subject} to a value.\n *\n * When more than one statement on {property} is present, a random one will be chosen. See\n * {LinkedResourceContainer#getResourceProperties} to retrieve all the values.\n *\n * @renderlibrary This should only be used by render-libraries, not by application code.\n * @typeParam TT The expected return type for the property.\n * @param {Node} subject The resource to get the properties for.\n * @param {Node | Node[]} property\n * @return {Term | undefined} The resolved value of {property}, or undefined when none are present.\n */\n getResourceProperty(subject, property) {\n if (typeof subject === \"undefined\" || typeof property === \"undefined\") {\n return undefined;\n }\n return this.store.getResourceProperty(subject, property);\n }\n getState(recordId) {\n return this.store.getInternalStore().store.getStatus(recordId);\n }\n /**\n * Retrieve the (network) status of the resource {iri}.\n *\n * Status 202 indicates that the resource has been queued for fetching (subject to change).\n * @deprecated\n */\n getStatus(iri) {\n if (iri.termType === TermType.BlankNode) {\n return emptyRequest;\n }\n if (this.resourceQueue.find(([resource]) => equals(resource, iri))) {\n return {\n lastRequested: new Date(),\n lastResponseHeaders: null,\n requested: true,\n status: 202,\n subject: iri,\n timesRequested: 1,\n };\n }\n return this.api.getStatus(iri);\n }\n /**\n * Process a linked-delta onto the store.\n *\n * This should generally only be called from the middleware or the data api\n * @param delta An array of [s, p, o, g] arrays containing the delta.\n * @param expedite Will immediately process the delta rather than waiting for an idle moment, useful in conjunction\n * with event handlers within the UI needing immediate feedback. Might cause jumpy interfaces.\n */\n processDelta(delta, expedite = false) {\n const processors = this.deltaProcessors;\n for (let i = 0; i < processors.length; i++) {\n processors[i].processDelta(delta);\n }\n return this.broadcastWithExpedite(expedite);\n }\n /**\n * Bulk register components formatted with {LinkedRenderStore.registerRenderer}.\n * @see LinkedRenderStore.registerRenderer\n */\n registerAll(...components) {\n const registerItem = (i) => {\n this.mapping.registerRenderer(i.component, i.type, i.property, i.topology);\n };\n for (let i = 0; i < components.length; i++) {\n const innerRegs = normalizeType(components[i]);\n for (let j = 0; j < innerRegs.length; j++) {\n registerItem(innerRegs[j]);\n }\n }\n }\n /**\n * Remove a resource from the store, when views are still rendered the resource will be re-fetched.\n *\n * @unstable\n */\n removeResource(subject, expedite = false) {\n this.api.invalidate(subject);\n this.store.removeResource(subject);\n return this.broadcastWithExpedite(expedite);\n }\n /**\n * Resets the render store mappings and the schema graph.\n *\n * Note: This should only be used by render-libraries (e.g. link-redux), not by application code.\n */\n reset() {\n this.store = new RDFStore();\n this.schema = new Schema(this.store);\n this.mapping = new ComponentStore(this.schema);\n }\n /**\n * Get a render component for a rendering {property} on resource {subject}.\n *\n * @renderlibrary\n * @param {Node} subject\n * @param {NamedNode | NamedNode[]} predicate\n * @param {NamedNode} topology\n * @return {T | undefined}\n */\n resourcePropertyComponent(subject, predicate, topology) {\n return this.getComponentForProperty(this.store.getResourceProperties(subject, type), predicate, topology || DEFAULT_TOPOLOGY);\n }\n /**\n * Get a render component for {subject}.\n *\n * @renderlibrary\n * @param {Node} subject The resource to get the renderer for.\n * @param {NamedNode} topology The topology to take into account when picking the renderer.\n * @return {T | undefined}\n */\n resourceComponent(subject, topology) {\n return this.getComponentForProperty(this.store.getResourceProperties(subject, type), RENDER_CLASS_NAME, topology || DEFAULT_TOPOLOGY);\n }\n /**\n * Determine if it makes sense to load a resource.\n *\n * @renderlibrary\n * @unstable\n */\n shouldLoadResource(subject) {\n const currentState = this.getState(subject.value).current;\n return subject.termType === \"NamedNode\" && currentState === RecordState.Absent;\n }\n /**\n * Listen for data changes by subscribing to store changes.\n *\n * @renderlibrary This should only be used by render-libraries, not by application code.\n * @param registration\n * @param registration[0] Will be called with the new statements as its argument.\n * @param registration[1] Options for the callback.\n * @return function Unsubscription function.\n */\n subscribe(registration) {\n registration.subscribedAt = Date.now();\n const subjectFilter = registration.subjectFilter\n ?.flatMap((s) => [s, this.store.getInternalStore().store.primary(s)]);\n if (typeof subjectFilter !== \"undefined\") {\n for (let i = 0, len = subjectFilter.length; i < len; i++) {\n if (!this.subjectSubscriptions[subjectFilter[i]]) {\n this.subjectSubscriptions[subjectFilter[i]] = [];\n }\n this.subjectSubscriptions[subjectFilter[i]].push(registration);\n }\n return () => {\n registration.markedForDelete = true;\n this.markForCleanup();\n };\n }\n this.bulkSubscriptions.push(registration);\n return () => {\n registration.markedForDelete = true;\n this.bulkSubscriptions.splice(this.bulkSubscriptions.indexOf(registration), 1);\n };\n }\n /** @internal */\n touch(_iri, _err) {\n this.broadcast();\n return true;\n }\n /**\n * Returns an entity from the cache directly.\n * This won't cause any network requests even if the entity can't be found.\n *\n * @renderlibrary This should only be used by render-libraries, not by application code.\n * @param iri The Node of the resource.\n * @returns The object if found, or undefined.\n */\n tryEntity(iri) {\n return this.store.quadsFor(iri);\n }\n /** @deprecated Use getRecord */\n tryRecord(id) {\n return this.getRecord(id);\n }\n /**\n * Returns a record from the store.\n * This won't cause any network requests even if the record isn't present.\n *\n * @param id The id of the resource.\n * @returns The object if found, or undefined.\n */\n getRecord(id) {\n const recordId = typeof id === \"string\" ? id : id.value;\n return this.store.getInternalStore().store.getRecord(recordId);\n }\n /**\n * Returns a record from the store, inlining all local ids.\n * This won't cause any network requests even if the record isn't present.\n *\n * @param id The id of the resource.\n * @returns The object if found, or undefined.\n */\n collectRecord(id) {\n const recordId = typeof id === \"string\" ? id : id.value;\n return this.store.getInternalStore().store.collectRecord(recordId);\n }\n /**\n * Broadcasts buffered to all subscribers.\n * The actual broadcast might be executed asynchronously to prevent lag.\n *\n * @param buffer Controls whether processing can be delayed until enough is available.\n * @param maxTimeout Set to 0 to execute immediately.\n * Note: This should only be used by render-libraries (e.g. link-redux), not by application code.\n */\n broadcast(buffer = true, maxTimeout = 1000) {\n if (maxTimeout !== 0 && this.currentBroadcast || this.broadcastHandle) {\n return this.currentBroadcast || Promise.resolve();\n }\n if (buffer) {\n if (this.store.workAvailable() >= 2) {\n if (this.broadcastHandle) {\n window.clearTimeout(this.broadcastHandle);\n }\n if ((this.lastPostponed === undefined) || Date.now() - this.lastPostponed <= maxTimeout) {\n if (this.lastPostponed === undefined) {\n this.lastPostponed = Date.now();\n }\n this.broadcastHandle = window.setTimeout(() => {\n this.broadcastHandle = undefined;\n this.broadcast(buffer, maxTimeout);\n }, 200);\n return this.currentBroadcast || Promise.resolve();\n }\n }\n this.lastPostponed = undefined;\n this.broadcastHandle = undefined;\n }\n if (this.store.workAvailable() === 0) {\n return Promise.resolve();\n }\n let flushResult = new Set();\n for (const dp of this.deltaProcessors) {\n flushResult = new Set([...flushResult, ...Array.from(dp.flush())]);\n }\n const subjects = Array.from(flushResult);\n const subjectRegs = subjects\n .flatMap((sId) => this.subjectSubscriptions[sId])\n .filter((reg) => reg\n && !reg.markedForDelete\n && (reg.subjectFilter\n ? reg.subjectFilter.some((s) => subjects.includes(s))\n : true));\n if (this.bulkSubscriptions.length === 0 && subjectRegs.length === 0) {\n return Promise.resolve();\n }\n return this.currentBroadcast = new ProcessBroadcast({\n bulkSubscriptions: this.bulkSubscriptions.slice(),\n changedSubjects: subjects,\n subjectSubscriptions: subjectRegs,\n timeout: maxTimeout,\n }).run()\n .then(() => {\n this.currentBroadcast = undefined;\n if (this.store.workAvailable() > 0) {\n this.broadcast();\n }\n });\n }\n broadcastWithExpedite(expedite) {\n return this.broadcast(!expedite, expedite ? 0 : 500);\n }\n markForCleanup() {\n if (this.cleanupTimer) {\n return;\n }\n this.cleanupTimer = window.setTimeout(() => {\n this.cleanupTimer = undefined;\n for (const [k, v] of Object.entries(this.subjectSubscriptions)) {\n this.subjectSubscriptions[k] = v.filter((p) => !p.markedForDelete);\n }\n }, this.cleanupTimout);\n }\n scheduleResourceQueue() {\n if (this.resourceQueueHandle) {\n return;\n }\n if (typeof window === \"undefined\") {\n setTimeout(this.processResourceQueue, this.resourceQueueFlushTimer);\n }\n else if (typeof window.requestIdleCallback !== \"undefined\") {\n this.resourceQueueHandle = window.requestIdleCallback(this.processResourceQueue, { timeout: this.resourceQueueFlushTimer });\n }\n else {\n this.resourceQueueHandle = window.setTimeout(this.processResourceQueue, this.resourceQueueFlushTimer);\n }\n }\n async processResourceQueue() {\n this.resourceQueueHandle = undefined;\n const queue = this.resourceQueue;\n this.resourceQueue = [];\n if (this.bulkFetch) {\n await this.api.getEntities(queue);\n return this.broadcast();\n }\n else {\n for (let i = 0; i < queue.length; i++) {\n try {\n const [iri, opts] = queue[i];\n await this.getEntity(iri, opts);\n }\n catch (e) {\n this.report(e);\n }\n }\n }\n }\n}\n\n/**\n * Binds various uris to link actions.\n *\n * @see {createStore}\n * @param catchActions {boolean} Set to true to catch all left-over actions to {LinkedRenderStore#execActionByIRI}.\n */\nconst linkMiddleware = (catchActions = true) => (lrs) => (next) => (action, args) => {\n if (action.value.startsWith(ll$1.ns(\"data/rdflib/\").value)) {\n return Promise.resolve(lrs.touch(args[0], args[1]));\n }\n if (catchActions) {\n return lrs.execActionByIRI(action, args);\n }\n return next(action, args);\n};\n\nfunction applyMiddleware(lrs, ...layers) {\n const storeBound = layers.map((middleware) => middleware(lrs));\n const finish = (a, _o) => Promise.resolve(a);\n return storeBound.reduceRight((composed, f) => {\n const next = f(composed);\n if (!next) {\n throw new Error(\"Provided middleware did not return handler.\");\n }\n return next;\n }, finish);\n}\n/**\n * Initializes a {LinkedRenderStore} with tied together middleware.\n * @param storeOpts Constructor arguments for the LRS.\n * @param middleware Main middleware, to be executed before the {linkMiddleware}.\n * @param trailingMiddleware Middleware to be placed after the {linkMiddleware}. Note: defining trailing middleware\n * causes actions not to be executed via {LinkedRenderStore#execActionByIRI} anymore, this behaviour can be enabled\n * manually in one of the defined middlewares if still desired.\n */\nfunction createStore(storeOpts = {}, middleware = [], trailingMiddleware = []) {\n const LRS = new LinkedRenderStore(storeOpts);\n LRS.dispatch = applyMiddleware(LRS, ...middleware, linkMiddleware(trailingMiddleware.length === 0), ...trailingMiddleware);\n return LRS;\n}\n\nclass ComponentStoreTestProxy extends ComponentStore {\n publicLookup(predicate, obj, topology) {\n return this.lookup(predicate, obj, topology);\n }\n}\nconst getBasicStore = (opts = {}) => {\n const report = (e) => { throw e; };\n const store = opts.store ?? new RDFStore();\n const processor = opts.processor ?? new DataProcessor({ report, store, ...opts.apiOpts });\n const api = opts.api ?? processor;\n const schema = opts.schema ?? new Schema(store);\n const mapping = opts.mapping ?? new ComponentStoreTestProxy(schema);\n const conf = {\n api,\n mapping,\n report,\n schema,\n store,\n };\n const lrs = createStore(conf);\n lrs.resourceQueueFlushTimer = 0;\n return {\n dispatch: lrs.dispatch,\n forceBroadcast: () => lrs.broadcast(false, 0),\n lrs,\n mapping,\n processor,\n schema,\n store,\n };\n};\n\nconst hextupleProcessor = {\n acceptValue: 1.0,\n mediaTypes: [\"application/hex+x-ndjson\"],\n transformer: (store) => (res) => {\n const isExpedited = res.hasOwnProperty(\"expedite\")\n ? res.expedite\n : false;\n return hextuplesTransformer(res)\n .then((delta) => store.queueDelta(delta, isExpedited))\n .then(() => []);\n },\n};\n\n/**\n * Processes linked-delta responses.\n */\nfunction linkedDeltaProcessor(lrs) {\n return async function processLinkedDelta(response) {\n let data;\n if (response instanceof Response) {\n data = response.bodyUsed ? \"\" : await response.text();\n }\n else if (typeof XMLHttpRequest !== \"undefined\" && response instanceof XMLHttpRequest) {\n data = response.responseText;\n }\n else {\n data = response.body;\n }\n if (!data || data.length === 0) {\n return [];\n }\n const parser = new NQuadsParser(lrs.store.getInternalStore());\n const quads = parser.parseString(data);\n const expedite = response.hasOwnProperty(\"expedite\") ? response.expedite : false;\n lrs.queueDelta(quads, expedite);\n // TODO: Resolve the statements in this request\n return [];\n };\n}\n\nconst isRdfLibResponse = (res) => typeof res.req !== \"undefined\" && typeof res.req.termType !== \"undefined\";\n/**\n * Processes a range of media types with parsers from the\n * [rdflib.js package](https://www.npmjs.com/package/rdflib).\n */\nconst createProcessRDF = (rdfParse) => {\n return async function processRDF(response) {\n let data;\n if (isRdfLibResponse(response)) {\n data = response.responseText;\n }\n else if (response instanceof Response) {\n data = response.bodyUsed ? \"\" : await response.text();\n }\n else if (response instanceof XMLHttpRequest) {\n data = response.responseText;\n }\n else {\n data = response.body;\n }\n const format = getContentType(response);\n const g = new RDFAdapter();\n await new Promise((resolve) => {\n rdfParse(data, g, getURL(response), format, () => {\n resolve();\n });\n });\n return g.quads;\n };\n};\n\nconst transformers = {\n createProcessRDF,\n hextupleProcessor,\n linkedDeltaProcessor,\n};\n\n/* tslint:disable object-literal-sort-keys */\nconst setRecord = (id, fields) => ({\n type: \"SetRecord\",\n id,\n fields,\n});\nconst addField = (id, field, value) => ({\n type: \"AddField\",\n id,\n field,\n value,\n});\nconst setField = (id, field, value) => ({\n type: \"SetField\",\n id,\n field,\n value,\n});\nconst deleteAllFieldsMatching = (field, value) => ({\n type: \"DeleteAllFieldsMatching\",\n field,\n value,\n});\nconst deleteFieldMatching = (id, field, value) => ({\n type: \"DeleteFieldMatching\",\n id,\n field,\n value,\n});\nconst deleteField = (id, field) => ({\n type: \"DeleteField\",\n id,\n field,\n});\nconst invalidateRecord = (id) => ({\n type: \"InvalidateRecord\",\n id,\n});\nconst invalidateAllWithProperty = (field, value) => ({\n type: \"InvalidateAllWithProperty\",\n field,\n value,\n});\n/* tslint:enable object-literal-sort-keys */\n\nconst createMessageProcessor = (lrs) => {\n const store = lrs.store.getInternalStore().store;\n return (message) => {\n switch (message.type) {\n case \"SetRecord\": {\n store.setRecord(message.id, message.fields);\n break;\n }\n case \"AddField\":\n case \"SetField\": {\n const isPartial = isGlobalId(message.id)\n && message.field !== type.value\n && !store.getField(message.id, type.value);\n if (isPartial) {\n lrs.queueEntity(rdfFactory.namedNode(message.id), { reload: true });\n }\n else if (message.type === \"AddField\") {\n store.addField(message.id, message.field, message.value);\n }\n else if (message.type === \"SetField\") {\n store.setField(message.id, message.field, message.value);\n }\n break;\n }\n case \"DeleteField\": {\n store.deleteField(message.id, message.field);\n break;\n }\n case \"DeleteFieldMatching\": {\n store.deleteFieldMatching(message.id, message.field, message.value);\n break;\n }\n case \"DeleteAllFieldsMatching\": {\n const matches = lrs.store.match(null, rdfFactory.namedNode(message.field), message.value);\n for (const match of matches) {\n store.deleteFieldMatching(match[0].value, message.field, message.value);\n }\n break;\n }\n case \"InvalidateRecord\": {\n if (isGlobalId(message.id)) {\n lrs.queueEntity(rdfFactory.namedNode(message.id), { reload: true });\n }\n break;\n }\n case \"InvalidateAllWithProperty\": {\n const matches = lrs.store.match(null, rdfFactory.namedNode(message.field), message.value);\n for (const match of matches) {\n const id = match[QuadPosition.subject];\n if (isGlobalId(id.value)) {\n lrs.queueEntity(id, { reload: true });\n }\n }\n break;\n }\n default: {\n const error = new Error(`Unknown message: ${JSON.stringify(message)}`);\n lrs.report(error);\n throw error;\n }\n }\n };\n};\n\nexport default LinkedRenderStore;\nexport { AttributeKey, ComponentStoreTestProxy, DEFAULT_TOPOLOGY, DataProcessor, LinkedRenderStore, ProcessorError, RDFAdapter, RDFStore, RENDER_CLASS_NAME, RecordState, RequestInitGenerator, Schema, StructuredStore, TypedRecord, addField, allRDFPropertyStatements, allRDFValues, anyRDFValue, createEqualComparator, createMessageProcessor, createStore, deleteAllFieldsMatching, deleteField, deleteFieldMatching, deltaProcessor, equals, getBasicStore, getPropBestLangRaw, getTermBestLang, id, idField, idToValue, invalidateAllWithProperty, invalidateRecord, isDifferentOrigin, isGlobalId, isLocalId, linkMiddleware, list, mergeTerms, normalizeType, seq, setField, setRecord, toGraph, transformers, value };\n//# sourceMappingURL=index.js.map\n","/*\n * base64-arraybuffer 1.0.2 \n * Copyright (c) 2022 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n//# sourceMappingURL=base64-arraybuffer.es5.js.map\n","import { Resource as Resource$1, Literal as Literal$1, member } from '@ontologies/rdfs';\nimport React from 'react';\nimport rdf, { TermType, isNamedNode, doc, createNS, QuadPosition, isLiteral, isNode, isTerm, isBlankNode } from '@ontologies/core';\nimport { predicate, nil, first, rest, type, Seq, Alt, Bag, List, langString } from '@ontologies/rdf';\nimport { getTermBestLang, RENDER_CLASS_NAME, DEFAULT_TOPOLOGY, normalizeType, equals, RecordState, getPropBestLangRaw, id, LinkedRenderStore } from 'link-lib';\nimport { BAD_REQUEST } from 'http-status-codes';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { positiveInteger, nonNegativeInteger, negativeInteger, nonPositiveInteger, xsdshort, unsignedShort, xsdbyte, unsignedByte, xsdfloat, decimal, xsdboolean, dateTime, date, integer, xsdlong, xsdint, unsignedInt, unsignedLong, base64Binary, string } from '@ontologies/xsd';\nimport { decode } from 'base64-arraybuffer';\nimport PropTypes from 'prop-types';\n\nclass Component extends React.Component {\n}\nComponent.type = Resource$1;\n\nconst LinkedRenderStoreCtx = React.createContext(undefined);\nconst LRSCtx = LinkedRenderStoreCtx;\n\n/** Get the nearest LRS. */\nfunction useLRS() {\n return React.useContext(LRSCtx);\n}\n\nfunction createPropertyRenderer(props, objRaw, lrs) {\n return (func, associationRenderer) => {\n const associationProps = associationRenderer !== React.Fragment ? props : null;\n if (objRaw.length === 0) {\n return null;\n }\n else if (objRaw.length === 1) {\n return React.createElement(associationRenderer, associationProps, func(objRaw[0]));\n }\n return React.createElement(associationRenderer, associationProps, func(getTermBestLang(objRaw, lrs.store.langPrefs)));\n };\n}\n\nfunction getLinkedObjectClass({ label, subject, topology, topologyCtx }, lrs, labelOverride) {\n var _a;\n return (_a = lrs.resourcePropertyComponent(subject, labelOverride || label, topology === null ? undefined : topology || topologyCtx)) !== null && _a !== void 0 ? _a : undefined;\n}\n\nfunction renderChildrenOrValue(props, lrs) {\n return function (p) {\n if (props.children || p.termType !== TermType.Literal) {\n return React.createElement(React.Fragment, null, props.children || p.value);\n }\n const { topology, topologyCtx, subjectCtx } = props;\n const t = topology === null ? undefined : topology || topologyCtx;\n const literalRenderer = lrs.getComponentForProperty(Literal$1, rdf.namedNode(p.datatype.value), t)\n || lrs.getComponentForProperty(Literal$1, RENDER_CLASS_NAME, t);\n if (!literalRenderer) {\n return React.createElement(React.Fragment, null, p.value);\n }\n return React.createElement(literalRenderer, {\n linkedProp: p,\n subject: p.datatype,\n subjectCtx,\n topology,\n topologyCtx,\n });\n };\n}\n\nfunction useCalculateChildProps(props, context, options = {}) {\n const lrs = useLRS();\n const { subject, topology } = context;\n const overrides = {};\n const reloadLinkedObject = React.useCallback(() => {\n const toReload = props.subject || subject;\n if (isNamedNode(toReload)) {\n lrs.queueEntity(toReload, { reload: true });\n }\n return Promise.resolve();\n }, [props.subject || subject, lrs]);\n if (typeof props.innerRef !== \"undefined\") {\n overrides.ref = props.innerRef;\n overrides.innerRef = undefined;\n }\n if (options.subject) {\n overrides.subjectCtx = subject;\n overrides.subject = props.subject;\n }\n if (options.topology) {\n overrides.topologyCtx = topology;\n overrides.topology = props.topology === null ? DEFAULT_TOPOLOGY : props.topology;\n }\n if (options.lrs) {\n overrides.lrs = lrs;\n }\n if (options.helpers) {\n overrides.reset = options.helpers.reset;\n overrides.reloadLinkedObject = reloadLinkedObject;\n }\n return Object.assign({}, props, { subject, topology: topology }, overrides);\n}\n\nconst NO_SUBJECTS = [];\n/**\n * The subjects this component subscribes to.\n * Includes the subject by default.\n */\nfunction normalizeDataSubjects(props) {\n var _a;\n if (!(props.subject || props.dataSubjects)) {\n return NO_SUBJECTS;\n }\n const result = [];\n if (props.subject) {\n result.push(props.subject);\n }\n if (props.dataSubjects) {\n result.push(...normalizeType(props.dataSubjects));\n }\n if (((_a = props.subject) === null || _a === void 0 ? void 0 : _a.termType) === TermType.NamedNode) {\n const document = doc(props.subject);\n if (document !== props.subject.value) {\n result.push(rdf.namedNode(document));\n }\n }\n if (result.length === 0) {\n return NO_SUBJECTS;\n }\n if (result.length === 1) {\n return result[0];\n }\n return result;\n}\n/**\n * Re-renders when one of the given {subjects} changes in the store.\n *\n * Should only be necessary when using imperative code.\n */\nfunction useDataInvalidation(subjects) {\n const lrs = useLRS();\n const invalidations = () => normalizeType(subjects).filter(Boolean).map((n) => n.value);\n const calculateString = () => JSON.stringify(invalidations().map((id) => lrs.getState(id).lastUpdate));\n const [, setValue] = React.useState(calculateString);\n const ids = normalizeType(subjects).filter(Boolean).map((n) => n.value);\n const idsDep = JSON.stringify(ids);\n React.useEffect(() => {\n return lrs.subscribe({\n callback: () => setValue(calculateString()),\n lastUpdateAt: undefined,\n markedForDelete: false,\n subjectFilter: ids,\n });\n }, [\n lrs,\n idsDep,\n ]);\n return calculateString();\n}\n\nconst LinkRenderCtx = React.createContext({\n subject: undefined,\n topology: DEFAULT_TOPOLOGY,\n});\n\n/**\n * @internal `useTopology` or `useSubject` instead.\n */\nconst useLinkRenderContext = () => React.useContext(LinkRenderCtx);\n\nconst ll = createNS(\"http://purl.org/link-lib/\");\nvar ll$1 = {\n ns: ll,\n /* classes */\n ErrorResource: ll(\"ErrorResource\"),\n LoadingResource: ll(\"LoadingResource\"),\n NoView: ll(\"NoView\"),\n /* properties */\n clonedFrom: ll(\"clonedFrom\"),\n /** Used internally by link to ensure data consistency */\n dataSubject: ll(\"dataSubject\"),\n meta: ll(\"meta\"),\n /* individuals */\n /** No-operation, used internally by link when information is not needed. */\n nop: ll(\"nop\"),\n};\n\nfunction nextRenderContext(props) {\n return {\n subject: props.subject,\n topology: props.topology || props.topologyCtx,\n };\n}\nfunction wrapRenderContext(props, comp) {\n return React.createElement(LinkRenderCtx.Provider, { value: nextRenderContext(props) }, comp);\n}\nfunction renderNoView(props, lrs) {\n const NoView = lrs.getComponentForProperty(ll$1.NoView, (props.label || RENDER_CLASS_NAME), props.topology || props.topologyCtx);\n const message = `No view found for subject '${props.subject}' label '${props.label}' and topology ${props.topology || props.topologyCtx}`;\n lrs.report(new Error(message));\n if (NoView) {\n return React.createElement(NoView);\n }\n return React.createElement(\"div\", { \"className\": \"no-view\", \"data-testid\": \"no-view\" }, React.createElement(\"p\", null, message));\n}\nfunction renderError(props, lrs, error) {\n const errComp = errorComponent(props, lrs);\n if (errComp) {\n return wrapRenderContext(props, React.createElement(errComp, Object.assign({}, props, {\n error: error instanceof Error ? error : undefined,\n linkRequestStatus: lrs.getStatus(props.subject || props.subjectCtx),\n report: lrs.report,\n subject: props.subject,\n })));\n }\n return null;\n}\nfunction errorComponent(props, lrs) {\n return props.onError\n || lrs.getComponentForType(ll$1.ErrorResource, props.topology || props.topologyCtx)\n || null;\n}\nfunction loadingComponent(props, lrs) {\n return props.onLoad\n || lrs.getComponentForType(ll$1.LoadingResource, props.topology || props.topologyCtx)\n || null;\n}\n\nfunction useChildPropsOrFallback(props) {\n const options = { topology: true };\n const lrs = useLRS();\n const [error, setError] = React.useState(undefined);\n const context = useLinkRenderContext();\n const subjectData = lrs.tryRecord(context.subject);\n const childProps = useCalculateChildProps(props, context, options);\n try {\n useDataInvalidation(normalizeDataSubjects(childProps));\n }\n catch (e) {\n setError(e);\n }\n if (subjectData === undefined || childProps.label === undefined) {\n return null;\n }\n let values = [];\n if (Array.isArray(childProps.label)) {\n values = childProps.label.reduce((acc, l) => {\n const v = subjectData[l.value];\n if (Array.isArray(v)) {\n return [...acc, ...v];\n }\n else if (v !== undefined) {\n return [...acc, v];\n }\n else {\n return acc;\n }\n }, []);\n }\n else {\n const v = subjectData[childProps.label.value];\n if (Array.isArray(v)) {\n values = v;\n }\n else if (v !== undefined) {\n values = [v];\n }\n }\n if (error) {\n return renderError(childProps, lrs, error);\n }\n if (values.length === 0 && !childProps.forceRender) {\n return null;\n }\n return [childProps, values];\n}\n\n/**\n * Useful for using as a hook update dependency.\n */\nfunction useMemoizedDataSubjects(subjects) {\n return JSON.stringify(subjects);\n}\nconst calculatedValueChanged = (a, b) => (Array.isArray(a) && Array.isArray(b))\n ? a.length !== b.length || !a.every((t, i) => t === b[i])\n : !equals(a, b);\n\n/**\n * Fetches the {props.subject} if it has no data or is expired.\n *\n * @param resources The resources to fetch.\n * @return The last update stamp, useful in a hook dependency list.\n *\n * @see {LinkedRenderStore#shouldLoadResource} for the triggering mechanism.\n */\nfunction useDataFetching(resources) {\n const lrs = useLRS();\n const lastUpdate = useDataInvalidation(resources);\n React.useEffect(() => {\n const toCheck = normalizeType(resources);\n for (const resource of toCheck) {\n if (resource && lrs.shouldLoadResource(resource)) {\n lrs.queueEntity(resource);\n }\n }\n }, [\n lrs,\n useMemoizedDataSubjects(resources),\n lastUpdate,\n ]);\n return lastUpdate;\n}\n\nconst LOADING_STATES = [\n RecordState.Queued,\n RecordState.Requested,\n RecordState.Receiving,\n];\nfunction useRenderLoadingOrError(props, error) {\n const lrs = useLRS();\n if (error) {\n return renderError(props, lrs, error);\n }\n const { current, previous } = lrs.getState(props.subject.value);\n const status = lrs.getStatus(props.subject);\n const hasError = status.status >= BAD_REQUEST;\n if (previous === RecordState.Present && current !== RecordState.Absent && !hasError) {\n return undefined;\n }\n if (current === RecordState.Absent || LOADING_STATES.includes(current)) {\n const loadComp = loadingComponent(props, lrs);\n return loadComp === null\n ? null\n : wrapRenderContext(props, React.createElement(loadComp, props));\n }\n if (hasError) {\n return renderError(props, lrs, error);\n }\n return undefined;\n}\n\nfunction useResourcePropertyView(subject, predicate = RENDER_CLASS_NAME, topology = DEFAULT_TOPOLOGY) {\n var _a;\n const lrs = useLRS();\n const context = useLinkRenderContext();\n return (_a = lrs.resourcePropertyComponent(subject || context.subject, predicate, topology || context.topology)) !== null && _a !== void 0 ? _a : undefined;\n}\n\nfunction useResourceView(subject, topology = DEFAULT_TOPOLOGY) {\n var _a;\n return (_a = useResourcePropertyView(subject, RENDER_CLASS_NAME, topology)) !== null && _a !== void 0 ? _a : undefined;\n}\n\nfunction useCalculatedViewWithState(props, lrs, error) {\n const notReadyComponent = useRenderLoadingOrError(props, error);\n const component = useResourceView(props.subject, props.topology || props.topologyCtx);\n if ((props.forceRender && props.children) || (notReadyComponent === undefined && props.children)) {\n return React.createElement(React.Fragment, null, props.children);\n }\n if (notReadyComponent !== undefined) {\n return notReadyComponent;\n }\n if (component !== undefined && component != null) {\n return React.createElement(component, props);\n }\n return renderNoView(props, lrs);\n}\nfunction LRC(props, _) {\n const context = useLinkRenderContext();\n const [error, setError] = React.useState(undefined);\n const reset = React.useCallback(() => setError(undefined), [setError]);\n const options = {\n helpers: {\n reset,\n },\n subject: true,\n topology: true,\n };\n const lrs = useLRS();\n const childProps = useCalculateChildProps(props, context, options);\n useDataFetching(normalizeDataSubjects(childProps));\n const comp = useCalculatedViewWithState(childProps, lrs, error);\n return wrapRenderContext(childProps, comp);\n}\nLRC.defaultProps = {\n children: undefined,\n forceRender: false,\n onError: undefined,\n onLoad: undefined,\n topology: undefined,\n};\nLRC.displayName = \"Resource\";\nconst Resource = React.forwardRef((props, ref) => React.createElement(LRC, { innerRef: ref, ...props }));\n\nconst nodeTypes = [TermType.NamedNode, TermType.BlankNode];\nconst Property = (props) => {\n const lrs = useLRS();\n const childPropsOrFallback = useChildPropsOrFallback(props);\n if (childPropsOrFallback === null || !Array.isArray(childPropsOrFallback)) {\n return childPropsOrFallback;\n }\n const [childProps, objRaw] = childPropsOrFallback;\n const associationRenderer = getLinkedObjectClass(childProps, lrs, predicate) || React.Fragment;\n const associationProps = associationRenderer !== React.Fragment ? childProps : null;\n const childComp = typeof childProps.children === \"function\"\n ? childProps.children(objRaw)\n : childProps.children;\n if (typeof childProps.children === \"function\") {\n return React.createElement(associationRenderer, associationProps, childComp);\n }\n const propertyRenderer = createPropertyRenderer(childProps, objRaw, lrs);\n const component = getLinkedObjectClass(childProps, lrs);\n if (component) {\n const toRender = propertyRenderer((p) => React.createElement(component, { ...childProps, linkedProp: p }, childComp), associationRenderer);\n if (toRender === null) {\n return React.createElement(associationRenderer, associationProps, React.createElement(component, { ...childProps }, childComp));\n }\n return toRender;\n }\n else if (objRaw.length > 0) {\n if (nodeTypes.includes(objRaw[0].termType)) {\n const wrapLOC = (p) => {\n const lrcProps = {\n ...childProps,\n subject: p,\n };\n return React.createElement(Resource, { ...lrcProps }, childComp);\n };\n return propertyRenderer(wrapLOC, associationRenderer);\n }\n return propertyRenderer(renderChildrenOrValue(childProps, lrs), associationRenderer);\n }\n if (childProps.children) {\n return React.createElement(associationRenderer, associationProps, childComp);\n }\n return null;\n};\nProperty.defaultProps = {\n forceRender: false,\n limit: 1,\n linkedProp: undefined,\n};\nProperty.displayName = \"Property\";\n\nconst RenderStoreProvider = ({ children, value }) => {\n return React.createElement(LRSCtx.Provider, { value }, children);\n};\n\n/**\n * Inherit from this component to set the topology.\n *\n * @example\n * ```\n *\n * class Collection extends TopologyProvider {\n * this.topology = NS.app('collection')\n * // Optionally:\n * this.className = \"Collection\";\n * this.elementName = \"span\";\n * }\n * ```\n */\nclass TopologyProvider extends React.Component {\n constructor() {\n super(...arguments);\n this.className = undefined;\n this.elementType = \"div\";\n this.topology = null;\n }\n wrap(children) {\n return React.createElement(LinkRenderCtx.Consumer, null, ({ subject }) => React.createElement(LinkRenderCtx.Provider, {\n value: {\n subject,\n topology: this.topology === null ? undefined : this.topology,\n },\n }, typeof children === \"function\" ? children(subject) : children));\n }\n render() {\n let children = this.props.children;\n if (this.className !== undefined) {\n children = React.createElement(this.elementType, { className: this.className, ...this.props }, this.props.children);\n }\n return this.wrap(children);\n }\n}\n\nconst Type = React.forwardRef((props, ref) => {\n const lrs = useLRS();\n const context = useLinkRenderContext();\n const childProps = useCalculateChildProps(props, context);\n useDataInvalidation(normalizeDataSubjects(childProps));\n const notReadyComponent = useRenderLoadingOrError(childProps);\n const component = useResourcePropertyView(childProps.subject, (childProps.label || RENDER_CLASS_NAME), childProps.topology || childProps.topologyCtx);\n if (notReadyComponent !== undefined) {\n return notReadyComponent;\n }\n if (component !== undefined && component !== null) {\n const { children, ...rest // tslint:disable-line trailing-comma\n } = childProps;\n return React.createElement(component, { ...rest, innerRef: ref }, children);\n }\n return renderNoView(childProps, lrs);\n});\n\n/**\n * Data types to which the data can be converted before inserting into a data map\n * @deprecated\n */\nvar ReturnType;\n(function (ReturnType) {\n /** Return the `object`, keeping the underlying rdf data model. */\n ReturnType[ReturnType[\"Term\"] = 0] = \"Term\";\n /**\n * Keep the underlying rdf data model\n * @deprecated\n */\n ReturnType[ReturnType[\"Statement\"] = 1] = \"Statement\";\n /** Return the `object` converted to the nearest matching JS type, or a plain string if not possible. */\n ReturnType[ReturnType[\"Literal\"] = 2] = \"Literal\";\n /** Return the `object` as a string value. */\n ReturnType[ReturnType[\"Value\"] = 3] = \"Value\";\n /** Return the `object`, keeping the underlying rdf data model. */\n ReturnType[ReturnType[\"AllTerms\"] = 4] = \"AllTerms\";\n /**\n * Keep the underlying rdf data model\n * @deprecated\n */\n ReturnType[ReturnType[\"AllStatements\"] = 5] = \"AllStatements\";\n /** Return the `object` converted to the nearest matching JS type, or a plain string if not possible. */\n ReturnType[ReturnType[\"AllLiterals\"] = 6] = \"AllLiterals\";\n /** Return the `object` as a string value. */\n ReturnType[ReturnType[\"AllValues\"] = 7] = \"AllValues\";\n})(ReturnType || (ReturnType = {}));\nconst defaultPropertyOptions = {\n returnType: ReturnType.AllTerms,\n};\nconst defaultLinkOptions = {\n returnType: ReturnType.Term,\n};\n\nconst globalLinkOptsDefaults = {\n fetch: true,\n forceRender: false,\n limit: Infinity,\n returnType: ReturnType.Term,\n};\n\nfunction mapMultiLabelMap(propKey, predObj, opts) {\n if (predObj.length === 0) {\n throw new TypeError(\"Props array must contain at least one predicate\");\n }\n return [\n predObj,\n {\n fetch: opts.fetch || globalLinkOptsDefaults.fetch,\n forceRender: opts.forceRender || globalLinkOptsDefaults.forceRender,\n label: predObj,\n limit: opts.limit || globalLinkOptsDefaults.limit,\n name: propKey,\n returnType: opts.returnType || globalLinkOptsDefaults.returnType,\n },\n ];\n}\nfunction mapLabelMap(propKey, predObj, opts) {\n return [\n [predObj],\n {\n fetch: opts.fetch || globalLinkOptsDefaults.fetch,\n forceRender: opts.forceRender || globalLinkOptsDefaults.forceRender,\n label: [predObj],\n limit: opts.limit || globalLinkOptsDefaults.limit,\n name: propKey,\n returnType: opts.returnType || globalLinkOptsDefaults.returnType,\n },\n ];\n}\nfunction mapLinkOptsMap(propKey, predObj, opts) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const labels = normalizeType(predObj.label).filter(Boolean);\n if (predObj.label === undefined) {\n throw new TypeError(`Prop with key '${propKey}' contains no valid labels`);\n }\n return [\n labels,\n {\n fetch: (_b = (_a = predObj.fetch) !== null && _a !== void 0 ? _a : opts.fetch) !== null && _b !== void 0 ? _b : globalLinkOptsDefaults.fetch,\n forceRender: (_d = (_c = predObj.forceRender) !== null && _c !== void 0 ? _c : opts.forceRender) !== null && _d !== void 0 ? _d : globalLinkOptsDefaults.forceRender,\n label: normalizeType(predObj.label),\n limit: (_f = (_e = predObj.limit) !== null && _e !== void 0 ? _e : opts.limit) !== null && _f !== void 0 ? _f : globalLinkOptsDefaults.limit,\n linkedProp: predObj.linkedProp || opts.linkedProp,\n name: propKey,\n returnType: (_h = (_g = predObj.returnType) !== null && _g !== void 0 ? _g : opts.returnType) !== null && _h !== void 0 ? _h : globalLinkOptsDefaults.returnType,\n },\n ];\n}\nfunction dataPropToPropMap(propKey, predObj, opts) {\n if (Array.isArray(predObj)) {\n return mapMultiLabelMap(propKey, predObj, opts);\n }\n else if (isNamedNode(predObj)) {\n return mapLabelMap(propKey, predObj, opts);\n }\n return mapLinkOptsMap(propKey, predObj, opts);\n}\nfunction dataPropsToPropMap(mapDataToProps, opts) {\n let requestedProperties = [];\n const propMap = Object\n .keys(mapDataToProps)\n .reduce((acc, propKey) => {\n const predObj = mapDataToProps[propKey];\n const [properties, mapping] = dataPropToPropMap(propKey, predObj, opts);\n if (mapping.name.trim().length === 0) {\n throw new TypeError(\"Pass a valid prop label\");\n }\n requestedProperties = requestedProperties.concat(...properties);\n return {\n ...acc,\n [mapping.name]: mapping,\n };\n }, {});\n return [propMap, Array.from(new Set(requestedProperties))];\n}\n\nconst integerTypes = [\n integer,\n xsdlong,\n xsdint,\n unsignedInt,\n unsignedLong,\n];\nconst bigIntTypes = [\n positiveInteger,\n nonNegativeInteger,\n negativeInteger,\n nonPositiveInteger,\n];\nconst numberTypes = [\n ...integerTypes,\n xsdshort,\n unsignedShort,\n xsdbyte,\n unsignedByte,\n xsdfloat,\n decimal,\n];\n// From rdflib.js with modifications\nfunction toJS(obj) {\n if (!isLiteral(obj)) {\n return obj;\n }\n if (equals(obj.datatype, xsdboolean)) {\n return obj.value === \"true\" || obj.value === \"1\" || obj.value === \"t\";\n }\n if (equals(obj.datatype, dateTime) ||\n equals(obj.datatype, date)) {\n return new Date(obj.value);\n }\n if (bigIntTypes.some((type) => equals(obj.datatype, type))) {\n return BigInt(obj.value);\n }\n if (numberTypes.some((type) => equals(obj.datatype, type))) {\n return Number(obj.value);\n }\n return obj.value;\n}\nfunction toReturnType(returnType, p) {\n var _a, _b, _c;\n // @ts-ignore\n const stmts = normalizeType(p);\n switch (returnType) {\n case ReturnType.Literal:\n return toJS((_a = stmts[0]) === null || _a === void 0 ? void 0 : _a[QuadPosition.object]);\n case ReturnType.Value:\n return (_b = stmts[0]) === null || _b === void 0 ? void 0 : _b[QuadPosition.object].value;\n case ReturnType.Term:\n return (_c = stmts[0]) === null || _c === void 0 ? void 0 : _c[QuadPosition.object];\n case ReturnType.Statement:\n return stmts[0];\n case ReturnType.AllLiterals:\n return stmts.map((s) => toJS(s[QuadPosition.object]));\n case ReturnType.AllValues:\n return stmts.map((s) => s[QuadPosition.object].value);\n case ReturnType.AllTerms:\n return stmts.map((s) => s[QuadPosition.object]);\n case ReturnType.AllStatements:\n return stmts;\n default:\n throw new TypeError(`Unknown returnType '${returnType}' given`);\n }\n}\n\nconst defaultGraph = rdf.defaultGraph();\nfunction useManyLinkedObjectProperties(propSets, propMap, returnType) {\n const returnTypeOrDefault = returnType !== null && returnType !== void 0 ? returnType : globalLinkOptsDefaults.returnType;\n const lrs = useLRS();\n const values = React.useMemo(() => Object.values(propMap), [propMap]);\n return React.useMemo(() => {\n var _a, _b;\n const propMaps = [];\n for (const set of propSets) {\n const acc = {};\n if (set === undefined || set[0] === undefined) {\n acc.subject = toReturnType(returnTypeOrDefault, []);\n propMaps.push(acc);\n continue;\n }\n const [s, record] = set;\n const subject = s.includes(\":\") && !s.startsWith(\"_:\")\n ? rdf.namedNode(s)\n : rdf.blankNode(s);\n acc.subject = toReturnType(returnTypeOrDefault, [[subject, ll$1.dataSubject, subject, rdf.defaultGraph()]]);\n for (let i = 0, ilen = values.length; i < ilen; i++) {\n const propOpts = values[i];\n for (let j = 0, jlen = propOpts.label.length; j < jlen; j++) {\n const cur = propOpts.label[j];\n if (acc[propOpts.name]) {\n // TODO: Merge\n continue;\n }\n const field = record[cur.value];\n if (field === undefined) {\n acc[propOpts.name] = toReturnType((_a = propOpts.returnType) !== null && _a !== void 0 ? _a : returnTypeOrDefault, []);\n continue;\n }\n const data = normalizeType(field).map((value) => [\n subject,\n cur,\n value,\n defaultGraph,\n ]);\n const best = data.length === 1 ? data[0] : getPropBestLangRaw(data, lrs.store.langPrefs);\n if (data[0] !== best) {\n data[data.indexOf(best)] = data[0];\n data[0] = best;\n }\n acc[propOpts.name] = toReturnType((_b = propOpts.returnType) !== null && _b !== void 0 ? _b : returnTypeOrDefault, data);\n }\n }\n propMaps.push(acc);\n }\n return propMaps;\n }, [lrs, propSets, values]);\n}\n\nfunction useLinkedObjectProperties(subjProps, propMap, returnType) {\n const [data] = useManyLinkedObjectProperties(subjProps, propMap, returnType);\n return data;\n}\n\nconst createConnectedComponent = (propMap, opts, wrappedComponent) => React.forwardRef((props, ref) => {\n var _a;\n const lrs = useLRS();\n const context = useLinkRenderContext();\n const childProps = useCalculateChildProps({ ...props, innerRef: ref }, context, { lrs: true });\n const record = lrs.tryRecord(childProps.subject);\n const records = record === undefined ? [] : [[childProps.subject.value, record]];\n const fieldProps = useLinkedObjectProperties(records, propMap, (_a = opts.returnType) !== null && _a !== void 0 ? _a : ReturnType.Term);\n const mappedProps = {\n ...childProps,\n ...fieldProps,\n subject: childProps.subject,\n };\n const linkVersion = useDataInvalidation(normalizeDataSubjects(mappedProps));\n if ((props.forceRender || opts.forceRender) !== true && record === undefined) {\n return null;\n }\n return React.createElement(wrappedComponent, {\n ...mappedProps,\n linkVersion,\n });\n});\nconst wrapWithConnect = (propMap, opts) => (wrappedComponent) => {\n const comp = createConnectedComponent(propMap, opts, wrappedComponent);\n comp.displayName = `linkMapDataToProps(${comp.displayName || comp.name})`;\n return hoistNonReactStatics(comp, wrappedComponent);\n};\n\nconst wrapWithSubject = (WrappedComponent) => {\n const Comp = (props) => {\n const { subject } = useLinkRenderContext();\n const shared = { ...props, subject };\n return React.createElement(WrappedComponent, shared);\n };\n Comp.displayName = `linkSubject(${WrappedComponent.displayName || WrappedComponent.name})`;\n return Comp;\n};\n\n/**\n * Binds a react component to data properties.\n *\n * The current implementation only supports a one-dimensional array of NamedNode objects. And binds\n * the underlying values to the `props` object with each predicate term as the key.\n *\n * @example\n * ```\n *\n * const BlogPost = (props) => (\n *
\n *

{props.name.value}

\n *

{props.text.value}

\n * \n * {\n const lrs = useLRS();\n return React.createElement(Component, { ...props, lrs: lrs });\n };\n return hoistNonReactStatics(Comp, Component);\n}\n\n/** @deprecated Use `useTopology` instead. */\nfunction withTopology(Component) {\n return (props) => (React.createElement(LinkRenderCtx.Consumer, null, ({ topology }) => {\n const merged = { ...props, topology };\n return React.createElement(Component, { ...merged });\n }));\n}\n\n/**\n * Runs the applicable {calculator} only once while also giving the result on the first render.\n */\nconst useCalculatedValue = (calculator, invalidations, subjects, ...args) => {\n const lrs = useLRS();\n const invalidation = useDataFetching(subjects);\n return React.useMemo(() => calculator(lrs, subjects, ...args)[0], [\n lrs,\n invalidation,\n subjects,\n ...invalidations,\n ]);\n};\n\nconst EMPTY_ARRAY = [];\nconst NESTED_EMPTY_ARRAY = [[], []];\n\nconst base = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#_\";\nfunction numAsc(a, b) {\n const aP = Number.parseInt(a[QuadPosition.predicate].value.slice(base.length), 10);\n const bP = Number.parseInt(b[QuadPosition.predicate].value.slice(base.length), 10);\n return aP - bP;\n}\nfunction orderedElementsOfSeq(store, seqIRI) {\n const elements = store\n .getResourcePropertyRaw(seqIRI, member)\n .sort(numAsc);\n return [elements, [seqIRI]];\n}\nfunction orderedElementsOfList(store, listEntry) {\n const list = [];\n const nodes = [listEntry];\n let next = listEntry;\n while (next && next !== nil) {\n const item = store.getResourcePropertyRaw(next, first)[0];\n if (!item) {\n break;\n }\n list.push(item);\n const rest$1 = store.getResourceProperty(next, rest);\n if (!rest$1 || isLiteral(rest$1) || nodes.includes(rest$1)) {\n break;\n }\n nodes.push(next);\n next = rest$1;\n }\n return [list, nodes];\n}\n\nvar QueryType;\n(function (QueryType) {\n QueryType[QueryType[\"Except\"] = 0] = \"Except\";\n QueryType[QueryType[\"Dig\"] = 1] = \"Dig\";\n QueryType[QueryType[\"Array\"] = 2] = \"Array\";\n})(QueryType || (QueryType = {}));\n\nconst defaultGraph$1 = rdf.defaultGraph();\nconst isFieldQuery = (v) => Array.isArray(v) || isNamedNode(v);\nconst undefinedResolver = () => () => NESTED_EMPTY_ARRAY;\nconst simpleResolver = (lrs, query) => (s) => [lrs.getResourcePropertyRaw(s, query), EMPTY_ARRAY];\nconst digResolver = (lrs, query) => (target) => lrs.digDeeper(target, query.path);\nconst exceptResolver = (lrs, query) => (s) => {\n if (s === undefined) {\n return NESTED_EMPTY_ARRAY;\n }\n const fields = query.fields.map((f) => f.value);\n const record = lrs.tryRecord(s);\n if (record === undefined) {\n return [[], EMPTY_ARRAY];\n }\n const quads = [];\n // tslint:disable-next-line:forin\n for (const f in record) {\n const field = rdf.namedNode(f);\n if (!record.hasOwnProperty(f) || f === \"_id\" || fields.includes(f)) {\n continue;\n }\n const values = record[f];\n if (Array.isArray(values)) {\n for (const v of values) {\n quads.push([s, field, v, defaultGraph$1]);\n }\n }\n else {\n quads.push([s, field, values, defaultGraph$1]);\n }\n }\n return [\n quads,\n EMPTY_ARRAY,\n ];\n};\nconst arrayResolver = (lrs, query) => (target) => {\n if (target === undefined) {\n return NESTED_EMPTY_ARRAY;\n }\n const targets = lrs.getResourceProperties(target, query.fields);\n for (const t of targets) {\n if (!isNode(t)) {\n continue;\n }\n const types = lrs.getResourceProperties(t, type);\n if (types.some((type) => equals(type, Seq) || equals(type, Alt) || equals(type, Bag))) {\n return orderedElementsOfSeq(lrs, t);\n }\n if (types.some((type) => equals(type, List))) {\n return orderedElementsOfList(lrs, t);\n }\n }\n return NESTED_EMPTY_ARRAY;\n};\nconst resolver = (lrs, query) => {\n if (query === undefined) {\n return undefinedResolver();\n }\n else if (isFieldQuery(query)) {\n return simpleResolver(lrs, query);\n }\n else if (query.type === QueryType.Dig) {\n return digResolver(lrs, query);\n }\n else if (query.type === QueryType.Except) {\n return exceptResolver(lrs, query);\n }\n else if (query.type === QueryType.Array) {\n return arrayResolver(lrs, query);\n }\n throw new Error(`unknown resolver type (${query})`);\n};\n\nconst queryChanged = (previous, next) => {\n if (previous === next) {\n return false;\n }\n if (previous === undefined || next === undefined) {\n return previous !== next;\n }\n if (Array.isArray(previous) && Array.isArray(next)) {\n return previous.length !== next.length\n || previous.some((p, i) => !equals(p, next[i]));\n }\n if (Array.isArray(previous) || Array.isArray(next)) {\n return true;\n }\n if (isTerm(previous) || isTerm(next)) {\n return !equals(previous, next);\n }\n if (previous.type !== next.type) {\n return true;\n }\n switch (previous.type) {\n case QueryType.Dig:\n return previous.path.length !== next.path.length\n || previous.path.some((p, i) => {\n const nextPath = next.path[i];\n if (isTerm(p)) {\n return !equals(p, nextPath);\n }\n else {\n return Array.isArray(nextPath)\n ? p.some((path, ip) => !equals(path, nextPath[ip]))\n : true;\n }\n });\n case QueryType.Array:\n case QueryType.Except:\n return previous.fields.length !== next.fields.length\n || previous.fields.some((p, i) => !equals(p, next.fields[i]));\n }\n};\n\nconst targetsChanged = (previous, next) => {\n if (previous === next) {\n return false;\n }\n if (previous === undefined || next === undefined) {\n return previous !== next;\n }\n if (Array.isArray(previous) && Array.isArray(next)) {\n return previous.length !== next.length\n || previous.some((p, i) => !equals(p, next[i]));\n }\n if (Array.isArray(previous) || Array.isArray(next)) {\n return true;\n }\n return !equals(previous, next);\n};\n\nconst calculate = (subject, resource, fields) => {\n if (fields === null) {\n return [subject, resource];\n }\n const multipleFields = Array.isArray(fields);\n const multipleResources = Array.isArray(resource);\n if (fields === undefined || resource === undefined) {\n return [undefined, undefined];\n }\n else if (multipleFields && fields.length === 0 || multipleResources && resource.length === 0) {\n return [undefined, undefined];\n }\n return [resource, fields];\n};\nconst useTargetedQuery = (resource, query) => {\n const { subject } = useLinkRenderContext();\n const targetsRef = React.useRef(undefined);\n const fieldsRef = React.useRef(undefined);\n return React.useMemo(() => {\n const [nextTargets, nextFields] = calculate(subject, resource, query);\n if (targetsChanged(targetsRef.current, nextTargets)) {\n targetsRef.current = nextTargets;\n }\n if (queryChanged(fieldsRef.current, nextFields)) {\n fieldsRef.current = nextFields;\n }\n return [targetsRef.current, fieldsRef.current];\n }, [subject, resource, query]);\n};\n\nconst calculate$1 = (lrs, subject, parser, query) => {\n if (!subject) {\n return NESTED_EMPTY_ARRAY;\n }\n const boundParser = parser(lrs);\n const mapper = resolver(lrs, query);\n const calc = (s) => {\n const [values, targets] = mapper(s);\n const mapped = values\n .map(boundParser)\n .filter((it) => typeof it !== \"undefined\");\n return [mapped, targets];\n };\n if (Array.isArray(subject)) {\n const values = [];\n for (let i = 0, iLen = subject.length; i < iLen; i++) {\n const [t, targets] = calc(subject[i]);\n values.push(t);\n }\n return [values, []];\n }\n return calc(subject);\n};\nconst makeParsedField = (parser) => {\n const dataHook = (resource, field = null) => {\n const [targets, query] = useTargetedQuery(resource, field);\n const invalidation = useDataFetching(targets);\n return useCalculatedValue(calculate$1, [query, invalidation], targets, parser, query);\n };\n return dataHook;\n};\n\n/**\n * Will resolve all fields except those passed.\n */\nconst except = (...fields) => ({\n fields,\n type: QueryType.Except,\n});\n/**\n * Will resolve fields at the end of {path}, traversing intermediate records.\n */\nconst dig = (...path) => ({\n path,\n type: QueryType.Dig,\n});\n/**\n * Experimental. Will unpack {fields} if their value refers to rdf:Seq, rdf:List, rdf:Container, rdf:Bag.\n * Note that their values will be returned top-level, rather than nested.\n * Has undefined behaviour with regards to multimap values.\n */\nconst array = (...fields) => ({\n fields,\n type: QueryType.Array,\n});\n/**\n * Retrieves fields of any type as raw terms.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useQuadruples = makeParsedField((_) => (it) => it);\n/**\n * Retrieves all fields as internal representation.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useFields = makeParsedField((_) => (it) => it[QuadPosition.object]);\n/**\n * Retrieves fields which contain association.\n * @param {fields} {Node} - The field to retrieve from the record.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useIds = makeParsedField((_) => (it) => isNode(it[QuadPosition.object])\n ? it[QuadPosition.object]\n : undefined);\n/**\n * Retrieves fields which contain namedNode.\n * @param {fields} {Node} - The field to retrieve from the record.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useGlobalIds = makeParsedField((_) => (it) => isNamedNode(it[QuadPosition.object])\n ? it[QuadPosition.object]\n : undefined);\n// TODO: Different hook which filters on on- and off-site?\n/**\n * Retrieves fields which contain blankNode.\n * @param {fields} {Node} - The field to retrieve from the record.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useLocalIds = makeParsedField((_) => (it) => isBlankNode(it[QuadPosition.object])\n ? it[QuadPosition.object]\n : undefined);\n/**\n * Retrieves fields which contain literal.\n * @param {fields} {Node} - The field to retrieve from the record.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useLiterals = makeParsedField((_) => (it) => isLiteral(it[QuadPosition.object])\n ? it[QuadPosition.object]\n : undefined);\n/**\n * Retrieves all value {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useValues = makeParsedField((_) => (it) => it[QuadPosition.object].value);\n/**\n * Retrieves all literalValue {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useLiteralValues = makeParsedField((_) => (it) => isLiteral(it[QuadPosition.object])\n ? it[QuadPosition.object].value\n : undefined);\n/**\n * Retrieves all base64 {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useBase64s = makeParsedField((_) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isLiteral(it) || !equals(it.datatype, base64Binary)) {\n return undefined;\n }\n return decode(it.value);\n});\n/**\n * Retrieves all bigInt {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useBigInts = makeParsedField((_) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isLiteral(it) || !bigIntTypes.some((type) => equals(it.datatype, type))) {\n return undefined;\n }\n return BigInt(it.value);\n});\n/**\n * Retrieves all boolean {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useBooleans = makeParsedField((_) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isLiteral(it) || !equals(it.datatype, xsdboolean)) {\n return undefined;\n }\n return it.value === \"true\" || it.value === \"1\" || it.value === \"t\";\n});\n/**\n * Retrieves all date {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useDates = makeParsedField((_) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isLiteral(it) || !(equals(it.datatype, dateTime) || equals(it.datatype, date))) {\n return undefined;\n }\n return new Date(it.value);\n});\n/**\n * Retrieves all langString and string {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useAnyStrings = makeParsedField((_) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isLiteral(it) || !(equals(it.datatype, langString) || equals(it.datatype, string))) {\n return undefined;\n }\n return [it.value, it.language];\n});\n/**\n * Retrieves all langString {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useLangStrings = makeParsedField((_) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isLiteral(it) || !equals(it.datatype, langString)) {\n return undefined;\n }\n return [it.value, it.language];\n});\n/**\n * Retrieves all string {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useRegularStrings = makeParsedField((_) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isLiteral(it) || !equals(it.datatype, string)) {\n return undefined;\n }\n return it.value;\n});\n/**\n * Retrieves all string and lang string {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useStrings = makeParsedField((_) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isLiteral(it) || !(equals(it.datatype, langString) || equals(it.datatype, string))) {\n return undefined;\n }\n return it.value;\n});\n/**\n * Retrieves all number {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useNumbers = makeParsedField((lrs) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isLiteral(it) || !numberTypes.some((type) => equals(it.datatype, type))) {\n return undefined;\n }\n const n = Number(it.value);\n if (isNaN(n)) {\n lrs.report(new Error(`useNumber value was NaN: '${it.value}' on ${quad}`));\n return undefined;\n }\n return n;\n});\n/**\n * Retrieves all url {fields}.\n * @param resource {Node} - The resource to look up. Defaults to the context subject.\n */\nconst useUrls = makeParsedField((lrs) => (quad) => {\n const it = quad[QuadPosition.object];\n if (!isNamedNode(it)) {\n return undefined;\n }\n try {\n return new URL(it.value);\n }\n catch (e) {\n lrs.report(e);\n return undefined;\n }\n});\n\nfunction useActionById(action, defaultArgs) {\n const lrs = useLRS();\n const update = useDataInvalidation(isNamedNode(action) ? action : undefined);\n const callback = React.useCallback((args) => {\n if (isNamedNode(action)) {\n return lrs.exec(action, args !== null && args !== void 0 ? args : defaultArgs);\n }\n throw new Error(`No valid action given: ${action}`);\n }, [lrs, action, update, defaultArgs]);\n return isNamedNode(action) ? callback : undefined;\n}\n\n/**\n * Keeps track of zero or more subjects with fallback to the context subject if nothing is given.\n * @param subjects The resources to invalidate on.\n * @return The subjects which have been invalidated on, and the last update time of all resources.\n */\nconst useSubject = (subjects) => {\n const { subject: subCtx } = useLinkRenderContext();\n const getSubjects = () => (subjects !== undefined ? subjects : subCtx);\n const targetsRef = React.useRef([]);\n const targets = React.useMemo(() => {\n const next = getSubjects();\n const changed = calculatedValueChanged(targetsRef.current, next);\n if (changed) {\n targetsRef.current = next;\n return next;\n }\n return targetsRef.current;\n }, [subjects, subCtx]);\n const lastUpdate = useDataFetching(targets);\n return [\n targets,\n lastUpdate,\n ];\n};\n\nconst calculator = (lrs, targets, path, match) => {\n if (targets === undefined) {\n return NESTED_EMPTY_ARRAY;\n }\n else if (Array.isArray(targets)) {\n return [targets.map((s) => lrs.findSubject(s, path, match)), EMPTY_ARRAY];\n }\n return [lrs.findSubject(targets, path, match), EMPTY_ARRAY];\n};\n/**\n * Retrieve the subjects that have {match} at the ends of the {path}, starting at {subjects} or the context subject.\n *\n * @param path - Array of properties to traverse, following each hop the next property is looked up and followed.\n * @param match - The value to match the value at the end of each path against.\n * @param subjects - The resource(s) to start at. The context subject is used if omitted.\n * @return Array of subjects which match the given {match} at the end of the {path}, if the path couldn't be completed\n * or no value was found at the end the element will be undefined.\n */\nfunction useFindSubject(path, match, subjects) {\n const [targets, inv] = useSubject(subjects);\n return useCalculatedValue(calculator, [inv], targets, path, match);\n}\n\nfunction useResourceLinks(subjects, mapDataToProps, opts) {\n const defaultedOpts = opts !== null && opts !== void 0 ? opts : globalLinkOptsDefaults;\n const lrs = useLRS();\n const dataSubjects = normalizeType(subjects);\n const lastUpdate = useDataInvalidation(dataSubjects);\n const [propMap, requestedProperties] = React.useMemo(() => dataPropsToPropMap(mapDataToProps, defaultedOpts), [mapDataToProps, opts]);\n const propSets = React.useMemo(() => dataSubjects.map((subject) => {\n if (!subject) {\n return [subject, undefined];\n }\n const record = lrs.tryRecord(subject);\n return [subject.value, record !== null && record !== void 0 ? record : { _id: subject }];\n }), [\n lrs,\n useMemoizedDataSubjects(dataSubjects),\n requestedProperties,\n lastUpdate,\n ]);\n return useManyLinkedObjectProperties(propSets, propMap, defaultedOpts.returnType);\n}\n\nfunction useLink(dataToProps, opts) {\n const { subject } = useLinkRenderContext();\n const [data] = useResourceLinks(subject, dataToProps, opts || defaultLinkOptions);\n return data;\n}\n\nfunction useResourceLink(subject, dataToProps, opts) {\n const [data] = useResourceLinks(subject, dataToProps, opts !== null && opts !== void 0 ? opts : defaultLinkOptions);\n return data;\n}\n\nconst arrayReturnTypes = [\n ReturnType.AllTerms,\n ReturnType.AllValues,\n ReturnType.AllLiterals,\n];\nconst emptyOutput = (opts) => {\n return (arrayReturnTypes.includes(opts.returnType) ? [] : undefined);\n};\nconst calculate$2 = (lrs, subject, property, opts) => {\n if (!subject) {\n return emptyOutput(opts);\n }\n const props = lrs.getResourcePropertyRaw(subject, property);\n return toReturnType(opts.returnType, props);\n};\nfunction useResourceProperty(subject, property, opts) {\n const optsOrDefault = opts || defaultPropertyOptions;\n const lrs = useLRS();\n const properties = property ? normalizeType(property) : [];\n const lastUpdate = useDataInvalidation([subject, ...properties]);\n const [value, setValue,] = React.useState(() => calculate$2(lrs, subject, properties, optsOrDefault));\n React.useEffect(() => {\n const returnValue = calculate$2(lrs, subject, properties, optsOrDefault);\n if (calculatedValueChanged(value, returnValue)) {\n setValue(returnValue);\n }\n }, [\n lrs,\n subject ? id(subject) : undefined,\n properties\n .map((p) => id(p))\n .reduce((acc, next) => acc + next, 0),\n lastUpdate,\n ]);\n return value;\n}\n\nfunction useProperty(property, opts) {\n const optsOrDefault = opts || defaultPropertyOptions;\n const { subject } = useLinkRenderContext();\n return useResourceProperty(subject, property, optsOrDefault);\n}\n\nfunction isBackgroundLoading(status) {\n const { current, previous } = status;\n return current !== RecordState.Present && (previous === RecordState.Present && current !== RecordState.Absent);\n}\nfunction isFullyLoaded(status) {\n return status.current === RecordState.Present;\n}\nconst useRecordStatus = (id = undefined) => {\n const lrs = useLRS();\n const { subject } = useLinkRenderContext();\n const target = id !== null && id !== void 0 ? id : subject;\n const [status, setStatus] = React.useState(() => lrs.getState(target.value));\n const update = useDataInvalidation(target);\n React.useEffect(() => {\n setStatus(lrs.getState(target.value));\n }, [target, update]);\n return status;\n};\n\nconst calculator$1 = (lrs, targets) => {\n if (Array.isArray(targets)) {\n return [\n targets.map((t) => isNamedNode(t) ? lrs.getStatus(t) : undefined),\n EMPTY_ARRAY,\n ];\n }\n if (!isNamedNode(targets)) {\n return [undefined, EMPTY_ARRAY];\n }\n return [lrs.getStatus(targets), EMPTY_ARRAY];\n};\n/**\n * Retrieve the fetching status of {subject}. Will return the status of the context subject if no subject was passed.\n *\n * Note that it is the request status, so blank nodes have no status.\n *\n * @param subjects - The subject(s) to get the status for. Uses the context subject if omitted or undefined.\n * @return A list of statuses. Cardinality with {subjects} is kept,\n * where the first item matches {subjects} if that is not an array.\n */\nfunction useStatus(subjects) {\n const [targets, inv] = useSubject(subjects);\n return useCalculatedValue(calculator$1, [inv], targets);\n}\n\nconst updatedReference = (originalIds, newIds) => (term) => {\n if (isLiteral(term)) {\n return term;\n }\n const i = originalIds.indexOf(term);\n if (i >= 0) {\n return newIds[i];\n }\n return term;\n};\nconst cloneRecords = (lrs, ids) => () => {\n const cloneIds = ids.map(() => rdf.blankNode());\n const store = lrs.store.getInternalStore().store;\n const replaceReference = updatedReference(ids, cloneIds);\n cloneIds.forEach((_, i) => {\n cloneRecord(lrs, ids, cloneIds, i, replaceReference);\n });\n const cleanupClones = () => {\n cloneIds.forEach((id) => store.deleteRecord(id.value));\n };\n return [cloneIds, cleanupClones];\n};\nconst filterIncomplete = (lrs, ids) => ids.filter((id) => lrs.getState(id.value).current !== RecordState.Present);\n/**\n * Makes temporary copies of the given [ids] with internal references updated.\n * Will clear the resource when the component is unmounted.\n * @return List of cloned ids, keeps ordinality.\n */\nconst useTempClones = (ids) => {\n const lrs = useLRS();\n const isMountedRef = React.useRef(false);\n const idCheck = JSON.stringify(ids);\n const [incomplete, setIncomplete] = React.useState(filterIncomplete(lrs, ids));\n const [[cloneIds, cleanup], setCloneState] = React.useState(cloneRecords(lrs, ids));\n React.useEffect(() => {\n if (isMountedRef.current) {\n setCloneState(cloneRecords(lrs, ids));\n }\n else {\n isMountedRef.current = true;\n }\n return cleanup;\n }, [lrs, idCheck]);\n const updated = useDataInvalidation(incomplete);\n React.useEffect(() => {\n setIncomplete(Array.from(new Set([...incomplete, ...filterIncomplete(lrs, ids)])));\n }, [idCheck]);\n React.useEffect(() => {\n const completed = incomplete\n .filter((id) => lrs.getState(id.value).current === RecordState.Present);\n if (completed.length > 0) {\n const replaceReference = updatedReference(ids, cloneIds);\n for (const id of completed) {\n cloneRecord(lrs, ids, cloneIds, ids.indexOf(id), replaceReference);\n }\n setIncomplete((prev) => filterIncomplete(lrs, prev));\n }\n }, [lrs, idCheck, updated]);\n return cloneIds;\n};\nconst cloneRecord = (lrs, ids, cloneIds, i, replaceReference) => {\n const store = lrs.store.getInternalStore().store;\n const id = ids[i];\n const cloneId = cloneIds[i];\n const current = store.getRecord(id.value);\n const next = {\n [ll$1.clonedFrom.value]: id,\n };\n if (current) {\n const { _id: oldId, ...fields } = current;\n const updatedFields = Object.entries(fields).reduce((acc, [field, value]) => {\n return ({\n ...acc,\n [field]: Array.isArray(value) ? value.map(replaceReference) : replaceReference(value),\n });\n }, next);\n store.setRecord(cloneId.value, updatedFields);\n }\n else {\n store.setRecord(cloneId.value, next);\n }\n};\n\nconst append = (props, field, value) => {\n if (value) {\n props[field.value] = typeof value === \"string\" ? rdf.literal(value) : value;\n }\n};\n/**\n * Derives a set of temporary records from the passed {items} and returns their ids.\n * Will clear the resources when the component is unmounted.\n *\n * Note that when passing an existing ids as {givenIds}, the original data will be cleared as well.\n * The arity of {items} and {givenIds} must match when {givenIds} is provided.\n *\n * @param items The list used to create the records from, will be passed individually to the {@link ItemFieldBuilder}.\n */\nconst useTempRecords = (items, fields, deps, givenIds) => {\n const lrs = useLRS();\n const [ids, _] = React.useState(() => givenIds !== null && givenIds !== void 0 ? givenIds : items.map(() => rdf.blankNode()));\n const setRecord = React.useCallback(() => {\n const store = lrs.store.getInternalStore().store;\n const fieldSets = items.map((item) => {\n const set = {};\n if (typeof fields === \"function\") {\n const bound = (field, value) => append(set, field, value);\n fields(item, bound);\n return set;\n }\n else {\n return {\n ...fields,\n ...set,\n };\n }\n });\n for (let i = 0, max = ids.length; i < max; i++) {\n store.setRecord(ids[i].value, fieldSets[i]);\n }\n return () => {\n for (const id of ids) {\n store.deleteRecord(id.value);\n }\n };\n }, [lrs, ids, ...deps]);\n // First render\n React.useState(setRecord);\n React.useLayoutEffect(setRecord, [setRecord]);\n return ids;\n};\n\n/**\n * Writes a temporary record into the store and returns its id.\n * Will clear the resource when the component is unmounted.\n *\n * Note that when passing an existing id as {givenId}, the original data will be cleared as well.\n */\nconst useTempRecord = (type$1, fields, deps, givenId) => {\n let enhancedFields;\n if (typeof fields === \"function\") {\n enhancedFields = (__, set) => {\n set(type, type$1);\n fields(set);\n };\n }\n else {\n enhancedFields = {\n [type.value]: type$1,\n ...fields,\n };\n }\n const memoizedId = React.useMemo(() => givenId ? [givenId] : undefined, [givenId]);\n return useTempRecords([undefined], enhancedFields, deps, memoizedId)[0];\n};\n\n/** Get the current topology */\nfunction useTopology() {\n return React.useContext(LinkRenderCtx).topology;\n}\n\n/**\n * @unstable\n */\nfunction useView(type, predicate = RENDER_CLASS_NAME, topology) {\n const lrs = useLRS();\n const context = useLinkRenderContext();\n return React.useMemo(() => {\n var _a;\n return (_a = lrs.getComponentForProperty(type, predicate, topology || context.topology)) !== null && _a !== void 0 ? _a : undefined;\n }, [lrs, type, predicate, topology || context.topology]);\n}\n\nconst toDisplayName = (topology) => {\n var _a, _b;\n const name = ((_b = (_a = topology.value.split(/[\\/#]/).pop()) === null || _a === void 0 ? void 0 : _a.split(\"?\")) === null || _b === void 0 ? void 0 : _b.shift()) || topology.value;\n return `TP(${name[0].toUpperCase()}${name.slice(1)})`;\n};\n/**\n * Basic building block for making a topology.\n * @param topology The topology Iri.\n * @returns The topology provider component.\n */\nconst createTopologyProvider = (topology) => {\n const Provider = ({ children }) => {\n const prevContext = React.useContext(LinkRenderCtx);\n const newContext = React.useMemo(() => ({\n ...prevContext,\n topology,\n }), [topology, prevContext]);\n return (React.createElement(LinkRenderCtx.Provider, { value: newContext }, children));\n };\n Provider.displayName = toDisplayName(topology);\n return Provider;\n};\n\nconst extendsLinkOpts = (predicate) => !(isNode(predicate) || Array.isArray(predicate));\nconst mergedMap = (predicate) => {\n const t = extendsLinkOpts(predicate)\n ? predicate\n : { label: predicate };\n return t;\n};\n/* Arity */\n/** Return all props from the set. */\nconst all = (predicate) => ({\n ...mergedMap(predicate),\n limit: Infinity,\n});\n/** Return a limited number of props from the set. */\nconst some = (predicate, limit = 10) => ({\n ...mergedMap(predicate),\n limit,\n});\n/** Return a single prop from the set. */\nconst single = (predicate) => ({\n ...mergedMap(predicate),\n limit: 1,\n});\n/* Return type */\n/** Sets the return type to `ReturnType.Term`. */\nconst term = (predicate) => ({\n ...mergedMap(predicate),\n returnType: ReturnType.Term,\n});\n/** Sets the return type to `ReturnType.Literal`. */\nconst literal = (predicate) => ({\n ...mergedMap(predicate),\n returnType: ReturnType.Literal,\n});\n/** Sets the return type to `ReturnType.Value`. */\nconst value = (predicate) => ({\n ...mergedMap(predicate),\n returnType: ReturnType.Value,\n});\n/** Sets the return type to `ReturnType.AllTerms`. */\nconst terms = (predicate) => ({\n ...mergedMap(predicate),\n returnType: ReturnType.AllTerms,\n});\n/** Sets the return type to `ReturnType.AllLiterals`. */\nconst literals = (predicate) => ({\n ...mergedMap(predicate),\n returnType: ReturnType.AllLiterals,\n});\n/** Sets the return type to `ReturnType.AllValues`. */\nconst values = (predicate) => ({\n ...mergedMap(predicate),\n returnType: ReturnType.AllValues,\n});\n/* Data fetching */\n/**\n * Tell link to fetch the data if not present or stale.\n *\n * @see {hold} For opposite behaviour\n */\nconst dereference = (predicate) => ({\n ...mergedMap(predicate),\n fetch: true,\n});\n/**\n * Tell link to hold current data even if unfetched or stale.\n *\n * @see {hold} For opposite behaviour\n */\nconst hold = (predicate) => ({\n ...mergedMap(predicate),\n fetch: false,\n});\n/* Rendering */\n/**\n * Render the component even when _no data_ could be mapped.\n */\nconst renderAlways = (predicate) => ({\n ...mergedMap(predicate),\n forceRender: true,\n});\n/**\n * Only render the component when _some_ data could be mapped.\n */\nconst renderPartial = (predicate) => ({\n ...mergedMap(predicate),\n forceRender: false,\n});\n\nfunction registerExotic(comp, type, property, topology) {\n comp.type = type;\n comp.property = property;\n comp.topology = topology;\n return register(comp);\n}\nfunction register(comp) {\n // @ts-ignore\n const wrappedComp = (comp.hocs || []).reduce((prev, cur) => cur(prev), comp);\n const dataBoundComp = link(comp.mapDataToProps, comp.linkOpts)(wrappedComp);\n return LinkedRenderStore.registerRenderer(dataBoundComp, comp.type, comp.property, comp.topology);\n}\n\nconst BlankNode = PropTypes.shape({\n termType: PropTypes.oneOf([\"BlankNode\"]),\n value: PropTypes.string,\n});\nconst NamedNode = PropTypes.shape({\n termType: PropTypes.oneOf([\"NamedNode\"]),\n value: PropTypes.string,\n});\nconst Literal = PropTypes.shape({\n datatype: NamedNode,\n language: PropTypes.string,\n termType: PropTypes.oneOf([\"Literal\"]),\n value: PropTypes.string,\n});\nconst Statement = PropTypes.shape({\n subject: PropTypes.oneOfType([BlankNode, NamedNode]),\n predicate: PropTypes.oneOfType([BlankNode, NamedNode]),\n object: PropTypes.oneOfType([BlankNode, NamedNode, Literal]),\n graph: PropTypes.oneOfType([BlankNode, NamedNode]),\n});\nconst namedOrBlankNode = PropTypes.oneOfType([\n NamedNode,\n BlankNode,\n]);\nconst linkType = PropTypes.oneOfType([\n NamedNode,\n BlankNode,\n Literal,\n Statement,\n PropTypes.string,\n PropTypes.arrayOf(NamedNode),\n PropTypes.arrayOf(BlankNode),\n PropTypes.arrayOf(Literal),\n PropTypes.arrayOf(Statement),\n PropTypes.arrayOf(PropTypes.string),\n]);\nconst labelType = PropTypes.oneOfType([\n NamedNode,\n PropTypes.arrayOf(NamedNode),\n]);\nconst linkedPropType = PropTypes.oneOfType([\n NamedNode,\n BlankNode,\n Literal,\n]);\nconst lrsType = PropTypes.instanceOf(LinkedRenderStore);\nconst subjectType = namedOrBlankNode;\nconst topologyType = namedOrBlankNode;\n\nexport { Component, LRSCtx, LinkRenderCtx, Property, QueryType, RenderStoreProvider, Resource, ReturnType, TopologyProvider, Type, all, array, createTopologyProvider, defaultLinkOptions, defaultPropertyOptions, dereference, dig, errorComponent, except, getLinkedObjectClass, hold, isBackgroundLoading, isFullyLoaded, labelType, link, linkType, linkedPropType, literal, literals, loadingComponent, lrsType, makeParsedField, register, registerExotic, renderAlways, renderError, renderPartial, single, some, subjectType, term, terms, topologyType, useActionById, useAnyStrings, useBase64s, useBigInts, useBooleans, useCalculateChildProps, useDataFetching, useDataInvalidation, useDates, useFields, useFindSubject, useGlobalIds, useIds, useLRS, useLangStrings, useLink, useLinkRenderContext, useLiteralValues, useLiterals, useLocalIds, useNumbers, useProperty, useQuadruples, useRecordStatus, useRegularStrings, useResourceLink, useResourceLinks, useResourceProperty, useResourcePropertyView, useResourceView, useStatus, useStrings, useSubject, useTempClones, useTempRecord, useTempRecords, useTopology, useUrls, useValues, useView, value, values, withLRS, withTopology };\n//# sourceMappingURL=index.js.map\n","var visitWithParents = require('unist-util-visit-parents');\n\nfunction addListMetadata() {\n return function (ast) {\n visitWithParents(ast, 'list', function (listNode, parents) {\n var depth = 0, i, n;\n for (i = 0, n = parents.length; i < n; i++) {\n if (parents[i].type === 'list') depth += 1;\n }\n for (i = 0, n = listNode.children.length; i < n; i++) {\n var child = listNode.children[i];\n child.index = i;\n child.ordered = listNode.ordered;\n }\n listNode.depth = depth;\n });\n return ast;\n };\n}\n\nmodule.exports = addListMetadata;\n","'use strict'\n\nmodule.exports = fromMarkdown\n\n// These three are compiled away in the `dist/`\n\nvar toString = require('mdast-util-to-string')\nvar assign = require('micromark/dist/constant/assign')\nvar own = require('micromark/dist/constant/has-own-property')\nvar normalizeIdentifier = require('micromark/dist/util/normalize-identifier')\nvar safeFromInt = require('micromark/dist/util/safe-from-int')\nvar parser = require('micromark/dist/parse')\nvar preprocessor = require('micromark/dist/preprocess')\nvar postprocess = require('micromark/dist/postprocess')\nvar decode = require('parse-entities/decode-entity')\nvar stringifyPosition = require('unist-util-stringify-position')\n\nfunction fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parser(options).document().write(preprocessor()(value, encoding, true))\n )\n )\n}\n\n// Note this compiler only understand complete buffering, not streaming.\nfunction compiler(options) {\n var settings = options || {}\n var config = configure(\n {\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\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\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\n settings.mdastExtensions || []\n )\n\n var data = {}\n\n return compile\n\n function compile(events) {\n var stack = [{type: 'root', children: []}]\n var tokenStack = []\n var listStack = []\n var index = -1\n var handler\n var listStart\n\n var context = {\n stack: stack,\n tokenStack: tokenStack,\n config: config,\n enter: enter,\n exit: exit,\n buffer: buffer,\n resume: resume,\n setData: setData,\n getData: getData\n }\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 listStart = listStack.pop(index)\n index = prepareList(events, listStart, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n assign({sliceSerialize: events[index][2].sliceSerialize}, context),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length) {\n throw new Error(\n 'Cannot close document, a token (`' +\n tokenStack[tokenStack.length - 1].type +\n '`, ' +\n stringifyPosition({\n start: tokenStack[tokenStack.length - 1].start,\n end: tokenStack[tokenStack.length - 1].end\n }) +\n ') is still open'\n )\n }\n\n // Figure out `root` position.\n stack[0].position = {\n start: point(\n events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}\n ),\n\n end: point(\n events.length\n ? events[events.length - 2][1].end\n : {line: 1, column: 1, offset: 0}\n )\n }\n\n return stack[0]\n }\n\n function prepareList(events, start, length) {\n var index = start - 1\n var containerBalance = -1\n var listSpread = false\n var listItem\n var tailIndex\n var lineIndex\n var tailEvent\n var event\n var firstBlankLineIndex\n var atMarker\n\n while (++index <= length) {\n 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 tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n 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 listItem._spread = true\n }\n\n // Fix position.\n listItem.end = point(\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n }\n\n // Create a new list item.\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n _spread: false,\n start: point(event[1].start)\n }\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n\n events[start][1]._spread = listSpread\n return length\n }\n\n function setData(key, value) {\n data[key] = value\n }\n\n function getData(key) {\n return data[key]\n }\n\n function point(d) {\n return {line: d.line, column: d.column, offset: d.offset}\n }\n\n function opener(create, and) {\n return open\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n function buffer() {\n this.stack.push({type: 'fragment', children: []})\n }\n\n function enter(node, token) {\n this.stack[this.stack.length - 1].children.push(node)\n this.stack.push(node)\n this.tokenStack.push(token)\n node.position = {start: point(token.start)}\n return node\n }\n\n function closer(and) {\n return close\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n function exit(token) {\n var node = this.stack.pop()\n var open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): it’s not open'\n )\n } else if (open.type !== token.type) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): a different token (`' +\n open.type +\n '`, ' +\n stringifyPosition({start: open.start, end: open.end}) +\n ') is open'\n )\n }\n\n node.position.end = point(token.end)\n return node\n }\n\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n this.stack[this.stack.length - 2].start = parseInt(\n this.sliceSerialize(token),\n 10\n )\n\n setData('expectingFirstListItemValue')\n }\n }\n\n function onexitcodefencedfenceinfo() {\n var data = this.resume()\n this.stack[this.stack.length - 1].lang = data\n }\n\n function onexitcodefencedfencemeta() {\n var data = this.resume()\n this.stack[this.stack.length - 1].meta = data\n }\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\n function onexitcodefenced() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data.replace(\n /^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g,\n ''\n )\n\n setData('flowCodeInside')\n }\n\n function onexitcodeindented() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitdefinitiontitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitdefinitiondestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitatxheadingsequence(token) {\n if (!this.stack[this.stack.length - 1].depth) {\n this.stack[this.stack.length - 1].depth = this.sliceSerialize(\n token\n ).length\n }\n }\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n function onexitsetextheadinglinesequence(token) {\n this.stack[this.stack.length - 1].depth =\n this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n function onenterdata(token) {\n var siblings = this.stack[this.stack.length - 1].children\n var tail = siblings[siblings.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {start: point(token.start)}\n this.stack[this.stack.length - 1].children.push(tail)\n }\n\n this.stack.push(tail)\n }\n\n function onexitdata(token) {\n var tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n function onexitlineending(token) {\n var 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 context.children[context.children.length - 1].position.end = point(\n token.end\n )\n\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.indexOf(context.type) > -1\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n function onexithtmlflow() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexithtmltext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitcodetext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitlink() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitimage() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitlabeltext(token) {\n this.stack[this.stack.length - 2].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitlabel() {\n var fragment = this.stack[this.stack.length - 1]\n var value = this.resume()\n\n this.stack[this.stack.length - 1].label = value\n\n // Assume a reference.\n setData('inReference', true)\n\n if (this.stack[this.stack.length - 1].type === 'link') {\n this.stack[this.stack.length - 1].children = fragment.children\n } else {\n this.stack[this.stack.length - 1].alt = value\n }\n }\n\n function onexitresourcedestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitresourcetitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitresource() {\n setData('inReference')\n }\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n function onexitreferencestring(token) {\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n function onexitcharacterreferencevalue(token) {\n var data = this.sliceSerialize(token)\n var type = getData('characterReferenceType')\n var value\n var tail\n\n if (type) {\n value = safeFromInt(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n\n setData('characterReferenceType')\n } else {\n value = decode(data)\n }\n\n tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url = this.sliceSerialize(token)\n }\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url =\n 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n function blockQuote() {\n return {type: 'blockquote', children: []}\n }\n\n function codeFlow() {\n return {type: 'code', lang: null, meta: null, value: ''}\n }\n\n function codeText() {\n return {type: 'inlineCode', value: ''}\n }\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n function emphasis() {\n return {type: 'emphasis', children: []}\n }\n\n function heading() {\n return {type: 'heading', depth: undefined, children: []}\n }\n\n function hardBreak() {\n return {type: 'break'}\n }\n\n function html() {\n return {type: 'html', value: ''}\n }\n\n function image() {\n return {type: 'image', title: null, url: '', alt: null}\n }\n\n function link() {\n return {type: 'link', title: null, url: '', children: []}\n }\n\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n spread: token._spread,\n children: []\n }\n }\n\n function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n function paragraph() {\n return {type: 'paragraph', children: []}\n }\n\n function strong() {\n return {type: 'strong', children: []}\n }\n\n function text() {\n return {type: 'text', value: ''}\n }\n\n function thematicBreak() {\n return {type: 'thematicBreak'}\n }\n}\n\nfunction configure(config, extensions) {\n var index = -1\n\n while (++index < extensions.length) {\n extension(config, extensions[index])\n }\n\n return config\n}\n\nfunction extension(config, extension) {\n var key\n var left\n\n for (key in extension) {\n left = own.call(config, key) ? config[key] : (config[key] = {})\n\n if (key === 'canContainEols') {\n config[key] = [].concat(left, extension[key])\n } else {\n Object.assign(left, extension[key])\n }\n }\n}\n","'use strict'\n\nmodule.exports = require('./dist')\n","'use strict'\n\nmodule.exports = toString\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.\nfunction toString(node) {\n return (\n (node &&\n (node.value ||\n node.alt ||\n node.title ||\n ('children' in node && all(node.children)) ||\n ('length' in node && all(node)))) ||\n ''\n )\n}\n\nfunction all(values) {\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = toString(values[index])\n }\n\n return result.join('')\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","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlpha = regexCheck(/[A-Za-z]/)\n\nmodule.exports = asciiAlpha\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\nmodule.exports = asciiAlphanumeric\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\nmodule.exports = asciiAtext\n","'use strict'\n\n// Note: EOF is seen as ASCII control here, because `null < 32 == true`.\nfunction asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code < 32 || code === 127\n )\n}\n\nmodule.exports = asciiControl\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiDigit = regexCheck(/\\d/)\n\nmodule.exports = asciiDigit\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\nmodule.exports = asciiHexDigit\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\nmodule.exports = asciiPunctuation\n","'use strict'\n\nfunction markdownLineEndingOrSpace(code) {\n return code < 0 || code === 32\n}\n\nmodule.exports = markdownLineEndingOrSpace\n","'use strict'\n\nfunction markdownLineEnding(code) {\n return code < -2\n}\n\nmodule.exports = markdownLineEnding\n","'use strict'\n\nfunction markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\nmodule.exports = markdownSpace\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\nvar unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')\n\n// In fact adds to the bundle size.\n\nvar unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar unicodeWhitespace = regexCheck(/\\s/)\n\nmodule.exports = unicodeWhitespace\n","'use strict'\n\nvar assign = Object.assign\n\nmodule.exports = assign\n","'use strict'\n\nvar fromCharCode = String.fromCharCode\n\nmodule.exports = fromCharCode\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = own\n","'use strict'\n\n// This module is copied from .\nvar basics = [\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 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\nmodule.exports = basics\n","'use strict'\n\n// This module is copied from .\nvar raws = ['pre', 'script', 'style', 'textarea']\n\nmodule.exports = raws\n","'use strict'\n\nvar splice = [].splice\n\nmodule.exports = splice\n","'use strict'\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.\nvar unicodePunctuation = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\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\nmodule.exports = unicodePunctuation\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar text$1 = require('./initialize/text.js')\nvar attention = require('./tokenize/attention.js')\nvar autolink = require('./tokenize/autolink.js')\nvar blockQuote = require('./tokenize/block-quote.js')\nvar characterEscape = require('./tokenize/character-escape.js')\nvar characterReference = require('./tokenize/character-reference.js')\nvar codeFenced = require('./tokenize/code-fenced.js')\nvar codeIndented = require('./tokenize/code-indented.js')\nvar codeText = require('./tokenize/code-text.js')\nvar definition = require('./tokenize/definition.js')\nvar hardBreakEscape = require('./tokenize/hard-break-escape.js')\nvar headingAtx = require('./tokenize/heading-atx.js')\nvar htmlFlow = require('./tokenize/html-flow.js')\nvar htmlText = require('./tokenize/html-text.js')\nvar labelEnd = require('./tokenize/label-end.js')\nvar labelStartImage = require('./tokenize/label-start-image.js')\nvar labelStartLink = require('./tokenize/label-start-link.js')\nvar lineEnding = require('./tokenize/line-ending.js')\nvar thematicBreak = require('./tokenize/thematic-break.js')\nvar list = require('./tokenize/list.js')\nvar setextUnderline = require('./tokenize/setext-underline.js')\n\nvar document = {\n 42: list,\n // Asterisk\n 43: list,\n // Plus sign\n 45: list,\n // Dash\n 48: list,\n // 0\n 49: list,\n // 1\n 50: list,\n // 2\n 51: list,\n // 3\n 52: list,\n // 4\n 53: list,\n // 5\n 54: list,\n // 6\n 55: list,\n // 7\n 56: list,\n // 8\n 57: list,\n // 9\n 62: blockQuote // Greater than\n}\nvar contentInitial = {\n 91: definition // Left square bracket\n}\nvar flowInitial = {\n '-2': codeIndented,\n // Horizontal tab\n '-1': codeIndented,\n // Virtual space\n 32: codeIndented // Space\n}\nvar flow = {\n 35: headingAtx,\n // Number sign\n 42: thematicBreak,\n // Asterisk\n 45: [setextUnderline, thematicBreak],\n // Dash\n 60: htmlFlow,\n // Less than\n 61: setextUnderline,\n // Equals to\n 95: thematicBreak,\n // Underscore\n 96: codeFenced,\n // Grave accent\n 126: codeFenced // Tilde\n}\nvar string = {\n 38: characterReference,\n // Ampersand\n 92: characterEscape // Backslash\n}\nvar text = {\n '-5': lineEnding,\n // Carriage return\n '-4': lineEnding,\n // Line feed\n '-3': lineEnding,\n // Carriage return + line feed\n 33: labelStartImage,\n // Exclamation mark\n 38: characterReference,\n // Ampersand\n 42: attention,\n // Asterisk\n 60: [autolink, htmlText],\n // Less than\n 91: labelStartLink,\n // Left square bracket\n 92: [hardBreakEscape, characterEscape],\n // Backslash\n 93: labelEnd,\n // Right square bracket\n 95: attention,\n // Underscore\n 96: codeText // Grave accent\n}\nvar insideSpan = {\n null: [attention, text$1.resolver]\n}\nvar disable = {\n null: []\n}\n\nexports.contentInitial = contentInitial\nexports.disable = disable\nexports.document = document\nexports.flow = flow\nexports.flowInitial = flowInitial\nexports.insideSpan = insideSpan\nexports.string = string\nexports.text = text\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\n\nvar tokenize = initializeContent\n\nfunction initializeContent(effects) {\n var contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n var previous\n return contentStart\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\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n function lineStart(code) {\n var token = effects.enter('chunkText', {\n contentType: 'text',\n previous: previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\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\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeDocument\nvar containerConstruct = {\n tokenize: tokenizeContainer\n}\nvar lazyFlowConstruct = {\n tokenize: tokenizeLazyFlow\n}\n\nfunction initializeDocument(effects) {\n var self = this\n var stack = []\n var continued = 0\n var inspectConstruct = {\n tokenize: tokenizeInspect,\n partial: true\n }\n var inspectResult\n var childFlow\n var childToken\n return start\n\n function start(code) {\n if (continued < stack.length) {\n self.containerState = stack[continued][1]\n return effects.attempt(\n stack[continued][0].continuation,\n documentContinue,\n documentContinued\n )(code)\n }\n\n return documentContinued(code)\n }\n\n function documentContinue(code) {\n continued++\n return start(code)\n }\n\n function documentContinued(code) {\n // If we’re in a concrete construct (such as when expecting another line of\n // HTML, or we resulted in lazy content), we can immediately start flow.\n if (inspectResult && inspectResult.flowContinue) {\n return flowStart(code)\n }\n\n self.interrupt =\n childFlow &&\n childFlow.currentConstruct &&\n childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n function containerContinue(code) {\n stack.push([self.currentConstruct, self.containerState])\n self.containerState = undefined\n return documentContinued(code)\n }\n\n function flowStart(code) {\n if (code === null) {\n exitContainers(0, true)\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\n function flowContinue(code) {\n if (code === null) {\n continueFlow(effects.exit('chunkFlow'))\n return flowStart(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n continueFlow(effects.exit('chunkFlow'))\n return effects.check(inspectConstruct, documentAfterPeek)\n }\n\n effects.consume(code)\n return flowContinue\n }\n\n function documentAfterPeek(code) {\n exitContainers(\n inspectResult.continued,\n inspectResult && inspectResult.flowEnd\n )\n continued = 0\n return start(code)\n }\n\n function continueFlow(token) {\n if (childToken) childToken.next = token\n childToken = token\n childFlow.lazy = inspectResult && inspectResult.lazy\n childFlow.defineSkip(token.start)\n childFlow.write(self.sliceStream(token))\n }\n\n function exitContainers(size, end) {\n var index = stack.length // Close the flow.\n\n if (childFlow && end) {\n childFlow.write([null])\n childToken = childFlow = undefined\n } // Exit open containers.\n\n while (index-- > size) {\n self.containerState = stack[index][1]\n stack[index][0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function tokenizeInspect(effects, ok) {\n var subcontinued = 0\n inspectResult = {}\n return inspectStart\n\n function inspectStart(code) {\n if (subcontinued < stack.length) {\n self.containerState = stack[subcontinued][1]\n return effects.attempt(\n stack[subcontinued][0].continuation,\n inspectContinue,\n inspectLess\n )(code)\n } // If we’re continued but in a concrete flow, we can’t have more\n // containers.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n inspectResult.flowContinue = true\n return inspectDone(code)\n }\n\n self.interrupt =\n childFlow.currentConstruct && childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd,\n inspectDone\n )(code)\n }\n\n function inspectContinue(code) {\n subcontinued++\n return self.containerState._closeFlow\n ? inspectFlowEnd(code)\n : inspectStart(code)\n }\n\n function inspectLess(code) {\n if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {\n // Maybe another container?\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd, // Maybe flow, or a blank line?\n effects.attempt(\n lazyFlowConstruct,\n inspectFlowEnd,\n effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)\n )\n )(code)\n } // Otherwise we’re interrupting.\n\n return inspectFlowEnd(code)\n }\n\n function inspectLazy(code) {\n // Act as if all containers are continued.\n subcontinued = stack.length\n inspectResult.lazy = true\n inspectResult.flowContinue = true\n return inspectDone(code)\n } // We’re done with flow if we have more containers, or an interruption.\n\n function inspectFlowEnd(code) {\n inspectResult.flowEnd = true\n return inspectDone(code)\n }\n\n function inspectDone(code) {\n inspectResult.continued = subcontinued\n self.interrupt = self.containerState = undefined\n return ok(code)\n }\n }\n}\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.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction tokenizeLazyFlow(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.lazy(this.parser.constructs.flow, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\nvar content = require('../tokenize/content.js')\n\nvar tokenize = initializeFlow\n\nfunction initializeFlow(effects) {\n var self = this\n var initial = effects.attempt(\n // Try to parse a blank line.\n partialBlankLine,\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\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\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\nexports.tokenize = tokenize\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar assign = require('../constant/assign.js')\nvar shallow = require('../util/shallow.js')\n\nvar text = initializeFactory('text')\nvar string = initializeFactory('string')\nvar resolver = {\n resolveAll: createResolver()\n}\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n function initializeText(effects) {\n var self = this\n var constructs = this.parser.constructs[field]\n var text = effects.attempt(constructs, start, notText)\n return start\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\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\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 function atBreak(code) {\n var list = constructs[code]\n var index = -1\n\n if (code === null) {\n return true\n }\n\n if (list) {\n while (++index < list.length) {\n if (\n !list[index].previous ||\n list[index].previous.call(self, self.previous)\n ) {\n return true\n }\n }\n }\n }\n }\n}\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n function resolveAllText(events, context) {\n var index = -1\n var 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} // 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\nfunction resolveAllLineSuffixes(events, context) {\n var eventIndex = -1\n var chunks\n var data\n var chunk\n var index\n var bufferIndex\n var size\n var tabs\n var token\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 data = events[eventIndex - 1][1]\n chunks = context.sliceStream(data)\n index = chunks.length\n bufferIndex = -1\n size = 0\n tabs = undefined\n\n while (index--) {\n 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 else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n 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: shallow(data.end)\n }\n data.end = shallow(token.start)\n\n if (data.start.offset === data.end.offset) {\n 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\nexports.resolver = resolver\nexports.string = string\nexports.text = text\n","'use strict'\n\nvar miniflat = require('./util/miniflat.js')\nvar content = require('./initialize/content.js')\nvar document = require('./initialize/document.js')\nvar flow = require('./initialize/flow.js')\nvar text = require('./initialize/text.js')\nvar combineExtensions = require('./util/combine-extensions.js')\nvar createTokenizer = require('./util/create-tokenizer.js')\nvar constructs = require('./constructs.js')\n\nfunction parse(options) {\n var settings = options || {}\n var parser = {\n defined: [],\n constructs: combineExtensions(\n [constructs].concat(miniflat(settings.extensions))\n ),\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(text.string),\n text: create(text.text)\n }\n return parser\n\n function create(initializer) {\n return creator\n\n function creator(from) {\n return createTokenizer(parser, initializer, from)\n }\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nvar subtokenize = require('./util/subtokenize.js')\n\nfunction postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n\nmodule.exports = postprocess\n","'use strict'\n\nvar search = /[\\0\\t\\n\\r]/g\n\nfunction preprocess() {\n var start = true\n var column = 1\n var buffer = ''\n var atCarriageReturn\n return preprocessor\n\n function preprocessor(value, encoding, end) {\n var chunks = []\n var match\n var next\n var startPosition\n var endPosition\n var code\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 = match ? 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 if (code === 0) {\n chunks.push(65533)\n column++\n } else if (code === 9) {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n } else if (code === 10) {\n chunks.push(-4)\n column = 1\n } // Must be carriage return.\n else {\n atCarriageReturn = true\n column = 1\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\nmodule.exports = preprocess\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar shallow = require('../util/shallow.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar classifyCharacter = require('../util/classify-character.js')\nvar movePoint = require('../util/move-point.js')\n\nvar attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\nfunction resolveAllAttention(events, context) {\n var index = -1\n var open\n var group\n var text\n var openingSequence\n var closingSequence\n var use\n var nextEvents\n var 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 openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: movePoint(shallow(events[open][1].end), -use),\n end: shallow(events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: shallow(events[index][1].start),\n end: movePoint(shallow(events[index][1].start), use)\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: shallow(openingSequence.start),\n end: shallow(closingSequence.end)\n }\n events[open][1].end = shallow(openingSequence.start)\n events[index][1].start = shallow(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 = chunkedPush(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = chunkedPush(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = chunkedPush(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = chunkedPush(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 = chunkedPush(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n chunkedSplice(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\nfunction tokenizeAttention(effects, ok) {\n var before = classifyCharacter(this.previous)\n var marker\n return start\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n\n function sequence(code) {\n var token\n var after\n var open\n var close\n\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n token = effects.exit('attentionSequence')\n after = classifyCharacter(code)\n open = !after || (after === 2 && before)\n close = !before || (before === 2 && after)\n token._open = marker === 42 ? open : open && (before || !close)\n token._close = marker === 42 ? close : close && (after || !open)\n return ok(code)\n }\n}\n\nmodule.exports = attention\n","'use strict'\n\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAtext = require('../character/ascii-atext.js')\nvar asciiControl = require('../character/ascii-control.js')\n\nvar autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\nfunction tokenizeAutolink(effects, ok, nok) {\n var size = 1\n return start\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\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\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\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\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\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\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\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\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\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\nmodule.exports = autolink\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit: exit\n}\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n if (code === 62) {\n if (!self.containerState.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n self.containerState.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\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\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n\nmodule.exports = blockQuote\n","'use strict'\n\nvar asciiPunctuation = require('../character/ascii-punctuation.js')\n\nvar characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\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\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\nmodule.exports = characterEscape\n","'use strict'\n\nvar decodeEntity = require('parse-entities/decode-entity.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar asciiHexDigit = require('../character/ascii-hex-digit.js')\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === 'object' && 'default' in e ? e : {default: e}\n}\n\nvar decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)\n\nvar characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n var self = this\n var size = 0\n var max\n var test\n return start\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\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\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\n function value(code) {\n var token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeEntity__default['default'](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\nmodule.exports = characterReference\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\n\nvar codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n var self = this\n var closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n var initialPrefix = prefixSize(this.events, 'linePrefix')\n var sizeOpen = 0\n var marker\n return start\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\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\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\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\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\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\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : content(code)\n }\n\n function content(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1)\n : content\n )\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return content(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n function tokenizeClosingFence(effects, ok, nok) {\n var size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\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\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\nmodule.exports = codeFenced\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar prefixSize = require('../util/prefix-size.js')\n\nvar codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented,\n resolve: resolveCodeIndented\n}\nvar indentedContentConstruct = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n\nfunction resolveCodeIndented(events, context) {\n var code = {\n type: 'codeIndented',\n start: events[0][1].start,\n end: events[events.length - 1][1].end\n }\n chunkedSplice(events, 0, 0, [['enter', code, context]])\n chunkedSplice(events, events.length, 0, [['exit', code, context]])\n return events\n}\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n return effects.attempt(indentedContentConstruct, afterPrefix, nok)\n\n function afterPrefix(code) {\n if (code === null) {\n return ok(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\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}\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n var self = this\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n\n function afterPrefix(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n }\n\n return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code)\n }\n}\n\nmodule.exports = codeIndented\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous: previous\n}\n\nfunction resolveCodeText(events) {\n var tailExitIndex = events.length - 4\n var headEnterIndex = 3\n var index\n var 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[tailExitIndex][1].type = events[headEnterIndex][1].type =\n '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\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\nfunction tokenizeCodeText(effects, ok, nok) {\n var sizeOpen = 0\n var size\n var token\n return start\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\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\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 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 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\nmodule.exports = codeText\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar subtokenize = require('../util/subtokenize.js')\n\n// No name because it must not be turned off.\nvar content = {\n tokenize: tokenizeContent,\n resolve: resolveContent,\n interruptible: true,\n lazy: true\n}\nvar continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\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\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\nfunction tokenizeContent(effects, ok) {\n var previous\n return start\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\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\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous = previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous: previous\n })\n return data\n }\n}\n\nfunction tokenizeContinuation(effects, ok, nok) {\n var self = this\n return startLookahead\n\n function startLookahead(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||\n prefixSize(self.events, 'linePrefix') < 4\n ) {\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = content\n","'use strict'\n\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\nvar titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n\nfunction tokenizeDefinition(effects, ok, nok) {\n var self = this\n var identifier\n return start\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\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\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (self.parser.defined.indexOf(identifier) < 0) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\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\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = definition\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar asciiControl = require('../character/ascii-control.js')\n\n// eslint-disable-next-line max-params\nfunction destinationFactory(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n var limit = max || Infinity\n var balance = 0\n return start\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 (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\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\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\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\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\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\nmodule.exports = destinationFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\n\n// eslint-disable-next-line max-params\nfunction labelFactory(effects, ok, nok, type, markerType, stringType) {\n var self = this\n var size = 0\n var data\n return start\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\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* c8 ignore next */\n (code === 94 &&\n /* c8 ignore next */\n !size &&\n /* c8 ignore next */\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\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\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\nmodule.exports = labelFactory\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\n\nfunction spaceFactory(effects, ok, type, max) {\n var limit = max ? max - 1 : Infinity\n var size = 0\n return start\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\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\nmodule.exports = spaceFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction titleFactory(effects, ok, nok, type, markerType, stringType) {\n var marker\n return start\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\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\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\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\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\nmodule.exports = titleFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction whitespaceFactory(effects, ok) {\n var seen\n return start\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\nmodule.exports = whitespaceFactory\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\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\nmodule.exports = hardBreakEscape\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\n\nvar headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\nfunction resolveHeadingAtx(events, context) {\n var contentEnd = events.length - 2\n var contentStart = 3\n var content\n var 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 contentType: 'text'\n }\n chunkedSplice(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\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n var self = this\n var size = 0\n return start\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\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\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\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\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\nmodule.exports = headingAtx\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar htmlBlockNames = require('../constant/html-block-names.js')\nvar htmlRawNames = require('../constant/html-raw-names.js')\n\nvar htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\nvar nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n\nfunction resolveToHtmlFlow(events) {\n var 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\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n var self = this\n var kind\n var startTag\n var buffer\n var index\n var marker\n return start\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\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 = fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\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\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\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\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\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.indexOf(buffer.toLowerCase()) > -1\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {\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\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 += fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\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\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\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\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\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\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 = undefined\n return completeAttributeValueUnquoted(code)\n }\n\n function completeAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\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\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\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\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\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return htmlContinueStart\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\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\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n return continuation(code)\n }\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\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\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(partialBlankLine, ok, nok)\n }\n}\n\nmodule.exports = htmlFlow\n","'use strict'\n\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar asciiAlpha = require('../character/ascii-alpha.js')\n\nvar htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n var self = this\n var marker\n var buffer\n var index\n var returnState\n return start\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\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\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\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\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\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\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\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\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\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\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\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\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\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\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\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\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\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\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\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\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\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\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\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\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 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.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n }\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\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\nmodule.exports = htmlText\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar shallow = require('../util/shallow.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\nvar resourceConstruct = {\n tokenize: tokenizeResource\n}\nvar fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\nvar collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n\nfunction resolveAllLabelEnd(events) {\n var index = -1\n var token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n !token._used &&\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\nfunction resolveToLabelEnd(events, context) {\n var index = events.length\n var offset = 0\n var group\n var label\n var text\n var token\n var open\n var close\n var 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 group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: shallow(events[open][1].start),\n end: shallow(events[events.length - 1][1].end)\n }\n label = {\n type: 'label',\n start: shallow(events[open][1].start),\n end: shallow(events[close][1].end)\n }\n text = {\n type: 'labelText',\n start: shallow(events[open + offset + 2][1].end),\n end: shallow(events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = chunkedPush(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = chunkedPush(media, [['enter', text, context]]) // Between.\n\n media = chunkedPush(\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 = chunkedPush(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 = chunkedPush(media, events.slice(close + 1)) // Media close.\n\n media = chunkedPush(media, [['exit', group, context]])\n chunkedSplice(events, open, events.length, media)\n return events\n}\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var labelStart\n var 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\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 =\n self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n ) > -1\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\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\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\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\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 3\n )(code)\n }\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\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\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\nfunction tokenizeFullReference(effects, ok, nok) {\n var self = this\n return start\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\n function afterLabel(code) {\n return self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n ) < 0\n ? nok(code)\n : ok(code)\n }\n}\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\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\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\nmodule.exports = labelEnd\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n var self = this\n return start\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\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\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartImage\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n var self = this\n return start\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\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartLink\n","'use strict'\n\nvar factorySpace = require('./factory-space.js')\n\nvar lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\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\nmodule.exports = lineEnding\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar sizeChunks = require('../util/size-chunks.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar thematicBreak = require('./thematic-break.js')\n\nvar list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\nvar listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\nvar indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\nfunction tokenizeListStart(effects, ok, nok) {\n var self = this\n var initialSize = prefixSize(self.events, 'linePrefix')\n var size = 0\n return start\n\n function start(code) {\n var 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\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 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 partialBlankLine, // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\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\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')))\n return ok(code)\n }\n}\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n var self = this\n self.containerState._closeFlow = undefined\n return effects.check(partialBlankLine, onBlank, notBlank)\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n return ok(code)\n }\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\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.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )(code)\n }\n}\n\nfunction tokenizeIndent(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n function afterPrefix(code) {\n return prefixSize(self.events, 'listItemIndent') ===\n self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4 + 1\n )\n\n function afterPrefix(code) {\n return markdownSpace(code) ||\n !prefixSize(self.events, 'listItemPrefixWhitespace')\n ? nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = list\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nvar partialBlankLine = {\n tokenize: tokenizePartialBlankLine,\n partial: true\n}\n\nfunction tokenizePartialBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = partialBlankLine\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar shallow = require('../util/shallow.js')\n\nvar setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\nfunction resolveToSetextUnderline(events, context) {\n var index = events.length\n var content\n var text\n var definition\n var heading // 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 heading = {\n type: 'setextHeading',\n start: shallow(events[text][1].start),\n end: shallow(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 = shallow(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\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var marker\n var 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\n function start(code) {\n if (!self.lazy && (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\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\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\nmodule.exports = setextUnderline\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n var size = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\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\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\nmodule.exports = thematicBreak\n","'use strict'\n\nvar chunkedSplice = require('./chunked-splice.js')\n\nfunction chunkedPush(list, items) {\n if (list.length) {\n chunkedSplice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n\nmodule.exports = chunkedPush\n","'use strict'\n\nvar splice = require('../constant/splice.js')\n\n// causes a stack overflow in V8 when trying to insert 100k items for instance.\n\nfunction chunkedSplice(list, start, remove, items) {\n var end = list.length\n var chunkStart = 0\n var 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)\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)\n splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\nmodule.exports = chunkedSplice\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar unicodePunctuation = require('../character/unicode-punctuation.js')\nvar unicodeWhitespace = require('../character/unicode-whitespace.js')\n\n// Classify whether a character is unicode whitespace, unicode punctuation, or\n// anything else.\n// Used for attention (emphasis, strong), whose sequences can open or close\n// based on the class of surrounding characters.\nfunction 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\nmodule.exports = classifyCharacter\n","'use strict'\n\nvar hasOwnProperty = require('../constant/has-own-property.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\n\nfunction combineExtensions(extensions) {\n var all = {}\n var index = -1\n\n while (++index < extensions.length) {\n extension(all, extensions[index])\n }\n\n return all\n}\n\nfunction extension(all, extension) {\n var hook\n var left\n var right\n var code\n\n for (hook in extension) {\n left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})\n right = extension[hook]\n\n for (code in right) {\n left[code] = constructs(\n miniflat(right[code]),\n hasOwnProperty.call(left, code) ? left[code] : []\n )\n }\n }\n}\n\nfunction constructs(list, existing) {\n var index = -1\n var before = []\n\n while (++index < list.length) {\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n chunkedSplice(existing, 0, 0, before)\n return existing\n}\n\nmodule.exports = combineExtensions\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar chunkedPush = require('./chunked-push.js')\nvar miniflat = require('./miniflat.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar shallow = require('./shallow.js')\nvar resolveAll = require('./resolve-all.js')\nvar serializeChunks = require('./serialize-chunks.js')\nvar sliceChunks = require('./slice-chunks.js')\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`.\nfunction createTokenizer(parser, initialize, from) {\n var point = from\n ? shallow(from)\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n var columnStart = {}\n var resolveAllConstructs = []\n var chunks = []\n var stack = []\n\n var effects = {\n consume: consume,\n enter: enter,\n exit: exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n }),\n lazy: constructFactory(onsuccessfulcheck, {\n lazy: true\n })\n } // State and tools for resolving and serializing.\n\n var context = {\n previous: null,\n events: [],\n parser: parser,\n sliceStream: sliceStream,\n sliceSerialize: sliceSerialize,\n now: now,\n defineSkip: skip,\n write: write\n } // The state function.\n\n var state = initialize.tokenize.call(context, effects) // Track which character we expect to be consumed, to catch bugs.\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n } // Store where we are in the input stream.\n\n point._index = 0\n point._bufferIndex = -1\n return context\n\n function write(slice) {\n chunks = chunkedPush(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 function sliceSerialize(token) {\n return serializeChunks(sliceStream(token))\n }\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n function now() {\n return shallow(point)\n }\n\n function skip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\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 function main() {\n var chunkIndex\n var chunk\n\n while (point._index < chunks.length) {\n 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 } // Deal with one code.\n\n function go(code) {\n state = state(code)\n } // Move a character forward.\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\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 } // Start a token.\n\n function enter(type, fields) {\n var 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 } // Stop a token.\n\n function exit(type) {\n var token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n } // Use results.\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n } // Discard results.\n\n function onsuccessfulcheck(construct, info) {\n info.restore()\n } // Factory to attempt/check/interrupt.\n\n function constructFactory(onreturn, fields) {\n return hook // Handle either an object mapping codes to constructs, a list of\n // constructs, or a single construct.\n\n function hook(constructs, returnState, bogusState) {\n var listOfConstructs\n var constructIndex\n var currentConstruct\n var info\n return constructs.tokenize || 'length' in constructs\n ? handleListOfConstructs(miniflat(constructs))\n : handleMapOfConstructs\n\n function handleMapOfConstructs(code) {\n if (code in constructs || null in constructs) {\n return handleListOfConstructs(\n constructs.null\n ? /* c8 ignore next */\n miniflat(constructs[code]).concat(miniflat(constructs.null))\n : constructs[code]\n )(code)\n }\n\n return bogusState(code)\n }\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n return handleConstruct(list[constructIndex])\n }\n\n function handleConstruct(construct) {\n return start\n\n function start(code) {\n // To do: not nede 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.indexOf(construct.name) > -1\n ) {\n return nok()\n }\n\n return construct.tokenize.call(\n fields ? assign({}, context, fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n function ok(code) {\n onreturn(currentConstruct, info)\n return returnState\n }\n\n function nok(code) {\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n\n function addResult(construct, from) {\n if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n chunkedSplice(\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 function store() {\n var startPoint = now()\n var startPrevious = context.previous\n var startCurrentConstruct = context.currentConstruct\n var startEventsIndex = context.events.length\n var startStack = Array.from(stack)\n return {\n restore: restore,\n from: startEventsIndex\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 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\nmodule.exports = createTokenizer\n","'use strict'\n\nfunction miniflat(value) {\n return value === null || value === undefined\n ? []\n : 'length' in value\n ? value\n : [value]\n}\n\nmodule.exports = miniflat\n","'use strict'\n\n// chunks (replacement characters, tabs, or line endings).\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n return point\n}\n\nmodule.exports = movePoint\n","'use strict'\n\nfunction 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 object method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n\nmodule.exports = normalizeIdentifier\n","'use strict'\n\nvar sizeChunks = require('./size-chunks.js')\n\nfunction prefixSize(events, type) {\n var tail = events[events.length - 1]\n if (!tail || tail[1].type !== type) return 0\n return sizeChunks(tail[2].sliceStream(tail[1]))\n}\n\nmodule.exports = prefixSize\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction regexCheck(regex) {\n return check\n\n function check(code) {\n return regex.test(fromCharCode(code))\n }\n}\n\nmodule.exports = regexCheck\n","'use strict'\n\nfunction resolveAll(constructs, events, context) {\n var called = []\n var index = -1\n var resolve\n\n while (++index < constructs.length) {\n resolve = constructs[index].resolveAll\n\n if (resolve && called.indexOf(resolve) < 0) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n\nmodule.exports = resolveAll\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction safeFromInt(value, base) {\n var code = 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 fromCharCode(code)\n}\n\nmodule.exports = safeFromInt\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction serializeChunks(chunks) {\n var index = -1\n var result = []\n var chunk\n var value\n var atTab\n\n while (++index < chunks.length) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n value = chunk\n } else if (chunk === -5) {\n value = '\\r'\n } else if (chunk === -4) {\n value = '\\n'\n } else if (chunk === -3) {\n value = '\\r' + '\\n'\n } else if (chunk === -2) {\n value = '\\t'\n } else if (chunk === -1) {\n if (atTab) continue\n value = ' '\n } else {\n // Currently only replacement character.\n value = fromCharCode(chunk)\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n\nmodule.exports = serializeChunks\n","'use strict'\n\nvar assign = require('../constant/assign.js')\n\nfunction shallow(object) {\n return assign({}, object)\n}\n\nmodule.exports = shallow\n","'use strict'\n\n// Counts tabs based on their expanded size, and CR+LF as one character.\n\nfunction sizeChunks(chunks) {\n var index = -1\n var size = 0\n\n while (++index < chunks.length) {\n size += typeof chunks[index] === 'string' ? chunks[index].length : 1\n }\n\n return size\n}\n\nmodule.exports = sizeChunks\n","'use strict'\n\nfunction sliceChunks(chunks, token) {\n var startIndex = token.start._index\n var startBufferIndex = token.start._bufferIndex\n var endIndex = token.end._index\n var endBufferIndex = token.end._bufferIndex\n var view\n\n if (startIndex === endIndex) {\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n\nmodule.exports = sliceChunks\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar shallow = require('./shallow.js')\n\nfunction subtokenize(events) {\n var jumps = {}\n var index = -1\n var event\n var lineIndex\n var otherIndex\n var otherEvent\n var parameters\n var subevents\n var 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 assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container || event[1]._movePreviousLineEndings) {\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 = shallow(events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n\nfunction subcontent(events, eventIndex) {\n var token = events[eventIndex][1]\n var context = events[eventIndex][2]\n var startPosition = eventIndex - 1\n var startPositions = []\n var tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n var childEvents = tokenizer.events\n var jumps = []\n var gaps = {}\n var stream\n var previous\n var index\n var entered\n var end\n var adjust // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (token) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== token) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!token._tokenizer) {\n stream = context.sliceStream(token)\n\n if (!token.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(token.start)\n }\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = token\n token = token.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n token = previous\n index = childEvents.length\n\n while (index--) {\n // Make sure we’ve at least seen something (final eol is part of the last\n // token).\n if (childEvents[index][0] === 'enter') {\n entered = true\n } else if (\n // Find a void token that includes a break.\n entered &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n add(childEvents.slice(index + 1, end))\n // Help GC.\n token._tokenizer = token.next = undefined\n token = token.previous\n end = index + 1\n }\n }\n\n // Help GC.\n tokenizer.events = token._tokenizer = token.next = undefined // Do head:\n\n add(childEvents.slice(0, end))\n index = -1\n adjust = 0\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 function add(slice) {\n var start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n chunkedSplice(events, start, 2, slice)\n }\n}\n\nmodule.exports = subtokenize\n","/*!\n * ol-geocoder - v4.3.1\n * A geocoder extension compatible with OpenLayers v6.x, v7.x & v8.x\n * https://github.com/Dominique92/ol-geocoder\n * Built: 15/09/2023 16:57:41\n */\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t(require(\"ol/control/Control\"),require(\"ol/style/Style\"),require(\"ol/style/Icon\"),require(\"ol/layer/Vector\"),require(\"ol/source/Vector\"),require(\"ol/geom/Point\"),require(\"ol/Feature\"),require(\"ol/proj\")):\"function\"==typeof define&&define.amd?define([\"ol/control/Control\",\"ol/style/Style\",\"ol/style/Icon\",\"ol/layer/Vector\",\"ol/source/Vector\",\"ol/geom/Point\",\"ol/Feature\",\"ol/proj\"],t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).Geocoder=t(e.ol.control.Control,e.ol.style.Style,e.ol.style.Icon,e.ol.layer.Vector,e.ol.source.Vector,e.ol.geom.Point,e.ol.Feature,e.ol.proj)}(this,(function(e,t,s,r,n,o,a,i){\"use strict\";function l(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}function c(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(s){if(\"default\"!==s){var r=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(t,s,r.get?r:{enumerable:!0,get:function(){return e[s]}})}})),t.default=e,Object.freeze(t)}var d=l(e),u=l(t),p=l(s),h=l(r),m=l(n),g=l(o),y=l(a),f=c(i),b=\"gcd-container\",v=\"gcd-button-control\",w=\"gcd-input-query\",x=\"gcd-input-label\",$=\"gcd-input-search\",k={namespace:\"ol-geocoder\",spin:\"gcd-pseudo-rotate\",hidden:\"gcd-hidden\",address:\"gcd-address\",country:\"gcd-country\",city:\"gcd-city\",road:\"gcd-road\",olControl:\"ol-control\",glass:{container:\"gcd-gl-container\",control:\"gcd-gl-control\",button:\"gcd-gl-btn\",input:\"gcd-gl-input\",expanded:\"gcd-gl-expanded\",search:\"gcd-gl-search\",result:\"gcd-gl-result\"},inputText:{container:\"gcd-txt-container\",control:\"gcd-txt-control\",label:\"gcd-txt-label\",input:\"gcd-txt-input\",search:\"gcd-txt-search\",icon:\"gcd-txt-glass\",result:\"gcd-txt-result\"}},S={containerId:b,buttonControlId:v,inputQueryId:w,inputLabelId:x,inputSearchId:$,cssClasses:k};const q=Object.freeze({__proto__:null,containerId:b,buttonControlId:v,inputQueryId:w,inputLabelId:x,inputSearchId:$,cssClasses:k,default:S}),L=\"addresschosen\",C=\"nominatim\",j=\"reverse\",E=\"glass-button\",T=\"text-input\",I=\"osm\",N=\"mapquest\",P=\"photon\",A=\"bing\",R=\"opencage\",F={provider:I,label:\"\",placeholder:\"Search for an address\",featureStyle:null,targetType:E,lang:\"en-US\",limit:5,keepOpen:!1,preventDefault:!1,preventPanning:!1,preventMarker:!1,defaultFlyResolution:10,debug:!1};function _(e,t=\"Assertion failed\"){if(!e){if(\"undefined\"!=typeof Error)throw new Error(t);throw t}}function M(e){const t=function(){if(\"performance\"in window==0&&(window.performance={}),\"now\"in window.performance==0){let e=Date.now();performance.timing&&performance.timing.navigationStart&&(e=performance.timing.navigationStart),window.performance.now=()=>Date.now()-e}return window.performance.now()}().toString(36);return e?e+t:t}function O(e){return/^\\d+$/u.test(e)}function D(e,t,s){if(Array.isArray(e))return void e.forEach((e=>D(e,t)));const r=Array.isArray(t)?t:t.split(/\\s+/u);let n=r.length;for(;n--;)Q(e,r[n])||z(e,r[n],s)}function V(e,t,s){if(Array.isArray(e))return void e.forEach((e=>V(e,t,s)));const r=Array.isArray(t)?t:t.split(/\\s+/u);let n=r.length;for(;n--;)Q(e,r[n])&&H(e,r[n],s)}function Q(e,t){return e.classList?e.classList.contains(t):G(t).test(e.className)}function B(e,t){return e.replace(/\\{\\s*([\\w-]+)\\s*\\}/gu,((e,s)=>{const r=void 0===t[s]?\"\":t[s];return String(r).replaceAll(\"&\",\"&\").replaceAll(\"<\",\"<\").replaceAll(\">\",\">\").replaceAll('\"',\""\").replaceAll(\"'\",\"'\")}))}function U(e,t){let s;if(Array.isArray(e)){if(s=document.createElement(e[0]),e[1].id&&(s.id=e[1].id),e[1].classname&&(s.className=e[1].classname),e[1].attr){const{attr:t}=e[1];if(Array.isArray(t)){let e=-1;for(;++eH(e,t)),s)}function H(e,t,s){e.classList?e.classList.remove(t):e.className=e.className.replace(G(t),\" \").trim(),s&&O(s)&&window.setTimeout((()=>z(e,t)),s)}const K=q.cssClasses;class J{constructor(e){this.options=e,this.els=this.createControl()}createControl(){let e,t,s;return this.options.targetType===T?(t=`${K.namespace} ${K.inputText.container}`,e=U([\"div\",{id:q.containerId,classname:t}],J.input),s={container:e,control:e.querySelector(`.${K.inputText.control}`),label:e.querySelector(`.${K.inputText.label}`),input:e.querySelector(`.${K.inputText.input}`),search:e.querySelector(`.${K.inputText.search}`),result:e.querySelector(`.${K.inputText.result}`)},s.label.innerHTML=this.options.label):(t=`${K.namespace} ${K.glass.container}`,e=U([\"div\",{id:q.containerId,classname:t}],J.glass),s={container:e,control:e.querySelector(`.${K.glass.control}`),button:e.querySelector(`.${K.glass.button}`),input:e.querySelector(`.${K.glass.input}`),search:e.querySelector(`.${K.glass.search}`),result:e.querySelector(`.${K.glass.result}`)}),s.input.placeholder=this.options.placeholder,s}}function W(e){return new Promise(((t,s)=>{const r=function(e,t){t&&\"object\"==typeof t&&(e+=(/\\?/u.test(e)?\"&\":\"?\")+X(t));return e}(e.url,e.data),n={method:\"GET\",mode:\"cors\",credentials:\"same-origin\"};e.jsonp?function(e,t,s){const{head:r}=document,n=document.createElement(\"script\"),o=`f${Math.round(Math.random()*Date.now())}`;n.setAttribute(\"src\",`${e+(e.indexOf(\"?\")>0?\"&\":\"?\")+t}=${o}`),window[o]=e=>{window[o]=void 0,setTimeout((()=>r.removeChild(n)),0),s(e)},r.append(n)}(r,e.callbackName,t):fetch(r,n).then((e=>e.json())).then(t).catch(s)}))}function X(e){return Object.keys(e).reduce(((t,s)=>(t.push(\"object\"==typeof e[s]?X(e[s]):`${encodeURIComponent(s)}=${encodeURIComponent(e[s])}`),t)),[]).join(\"&\")}J.glass=`\\n
\\n \\n \\n \\n
\\n
    \\n`,J.input=`\\n
    \\n \\n \\n \\n \\n
    \\n
      \\n`;class Y{constructor(){this.settings={url:\"https://photon.komoot.io/api/\",params:{q:\"\",limit:10,lang:\"en\"},langs:[\"de\",\"it\",\"fr\",\"en\"]}}getParameters(e){return e.lang=e.lang.toLowerCase(),{url:this.settings.url,params:{q:e.query,limit:e.limit||this.settings.params.limit,lang:this.settings.langs.includes(e.lang)?e.lang:this.settings.params.lang}}}handleResponse(e){return 0===e.features.length?[]:e.features.map((e=>({lon:e.geometry.coordinates[0],lat:e.geometry.coordinates[1],address:{name:e.properties.name,postcode:e.properties.postcode,city:e.properties.city,state:e.properties.state,country:e.properties.country},original:{formatted:e.properties.name,details:e.properties}})))}}class Z{constructor(e){this.settings={url:\"https://nominatim.openstreetmap.org/search\",...e,params:{q:\"\",format:\"json\",addressdetails:1,limit:10,countrycodes:\"\",viewbox:\"\",\"accept-language\":\"en-US\"}}}getParameters(e){return{url:this.settings.url,params:{q:e.query,format:this.settings.params.format,addressdetails:this.settings.params.addressdetails,limit:e.limit||this.settings.params.limit,countrycodes:e.countrycodes||this.settings.params.countrycodes,viewbox:e.viewbox||this.settings.params.viewbox,\"accept-language\":e.lang||this.settings.params[\"accept-language\"]}}}handleResponse(e){return 0===e.length?[]:e.map((e=>({lon:e.lon,lat:e.lat,bbox:e.boundingbox,address:{name:e.display_name,road:e.address.road||\"\",houseNumber:e.address.house_number||\"\",postcode:e.address.postcode,city:e.address.city||e.address.town,state:e.address.state,country:e.address.country},original:{formatted:e.display_name,details:e.address}})))}}class ee{constructor(){this.settings={url:\"https://open.mapquestapi.com/nominatim/v1/search.php\",params:{q:\"\",key:\"\",format:\"json\",addressdetails:1,limit:10,countrycodes:\"\",\"accept-language\":\"en-US\"}}}getParameters(e){return{url:this.settings.url,params:{q:e.query,key:e.key,format:\"json\",addressdetails:1,limit:e.limit||this.settings.params.limit,countrycodes:e.countrycodes||this.settings.params.countrycodes,\"accept-language\":e.lang||this.settings.params[\"accept-language\"]}}}handleResponse(e){return 0===e.length?[]:e.map((e=>({lon:e.lon,lat:e.lat,address:{name:e.address.neighbourhood||\"\",road:e.address.road||\"\",postcode:e.address.postcode,city:e.address.city||e.address.town,state:e.address.state,country:e.address.country},original:{formatted:e.display_name,details:e.address}})))}}class te{constructor(){this.settings={url:\"https://dev.virtualearth.net/REST/v1/Locations\",callbackName:\"jsonp\",params:{query:\"\",key:\"\",includeNeighborhood:0,maxResults:10}}}getParameters(e){return{url:this.settings.url,callbackName:this.settings.callbackName,params:{query:e.query,key:e.key,includeNeighborhood:e.includeNeighborhood||this.settings.params.includeNeighborhood,maxResults:e.maxResults||this.settings.params.maxResults}}}handleResponse(e){const{resources:t}=e.resourceSets[0];return 0===t.length?[]:t.map((e=>({lon:e.point.coordinates[1],lat:e.point.coordinates[0],address:{name:e.name},original:{formatted:e.address.formattedAddress,details:e.address}})))}}class se{constructor(){this.settings={url:\"https://api.opencagedata.com/geocode/v1/json?\",params:{q:\"\",key:\"\",limit:10,countrycode:\"\",pretty:1,no_annotations:1}}}getParameters(e){return{url:this.settings.url,params:{q:e.query,key:e.key,limit:e.limit||this.settings.params.limit,countrycode:e.countrycodes||this.settings.params.countrycodes}}}handleResponse(e){return 0===e.results.length?[]:e.results.map((e=>({lon:e.geometry.lng,lat:e.geometry.lat,address:{name:e.components.house_number||\"\",road:e.components.road||\"\",postcode:e.components.postcode,city:e.components.city||e.components.town,state:e.components.state,country:e.components.country},original:{formatted:e.formatted,details:e.components}})))}}const re=q.cssClasses;class ne{constructor(e,t){this.Base=e,this.layerName=M(\"geocoder-layer-\"),this.layer=new h.default({name:this.layerName,source:new m.default,displayInLayerSwitcher:!1}),this.options=e.options,this.options.provider=\"string\"==typeof this.options.provider?this.options.provider.toLowerCase():this.options.provider,this.provider=this.newProvider(),this.els=t,this.lastQuery=\"\",this.container=this.els.container,this.registeredListeners={mapClick:!1},this.setListeners()}setListeners(){const e=e=>{e.stopPropagation(),Q(this.els.control,re.glass.expanded)?this.collapse():this.expand()};this.els.input.addEventListener(\"keypress\",(e=>{const t=e.target.value.trim();(e.key?\"Enter\"===e.key:e.which?13===e.which:!!e.keyCode&&13===e.keyCode)&&(e.preventDefault(),this.query(t))}),!1),this.els.input.addEventListener(\"click\",(e=>e.stopPropagation()),!1),this.els.input.addEventListener(\"input\",(e=>{0!==e.target.value.trim().length?V(this.els.search,re.hidden):D(this.els.search,re.hidden)}),!1),this.els.search.addEventListener(\"click\",(()=>{this.els.input.focus(),this.query(this.els.input.value)}),!1),this.options.targetType===E&&this.els.button.addEventListener(\"click\",e,!1)}query(e){this.provider||(this.provider=this.newProvider());const t=this.provider.getParameters({query:e,key:this.options.key,lang:this.options.lang,countrycodes:this.options.countrycodes,viewbox:this.options.viewbox,limit:this.options.limit});if(this.lastQuery===e&&this.els.result.firstChild)return;this.lastQuery=e,this.clearResults(),D(this.els.search,re.spin);const s={url:t.url,data:t.params};t.callbackName&&(s.jsonp=!0,s.callbackName=t.callbackName),W(s).then((e=>{this.options.debug&&console.info(e),V(this.els.search,re.spin);const t=this.provider.handleResponse(e);t&&(this.createList(t),this.listenMapClick())})).catch((()=>{V(this.els.search,re.spin);const e=U(\"li\",\"
      Error! No internet connection?
      \");this.els.result.append(e)}))}createList(e){const t=this.els.result;e.forEach((s=>{let r;if(this.options.provider===I)r=`${s.address.name}`;else r=this.addressTemplate(s.address);if(1==e.length)this.chosen(s,r,s.address,s.original);else{const e=U(\"li\",`${r}`);e.addEventListener(\"click\",(e=>{e.preventDefault(),this.chosen(s,r,s.address,s.original)}),!1),t.append(e)}}))}chosen(e,t,s,r){const n=this.Base.getMap(),o=[Number.parseFloat(e.lon),Number.parseFloat(e.lat)],a=n.getView().getProjection(),i=f.transform(o,\"EPSG:4326\",a);let{bbox:l}=e;l&&(l=f.transformExtent([parseFloat(l[2]),parseFloat(l[0]),parseFloat(l[3]),parseFloat(l[1])],\"EPSG:4326\",a));const c={formatted:t,details:s,original:r};if(!1===this.options.keepOpen&&this.clearResults(!0),!0===this.options.preventDefault||!0===this.options.preventMarker)this.Base.dispatchEvent({type:L,address:c,coordinate:i,bbox:l,place:e});else{const t=this.createFeature(i,c);this.Base.dispatchEvent({type:L,address:c,feature:t,coordinate:i,bbox:l,place:e})}!0!==this.options.preventDefault&&!0!==this.options.preventPanning&&(l?n.getView().fit(l,{duration:500}):n.getView().animate({center:i,resolution:this.options.defaultFlyResolution,duration:500}))}createFeature(e){const t=new y.default(new g.default(e));return this.addLayer(),t.setStyle(this.options.featureStyle),t.setId(M(\"geocoder-ft-\")),this.getSource().addFeature(t),t}addressTemplate(e){const t=[];return e.name&&t.push(['{name}'].join(\"\")),(e.road||e.building||e.house_number)&&t.push(['{building} {road} {house_number}'].join(\"\")),(e.city||e.town||e.village)&&t.push(['{postcode} {city} {town} {village}'].join(\"\")),(e.state||e.country)&&t.push(['{state} {country}'].join(\"\")),B(t.join(\"
      \"),e)}newProvider(){switch(this.options.provider){case I:return new Z(this.options);case N:return new ee;case P:return new Y;case A:return new te;case R:return new se;default:return this.options.provider}}expand(){V(this.els.input,re.spin),D(this.els.control,re.glass.expanded),window.setTimeout((()=>this.els.input.focus()),100),this.listenMapClick()}collapse(){this.els.input.value=\"\",this.els.input.blur(),D(this.els.search,re.hidden),V(this.els.control,re.glass.expanded),this.clearResults()}listenMapClick(){if(this.registeredListeners.mapClick)return;const e=this,t=this.Base.getMap().getTargetElement();this.registeredListeners.mapClick=!0,t.addEventListener(\"click\",{handleEvent(s){e.clearResults(!0),t.removeEventListener(s.type,this,!1),e.registeredListeners.mapClick=!1}},!1)}clearResults(e){e&&this.options.targetType===E?this.collapse():function(e){for(;e.firstChild;)e.firstChild.remove()}(this.els.result)}getSource(){return this.layer.getSource()}addLayer(){let e=!1;const t=this.Base.getMap();t.getLayers().forEach((t=>{t===this.layer&&(e=!0)})),e||t.addLayer(this.layer)}}class oe extends d.default{constructor(e=C,t){_(\"string\"==typeof e,\"@param `type` should be string!\"),_(e===C||e===j,`@param 'type' should be '${C}'\\n or '${j}'!`);const s={...F,featureStyle:[new u.default({image:new p.default({scale:.7,src:\"//cdn.rawgit.com/jonataswalker/map-utils/master/images/marker.png\"})})],...t};let r,n;const o=new J(s);if(e===C&&(r=o.els.container),super({element:r,...s}),!(this instanceof oe))return new oe;this.options=s,this.container=r,e===C&&(n=new ne(this,o.els),this.layer=n.layer)}getLayer(){return this.layer}getSource(){return this.getLayer().getSource()}setProvider(e){this.options.provider=e}setProviderKey(e){this.options.key=e}}return oe}));\n//# sourceMappingURL=ol-geocoder.js.map\n","'use strict'\n\n/* eslint-env browser */\n\nvar el\n\nvar semicolon = 59 // ';'\n\nmodule.exports = decodeEntity\n\nfunction decodeEntity(characters) {\n var entity = '&' + characters + ';'\n var char\n\n el = el || document.createElement('i')\n el.innerHTML = entity\n char = el.textContent\n\n // Some entities do not require the closing semicolon (`¬` - for instance),\n // which leads to situations where parsing the assumed entity of ¬it; will\n // result in the string `¬it;`. When we encounter a trailing semicolon after\n // parsing and the entity to decode was not a semicolon (`;`), we can\n // assume that the matching was incomplete\n if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {\n return false\n }\n\n // If the decoded string is equal to the input, the entity was not valid\n return char === entity ? false : char\n}\n","module.exports = function pctEncode(regexp) {\n regexp = regexp || /\\W/g;\n return function encode(string) {\n string = String(string);\n return string.replace(regexp, function (m) {\n var c = m[0].charCodeAt(0)\n , encoded = [];\n if (c < 128) {\n encoded.push(c);\n } else if ((128 <= c && c < 2048)) {\n encoded.push((c >> 6) | 192);\n encoded.push((c & 63) | 128);\n } else {\n encoded.push((c >> 12) | 224);\n encoded.push(((c >> 6) & 63) | 128);\n encoded.push((c & 63) | 128);\n }\n return encoded.map(function (c) {\n return '%' + c.toString(16).toUpperCase();\n }).join('');\n })\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return ti?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var 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 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) || 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};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nexports.__esModule = true;\nvar React = require(\"react\");\nvar PropTypes = require(\"prop-types\");\nvar autosize = require(\"autosize\");\nvar _getLineHeight = require(\"line-height\");\nvar getLineHeight = _getLineHeight;\nvar RESIZED = \"autosize:resized\";\n/**\n * A light replacement for built-in textarea component\n * which automaticaly adjusts its height to match the content\n */\nvar TextareaAutosizeClass = /** @class */ (function (_super) {\n __extends(TextareaAutosizeClass, _super);\n function TextareaAutosizeClass() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n lineHeight: null\n };\n _this.textarea = null;\n _this.onResize = function (e) {\n if (_this.props.onResize) {\n _this.props.onResize(e);\n }\n };\n _this.updateLineHeight = function () {\n if (_this.textarea) {\n _this.setState({\n lineHeight: getLineHeight(_this.textarea)\n });\n }\n };\n _this.onChange = function (e) {\n var onChange = _this.props.onChange;\n _this.currentValue = e.currentTarget.value;\n onChange && onChange(e);\n };\n return _this;\n }\n TextareaAutosizeClass.prototype.componentDidMount = function () {\n var _this = this;\n var _a = this.props, maxRows = _a.maxRows, async = _a.async;\n if (typeof maxRows === \"number\") {\n this.updateLineHeight();\n }\n if (typeof maxRows === \"number\" || async) {\n /*\n the defer is needed to:\n - force \"autosize\" to activate the scrollbar when this.props.maxRows is passed\n - support StyledComponents (see #71)\n */\n setTimeout(function () { return _this.textarea && autosize(_this.textarea); });\n }\n else {\n this.textarea && autosize(this.textarea);\n }\n if (this.textarea) {\n this.textarea.addEventListener(RESIZED, this.onResize);\n }\n };\n TextareaAutosizeClass.prototype.componentWillUnmount = function () {\n if (this.textarea) {\n this.textarea.removeEventListener(RESIZED, this.onResize);\n autosize.destroy(this.textarea);\n }\n };\n TextareaAutosizeClass.prototype.render = function () {\n var _this = this;\n var _a = this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, children = _b.children, props = __rest(_b, [\"onResize\", \"maxRows\", \"onChange\", \"style\", \"innerRef\", \"children\"]), lineHeight = _a.state.lineHeight;\n var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null;\n return (React.createElement(\"textarea\", __assign({}, props, { onChange: this.onChange, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, ref: function (element) {\n _this.textarea = element;\n if (typeof _this.props.innerRef === 'function') {\n _this.props.innerRef(element);\n }\n else if (_this.props.innerRef) {\n _this.props.innerRef.current = element;\n }\n } }), children));\n };\n TextareaAutosizeClass.prototype.componentDidUpdate = function () {\n this.textarea && autosize.update(this.textarea);\n };\n TextareaAutosizeClass.defaultProps = {\n rows: 1,\n async: false\n };\n TextareaAutosizeClass.propTypes = {\n rows: PropTypes.number,\n maxRows: PropTypes.number,\n onResize: PropTypes.func,\n innerRef: PropTypes.any,\n async: PropTypes.bool\n };\n return TextareaAutosizeClass;\n}(React.Component));\nexports.TextareaAutosize = React.forwardRef(function (props, ref) {\n return React.createElement(TextareaAutosizeClass, __assign({}, props, { innerRef: ref }));\n});\n","\"use strict\";\nexports.__esModule = true;\nvar TextareaAutosize_1 = require(\"./TextareaAutosize\");\nexports[\"default\"] = TextareaAutosize_1.TextareaAutosize;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\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\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export var COMMON_MIME_TYPES = new Map([\n ['avi', 'video/avi'],\n ['gif', 'image/gif'],\n ['ico', 'image/x-icon'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['mp4', 'video/mp4'],\n ['pdf', 'application/pdf'],\n ['png', 'image/png'],\n ['zip', 'application/zip'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n if (typeof f.path !== 'string') { // on electron, path is already set to the absolute path\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import { __awaiter, __generator, __read, __spread } from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n // Thumbnail cache files for macOS and Windows\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n * @param evt\n */\nexport function fromEvent(evt) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, isDragEvt(evt) && evt.dataTransfer\n ? getDataTransferFiles(evt.dataTransfer, evt.type)\n : getInputFiles(evt)];\n });\n });\n}\nfunction isDragEvt(value) {\n return !!value.dataTransfer;\n}\nfunction getInputFiles(evt) {\n var files = isInput(evt.target)\n ? evt.target.files\n ? fromList(evt.target.files)\n : []\n : [];\n return files.map(function (file) { return toFileWithPath(file); });\n}\nfunction isInput(value) {\n return value !== null;\n}\nfunction getDataTransferFiles(dt, type) {\n return __awaiter(this, void 0, void 0, function () {\n var items, files;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!dt.items) return [3 /*break*/, 2];\n items = fromList(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n // According to https://html.spec.whatwg.org/multipage/dnd.html#dndevents,\n // only 'dragstart' and 'drop' has access to the data (source node)\n if (type !== 'drop') {\n return [2 /*return*/, items];\n }\n return [4 /*yield*/, Promise.all(items.map(toFilePromises))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, noIgnoredFiles(flatten(files))];\n case 2: return [2 /*return*/, noIgnoredFiles(fromList(dt.files)\n .map(function (file) { return toFileWithPath(file); }))];\n }\n });\n });\n}\nfunction noIgnoredFiles(files) {\n return files.filter(function (file) { return FILES_TO_IGNORE.indexOf(file.name) === -1; });\n}\n// IE11 does not support Array.from()\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from#Browser_compatibility\n// https://developer.mozilla.org/en-US/docs/Web/API/FileList\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList\nfunction fromList(items) {\n var files = [];\n // tslint:disable: prefer-for-of\n for (var i = 0; i < items.length; i++) {\n var file = items[i];\n files.push(file);\n }\n return files;\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return __spread(acc, (Array.isArray(files) ? flatten(files) : [files])); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(item + \" is not a File\");\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return __awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport accepts from 'attr-accept'; // Error codes\n\nexport var FILE_INVALID_TYPE = 'file-invalid-type';\nexport var FILE_TOO_LARGE = 'file-too-large';\nexport var FILE_TOO_SMALL = 'file-too-small';\nexport var TOO_MANY_FILES = 'too-many-files';\nexport var ErrorCode = {\n FileInvalidType: FILE_INVALID_TYPE,\n FileTooLarge: FILE_TOO_LARGE,\n FileTooSmall: FILE_TOO_SMALL,\n TooManyFiles: TOO_MANY_FILES\n}; // File Errors\n\nexport var getInvalidTypeRejectionErr = function getInvalidTypeRejectionErr(accept) {\n accept = Array.isArray(accept) && accept.length === 1 ? accept[0] : accept;\n var messageSuffix = Array.isArray(accept) ? \"one of \".concat(accept.join(', ')) : accept;\n return {\n code: FILE_INVALID_TYPE,\n message: \"File type must be \".concat(messageSuffix)\n };\n};\nexport var getTooLargeRejectionErr = function getTooLargeRejectionErr(maxSize) {\n return {\n code: FILE_TOO_LARGE,\n message: \"File is larger than \".concat(maxSize, \" bytes\")\n };\n};\nexport var getTooSmallRejectionErr = function getTooSmallRejectionErr(minSize) {\n return {\n code: FILE_TOO_SMALL,\n message: \"File is smaller than \".concat(minSize, \" bytes\")\n };\n};\nexport var TOO_MANY_FILES_REJECTION = {\n code: TOO_MANY_FILES,\n message: 'Too many files'\n}; // Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\n\nexport function fileAccepted(file, accept) {\n var isAcceptable = file.type === 'application/x-moz-file' || accepts(file, accept);\n return [isAcceptable, isAcceptable ? null : getInvalidTypeRejectionErr(accept)];\n}\nexport function fileMatchSize(file, minSize, maxSize) {\n if (isDefined(file.size)) {\n if (isDefined(minSize) && isDefined(maxSize)) {\n if (file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n if (file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];\n } else if (isDefined(minSize) && file.size < minSize) return [false, getTooSmallRejectionErr(minSize)];else if (isDefined(maxSize) && file.size > maxSize) return [false, getTooLargeRejectionErr(maxSize)];\n }\n\n return [true, null];\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nexport function allFilesAccepted(_ref) {\n var files = _ref.files,\n accept = _ref.accept,\n minSize = _ref.minSize,\n maxSize = _ref.maxSize,\n multiple = _ref.multiple,\n maxFiles = _ref.maxFiles;\n\n if (!multiple && files.length > 1 || multiple && maxFiles >= 1 && files.length > maxFiles) {\n return false;\n }\n\n return files.every(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 1),\n accepted = _fileAccepted2[0];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 1),\n sizeMatch = _fileMatchSize2[0];\n\n return accepted && sizeMatch;\n });\n} // React's synthetic events has event.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check event.cancelBubble\n\nexport function isPropagationStopped(event) {\n if (typeof event.isPropagationStopped === 'function') {\n return event.isPropagationStopped();\n } else if (typeof event.cancelBubble !== 'undefined') {\n return event.cancelBubble;\n }\n\n return false;\n}\nexport function isEvtWithFiles(event) {\n if (!event.dataTransfer) {\n return !!event.target && !!event.target.files;\n } // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n\n\n return Array.prototype.some.call(event.dataTransfer.types, function (type) {\n return type === 'Files' || type === 'application/x-moz-file';\n });\n}\nexport function isKindFile(item) {\n return _typeof(item) === 'object' && item !== null && item.kind === 'file';\n} // allow the entire document to be a drag target\n\nexport function onDocumentDragOver(event) {\n event.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf('MSIE') !== -1 || userAgent.indexOf('Trident/') !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf('Edge/') !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n return isIe(userAgent) || isEdge(userAgent);\n}\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.isPropagationStopped()`.\n * Note that the check is done on the first invoke too,\n * meaning that if propagation was stopped before invoking the fns,\n * no handlers will be executed.\n *\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\n\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\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\n return fns.some(function (fn) {\n if (!isPropagationStopped(event) && fn) {\n fn.apply(void 0, [event].concat(args));\n }\n\n return isPropagationStopped(event);\n });\n };\n}","var _excluded = [\"children\"],\n _excluded2 = [\"open\"],\n _excluded3 = [\"refKey\", \"onKeyDown\", \"onFocus\", \"onBlur\", \"onClick\", \"onDragEnter\", \"onDragOver\", \"onDragLeave\", \"onDrop\"],\n _excluded4 = [\"refKey\", \"onChange\", \"onClick\"];\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\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); }\n\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\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* eslint prefer-template: 0 */\nimport React, { forwardRef, Fragment, useCallback, useEffect, useImperativeHandle, useMemo, useReducer, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { fromEvent } from 'file-selector';\nimport { allFilesAccepted, composeEventHandlers, fileAccepted, fileMatchSize, isEvtWithFiles, isIeOrEdge, isPropagationStopped, onDocumentDragOver, TOO_MANY_FILES_REJECTION } from './utils/index';\n/**\n * Convenience wrapper component for the `useDropzone` hook\n *\n * ```jsx\n * \n * {({getRootProps, getInputProps}) => (\n *
      \n * \n *

      Drag 'n' drop some files here, or click to select files

      \n *
      \n * )}\n *
      \n * ```\n */\n\nvar Dropzone = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var children = _ref.children,\n params = _objectWithoutProperties(_ref, _excluded);\n\n var _useDropzone = useDropzone(params),\n open = _useDropzone.open,\n props = _objectWithoutProperties(_useDropzone, _excluded2);\n\n useImperativeHandle(ref, function () {\n return {\n open: open\n };\n }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element\n\n return /*#__PURE__*/React.createElement(Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {\n open: open\n })));\n});\nDropzone.displayName = 'Dropzone'; // Add default props for react-docgen\n\nvar defaultProps = {\n disabled: false,\n getFilesFromEvent: fromEvent,\n maxSize: Infinity,\n minSize: 0,\n multiple: true,\n maxFiles: 0,\n preventDropOnDocument: true,\n noClick: false,\n noKeyboard: false,\n noDrag: false,\n noDragEventsBubbling: false,\n validator: null\n};\nDropzone.defaultProps = defaultProps;\nDropzone.propTypes = {\n /**\n * Render function that exposes the dropzone state and prop getter fns\n *\n * @param {object} params\n * @param {Function} params.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} params.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} params.open Open the native file selection dialog\n * @param {boolean} params.isFocused Dropzone area is in focus\n * @param {boolean} params.isFileDialogActive File dialog is opened\n * @param {boolean} params.isDragActive Active drag is in progress\n * @param {boolean} params.isDragAccept Dragged files are accepted\n * @param {boolean} params.isDragReject Some dragged files are rejected\n * @param {File[]} params.draggedFiles Files in active drag\n * @param {File[]} params.acceptedFiles Accepted files\n * @param {FileRejection[]} params.fileRejections Rejected files and why they were rejected\n */\n children: PropTypes.func,\n\n /**\n * Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /**\n * Allow drag 'n' drop (or selection from the file dialog) of multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * If true, disables click to open the native file selection dialog\n */\n noClick: PropTypes.bool,\n\n /**\n * If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n */\n noKeyboard: PropTypes.bool,\n\n /**\n * If true, disables drag 'n' drop\n */\n noDrag: PropTypes.bool,\n\n /**\n * If true, stops drag event propagation to parents\n */\n noDragEventsBubbling: PropTypes.bool,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Maximum accepted number of files\n * The default value is 0 which means there is no limitation to how many files are accepted.\n */\n maxFiles: PropTypes.number,\n\n /**\n * Enable/disable the dropzone\n */\n disabled: PropTypes.bool,\n\n /**\n * Use this to provide a custom file aggregator\n *\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n getFilesFromEvent: PropTypes.func,\n\n /**\n * Cb for when closing the file dialog with no selection\n */\n onFileDialogCancel: PropTypes.func,\n\n /**\n * Cb for when the `dragenter` event occurs.\n *\n * @param {DragEvent} event\n */\n onDragEnter: PropTypes.func,\n\n /**\n * Cb for when the `dragleave` event occurs\n *\n * @param {DragEvent} event\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Cb for when the `dragover` event occurs\n *\n * @param {DragEvent} event\n */\n onDragOver: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n *\n * @param {File[]} acceptedFiles\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n onDrop: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are accepted, this callback is not invoked.\n *\n * @param {File[]} files\n * @param {(DragEvent|Event)} event\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * Cb for when the `drop` event occurs.\n * Note that if no files are rejected, this callback is not invoked.\n *\n * @param {FileRejection[]} fileRejections\n * @param {(DragEvent|Event)} event\n */\n onDropRejected: PropTypes.func,\n\n /**\n * Custom validation function \n * @param {File} file\n * @returns {FileError|FileError[]}\n */\n validator: PropTypes.func\n};\nexport default Dropzone;\n/**\n * A function that is invoked for the `dragenter`,\n * `dragover` and `dragleave` events.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dragCb\n * @param {DragEvent} event\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are not files (such as link, text, etc.).\n *\n * @callback dropCb\n * @param {File[]} acceptedFiles List of accepted files\n * @param {FileRejection[]} fileRejections List of rejected files and why they were rejected\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n * It is not invoked if the items are files (such as link, text, etc.).\n *\n * @callback dropAcceptedCb\n * @param {File[]} files List of accepted files that meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is invoked for the `drop` or input change event.\n *\n * @callback dropRejectedCb\n * @param {File[]} files List of rejected files that do not meet the given criteria\n * (`accept`, `multiple`, `minSize`, `maxSize`)\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n */\n\n/**\n * A function that is used aggregate files,\n * in a asynchronous fashion, from drag or input change events.\n *\n * @callback getFilesFromEvent\n * @param {(DragEvent|Event)} event A drag event or input change event (if files were selected via the file dialog)\n * @returns {(File[]|Promise)}\n */\n\n/**\n * An object with the current dropzone state and some helper functions.\n *\n * @typedef {object} DropzoneState\n * @property {Function} getRootProps Returns the props you should apply to the root drop container you render\n * @property {Function} getInputProps Returns the props you should apply to hidden file input you render\n * @property {Function} open Open the native file selection dialog\n * @property {boolean} isFocused Dropzone area is in focus\n * @property {boolean} isFileDialogActive File dialog is opened\n * @property {boolean} isDragActive Active drag is in progress\n * @property {boolean} isDragAccept Dragged files are accepted\n * @property {boolean} isDragReject Some dragged files are rejected\n * @property {File[]} draggedFiles Files in active drag\n * @property {File[]} acceptedFiles Accepted files\n * @property {FileRejection[]} fileRejections Rejected files and why they were rejected\n */\n\nvar initialState = {\n isFocused: false,\n isFileDialogActive: false,\n isDragActive: false,\n isDragAccept: false,\n isDragReject: false,\n draggedFiles: [],\n acceptedFiles: [],\n fileRejections: []\n};\n/**\n * A React hook that creates a drag 'n' drop area.\n *\n * ```jsx\n * function MyDropzone(props) {\n * const {getRootProps, getInputProps} = useDropzone({\n * onDrop: acceptedFiles => {\n * // do something with the File objects, e.g. upload to some server\n * }\n * });\n * return (\n *
      \n * \n *

      Drag and drop some files here, or click to select files

      \n *
      \n * )\n * }\n * ```\n *\n * @function useDropzone\n *\n * @param {object} props\n * @param {string|string[]} [props.accept] Set accepted file types.\n * See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n * @param {boolean} [props.multiple=true] Allow drag 'n' drop (or selection from the file dialog) of multiple files\n * @param {boolean} [props.preventDropOnDocument=true] If false, allow dropped items to take over the current browser window\n * @param {boolean} [props.noClick=false] If true, disables click to open the native file selection dialog\n * @param {boolean} [props.noKeyboard=false] If true, disables SPACE/ENTER to open the native file selection dialog.\n * Note that it also stops tracking the focus state.\n * @param {boolean} [props.noDrag=false] If true, disables drag 'n' drop\n * @param {boolean} [props.noDragEventsBubbling=false] If true, stops drag event propagation to parents\n * @param {number} [props.minSize=0] Minimum file size (in bytes)\n * @param {number} [props.maxSize=Infinity] Maximum file size (in bytes)\n * @param {boolean} [props.disabled=false] Enable/disable the dropzone\n * @param {getFilesFromEvent} [props.getFilesFromEvent] Use this to provide a custom file aggregator\n * @param {Function} [props.onFileDialogCancel] Cb for when closing the file dialog with no selection\n * @param {dragCb} [props.onDragEnter] Cb for when the `dragenter` event occurs.\n * @param {dragCb} [props.onDragLeave] Cb for when the `dragleave` event occurs\n * @param {dragCb} [props.onDragOver] Cb for when the `dragover` event occurs\n * @param {dropCb} [props.onDrop] Cb for when the `drop` event occurs.\n * Note that this callback is invoked after the `getFilesFromEvent` callback is done.\n *\n * Files are accepted or rejected based on the `accept`, `multiple`, `minSize` and `maxSize` props.\n * `accept` must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n * If `multiple` is set to false and additional files are dropped,\n * all files besides the first will be rejected.\n * Any file which does not have a size in the [`minSize`, `maxSize`] range, will be rejected as well.\n *\n * Note that the `onDrop` callback will always be invoked regardless if the dropped files were accepted or rejected.\n * If you'd like to react to a specific scenario, use the `onDropAccepted`/`onDropRejected` props.\n *\n * `onDrop` will provide you with an array of [File](https://developer.mozilla.org/en-US/docs/Web/API/File) objects which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```js\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n * @param {dropAcceptedCb} [props.onDropAccepted]\n * @param {dropRejectedCb} [props.onDropRejected]\n *\n * @returns {DropzoneState}\n */\n\nexport function useDropzone() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _defaultProps$options = _objectSpread(_objectSpread({}, defaultProps), options),\n accept = _defaultProps$options.accept,\n disabled = _defaultProps$options.disabled,\n getFilesFromEvent = _defaultProps$options.getFilesFromEvent,\n maxSize = _defaultProps$options.maxSize,\n minSize = _defaultProps$options.minSize,\n multiple = _defaultProps$options.multiple,\n maxFiles = _defaultProps$options.maxFiles,\n onDragEnter = _defaultProps$options.onDragEnter,\n onDragLeave = _defaultProps$options.onDragLeave,\n onDragOver = _defaultProps$options.onDragOver,\n onDrop = _defaultProps$options.onDrop,\n onDropAccepted = _defaultProps$options.onDropAccepted,\n onDropRejected = _defaultProps$options.onDropRejected,\n onFileDialogCancel = _defaultProps$options.onFileDialogCancel,\n preventDropOnDocument = _defaultProps$options.preventDropOnDocument,\n noClick = _defaultProps$options.noClick,\n noKeyboard = _defaultProps$options.noKeyboard,\n noDrag = _defaultProps$options.noDrag,\n noDragEventsBubbling = _defaultProps$options.noDragEventsBubbling,\n validator = _defaultProps$options.validator;\n\n var rootRef = useRef(null);\n var inputRef = useRef(null);\n\n var _useReducer = useReducer(reducer, initialState),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var isFocused = state.isFocused,\n isFileDialogActive = state.isFileDialogActive,\n draggedFiles = state.draggedFiles; // Fn for opening the file dialog programmatically\n\n var openFileDialog = useCallback(function () {\n if (inputRef.current) {\n dispatch({\n type: 'openDialog'\n });\n inputRef.current.value = null;\n inputRef.current.click();\n }\n }, [dispatch]); // Update file dialog active state when the window is focused on\n\n var onWindowFocus = function onWindowFocus() {\n // Execute the timeout only if the file dialog is opened in the browser\n if (isFileDialogActive) {\n setTimeout(function () {\n if (inputRef.current) {\n var files = inputRef.current.files;\n\n if (!files.length) {\n dispatch({\n type: 'closeDialog'\n });\n\n if (typeof onFileDialogCancel === 'function') {\n onFileDialogCancel();\n }\n }\n }\n }, 300);\n }\n };\n\n useEffect(function () {\n window.addEventListener('focus', onWindowFocus, false);\n return function () {\n window.removeEventListener('focus', onWindowFocus, false);\n };\n }, [inputRef, isFileDialogActive, onFileDialogCancel]); // Cb to open the file dialog when SPACE/ENTER occurs on the dropzone\n\n var onKeyDownCb = useCallback(function (event) {\n // Ignore keyboard events bubbling up the DOM tree\n if (!rootRef.current || !rootRef.current.isEqualNode(event.target)) {\n return;\n }\n\n if (event.keyCode === 32 || event.keyCode === 13) {\n event.preventDefault();\n openFileDialog();\n }\n }, [rootRef, inputRef]); // Update focus state for the dropzone\n\n var onFocusCb = useCallback(function () {\n dispatch({\n type: 'focus'\n });\n }, []);\n var onBlurCb = useCallback(function () {\n dispatch({\n type: 'blur'\n });\n }, []); // Cb to open the file dialog when click occurs on the dropzone\n\n var onClickCb = useCallback(function () {\n if (noClick) {\n return;\n } // In IE11/Edge the file-browser dialog is blocking, therefore, use setTimeout()\n // to ensure React can handle state changes\n // See: https://github.com/react-dropzone/react-dropzone/issues/450\n\n\n if (isIeOrEdge()) {\n setTimeout(openFileDialog, 0);\n } else {\n openFileDialog();\n }\n }, [inputRef, noClick]);\n var dragTargetsRef = useRef([]);\n\n var onDocumentDrop = function onDocumentDrop(event) {\n if (rootRef.current && rootRef.current.contains(event.target)) {\n // If we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n\n event.preventDefault();\n dragTargetsRef.current = [];\n };\n\n useEffect(function () {\n if (preventDropOnDocument) {\n document.addEventListener('dragover', onDocumentDragOver, false);\n document.addEventListener('drop', onDocumentDrop, false);\n }\n\n return function () {\n if (preventDropOnDocument) {\n document.removeEventListener('dragover', onDocumentDragOver);\n document.removeEventListener('drop', onDocumentDrop);\n }\n };\n }, [rootRef, preventDropOnDocument]);\n var onDragEnterCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [].concat(_toConsumableArray(dragTargetsRef.current), [event.target]);\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (draggedFiles) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n dispatch({\n draggedFiles: draggedFiles,\n isDragActive: true,\n type: 'setDraggedFiles'\n });\n\n if (onDragEnter) {\n onDragEnter(event);\n }\n });\n }\n }, [getFilesFromEvent, onDragEnter, noDragEventsBubbling]);\n var onDragOverCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event);\n var hasFiles = isEvtWithFiles(event);\n\n if (hasFiles && event.dataTransfer) {\n try {\n event.dataTransfer.dropEffect = 'copy';\n } catch (_unused) {}\n /* eslint-disable-line no-empty */\n\n }\n\n if (hasFiles && onDragOver) {\n onDragOver(event);\n }\n\n return false;\n }, [onDragOver, noDragEventsBubbling]);\n var onDragLeaveCb = useCallback(function (event) {\n event.preventDefault();\n event.persist();\n stopPropagation(event); // Only deactivate once the dropzone and all children have been left\n\n var targets = dragTargetsRef.current.filter(function (target) {\n return rootRef.current && rootRef.current.contains(target);\n }); // Make sure to remove a target present multiple times only once\n // (Firefox may fire dragenter/dragleave multiple times on the same element)\n\n var targetIdx = targets.indexOf(event.target);\n\n if (targetIdx !== -1) {\n targets.splice(targetIdx, 1);\n }\n\n dragTargetsRef.current = targets;\n\n if (targets.length > 0) {\n return;\n }\n\n dispatch({\n isDragActive: false,\n type: 'setDraggedFiles',\n draggedFiles: []\n });\n\n if (isEvtWithFiles(event) && onDragLeave) {\n onDragLeave(event);\n }\n }, [rootRef, onDragLeave, noDragEventsBubbling]);\n var onDropCb = useCallback(function (event) {\n event.preventDefault(); // Persist here because we need the event later after getFilesFromEvent() is done\n\n event.persist();\n stopPropagation(event);\n dragTargetsRef.current = [];\n\n if (isEvtWithFiles(event)) {\n Promise.resolve(getFilesFromEvent(event)).then(function (files) {\n if (isPropagationStopped(event) && !noDragEventsBubbling) {\n return;\n }\n\n var acceptedFiles = [];\n var fileRejections = [];\n files.forEach(function (file) {\n var _fileAccepted = fileAccepted(file, accept),\n _fileAccepted2 = _slicedToArray(_fileAccepted, 2),\n accepted = _fileAccepted2[0],\n acceptError = _fileAccepted2[1];\n\n var _fileMatchSize = fileMatchSize(file, minSize, maxSize),\n _fileMatchSize2 = _slicedToArray(_fileMatchSize, 2),\n sizeMatch = _fileMatchSize2[0],\n sizeError = _fileMatchSize2[1];\n\n var customErrors = validator ? validator(file) : null;\n\n if (accepted && sizeMatch && !customErrors) {\n acceptedFiles.push(file);\n } else {\n var errors = [acceptError, sizeError];\n\n if (customErrors) {\n errors = errors.concat(customErrors);\n }\n\n fileRejections.push({\n file: file,\n errors: errors.filter(function (e) {\n return e;\n })\n });\n }\n });\n\n if (!multiple && acceptedFiles.length > 1 || multiple && maxFiles >= 1 && acceptedFiles.length > maxFiles) {\n // Reject everything and empty accepted files\n acceptedFiles.forEach(function (file) {\n fileRejections.push({\n file: file,\n errors: [TOO_MANY_FILES_REJECTION]\n });\n });\n acceptedFiles.splice(0);\n }\n\n dispatch({\n acceptedFiles: acceptedFiles,\n fileRejections: fileRejections,\n type: 'setFiles'\n });\n\n if (onDrop) {\n onDrop(acceptedFiles, fileRejections, event);\n }\n\n if (fileRejections.length > 0 && onDropRejected) {\n onDropRejected(fileRejections, event);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted(acceptedFiles, event);\n }\n });\n }\n\n dispatch({\n type: 'reset'\n });\n }, [multiple, accept, minSize, maxSize, maxFiles, getFilesFromEvent, onDrop, onDropAccepted, onDropRejected, noDragEventsBubbling, validator]);\n\n var composeHandler = function composeHandler(fn) {\n return disabled ? null : fn;\n };\n\n var composeKeyboardHandler = function composeKeyboardHandler(fn) {\n return noKeyboard ? null : composeHandler(fn);\n };\n\n var composeDragHandler = function composeDragHandler(fn) {\n return noDrag ? null : composeHandler(fn);\n };\n\n var stopPropagation = function stopPropagation(event) {\n if (noDragEventsBubbling) {\n event.stopPropagation();\n }\n };\n\n var getRootProps = useMemo(function () {\n return function () {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === void 0 ? 'ref' : _ref2$refKey,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, _excluded3);\n\n return _objectSpread(_objectSpread(_defineProperty({\n onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),\n onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),\n onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onClickCb)),\n onDragEnter: composeDragHandler(composeEventHandlers(onDragEnter, onDragEnterCb)),\n onDragOver: composeDragHandler(composeEventHandlers(onDragOver, onDragOverCb)),\n onDragLeave: composeDragHandler(composeEventHandlers(onDragLeave, onDragLeaveCb)),\n onDrop: composeDragHandler(composeEventHandlers(onDrop, onDropCb))\n }, refKey, rootRef), !disabled && !noKeyboard ? {\n tabIndex: 0\n } : {}), rest);\n };\n }, [rootRef, onKeyDownCb, onFocusCb, onBlurCb, onClickCb, onDragEnterCb, onDragOverCb, onDragLeaveCb, onDropCb, noKeyboard, noDrag, disabled]);\n var onInputElementClick = useCallback(function (event) {\n event.stopPropagation();\n }, []);\n var getInputProps = useMemo(function () {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === void 0 ? 'ref' : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, _excluded4);\n\n var inputProps = _defineProperty({\n accept: accept,\n multiple: multiple,\n type: 'file',\n style: {\n display: 'none'\n },\n onChange: composeHandler(composeEventHandlers(onChange, onDropCb)),\n onClick: composeHandler(composeEventHandlers(onClick, onInputElementClick)),\n autoComplete: 'off',\n tabIndex: -1\n }, refKey, inputRef);\n\n return _objectSpread(_objectSpread({}, inputProps), rest);\n };\n }, [inputRef, accept, multiple, onDropCb, disabled]);\n var fileCount = draggedFiles.length;\n var isDragAccept = fileCount > 0 && allFilesAccepted({\n files: draggedFiles,\n accept: accept,\n minSize: minSize,\n maxSize: maxSize,\n multiple: multiple,\n maxFiles: maxFiles\n });\n var isDragReject = fileCount > 0 && !isDragAccept;\n return _objectSpread(_objectSpread({}, state), {}, {\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n isFocused: isFocused && !disabled,\n getRootProps: getRootProps,\n getInputProps: getInputProps,\n rootRef: rootRef,\n inputRef: inputRef,\n open: composeHandler(openFileDialog)\n });\n}\n\nfunction reducer(state, action) {\n /* istanbul ignore next */\n switch (action.type) {\n case 'focus':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: true\n });\n\n case 'blur':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFocused: false\n });\n\n case 'openDialog':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: true\n });\n\n case 'closeDialog':\n return _objectSpread(_objectSpread({}, state), {}, {\n isFileDialogActive: false\n });\n\n case 'setDraggedFiles':\n /* eslint no-case-declarations: 0 */\n var isDragActive = action.isDragActive,\n draggedFiles = action.draggedFiles;\n return _objectSpread(_objectSpread({}, state), {}, {\n draggedFiles: draggedFiles,\n isDragActive: isDragActive\n });\n\n case 'setFiles':\n return _objectSpread(_objectSpread({}, state), {}, {\n acceptedFiles: action.acceptedFiles,\n fileRejections: action.fileRejections\n });\n\n case 'reset':\n return _objectSpread({}, initialState);\n\n default:\n return state;\n }\n}\n\nexport { ErrorCode } from './utils';","var replaceEmoji = require('./lib/replaceEmoji'),\n\tmakeTwemojiRenderer = require('./lib/makeTwemojiRenderer')\n\nmodule.exports = function reactEasyEmoji (element, optionsOrFn) {\n\tvar render = (typeof optionsOrFn === 'function') ? optionsOrFn : makeTwemojiRenderer(optionsOrFn)\n\treturn replaceEmoji(element, render)\n}","var createElement = require('react').createElement\n\nvar pageProtocol = (typeof location === 'undefined') ? '' : ((location.protocol === 'https:') ? 'https:' : 'http:')\n\nvar emojiStyle = {\n\theight: '1em',\n\twidth: '1em',\n\tmargin: '0 .05em 0 .1em',\n\tverticalAlign: '-0.1em'\n}\n\n// Accept protocol with or without a colon\nfunction normalizeProtocol(protocol) {\n\tif (protocol && protocol.length > 0 && protocol.charAt(protocol.length - 1) !== ':') {\n\t\treturn protocol + ':'\n\t}\n\treturn protocol\n}\n\nmodule.exports = function makeTwemojiRenderer(options) {\n\toptions = merge({\n\t\tprotocol: pageProtocol,\n\t\tbaseUrl: '//cdnjs.cloudflare.com/ajax/libs/twemoji/14.0.2/',\n\t\tsize: '72x72',\n\t\text: '.png',\n\t\tprops: null\n\t}, options)\n\n\treturn function renderTwemoji (icon, match, offset) {\n\t\tvar src = ''\n\t\tif (options.baseUrl.indexOf('http') !== 0) {\n\t\t\tsrc += normalizeProtocol(options.protocol)\n\t\t}\n\n\t\tsrc += options.baseUrl + options.size + '/' + icon + options.ext\n\n\t\treturn createElement(\n\t\t\t'img',\n\t\t\tmerge({\n\t\t\t\tkey: offset,\n\t\t\t\talt: match,\n\t\t\t\tdraggable: false,\n\t\t\t\tsrc: src,\n\t\t\t\tstyle: emojiStyle\n\t\t\t}, options.props)\n\t\t)\n\t}\n}\n\nfunction merge() {\n\tvar out = {}, len = arguments.length\n\tfor(var i = 0; i < len; ++i) {\n\t\tvar source = arguments[i]\n\t\tif (source) {\n\t\t\tfor (var key in source) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\t\t\tout[key] = source[key]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n }\n return out\n}","var replaceStringToArray = require('string-replace-to-array')\n\n// This is based off of https://github.com/twitter/twemoji/blob/gh-pages/2/twemoji.js\n//\n// Ideally we'd use twemoji instead of replicating its logic.\n// The reason we can't is that we need to run our own replace.\n//\n// We could use it for most things (by essentially running twemoji.parse for each\n// regex match, and reading the code from the callback), but the one thing we'd always need\n// to copy and paste into this file is the regex since we need it to run the replace.\n//\n// Another option is to fork twemoji and expose a method in it that could help us, then\n// ask them to pull it in.\n//\n\n// RegExp based on emoji's official Unicode standards\n// http://www.unicode.org/Public/UNIDATA/EmojiSources.txt\nvar re = /(?:\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\udef1\\ud83c\\udffb\\u200d\\ud83e\\udef2\\ud83c[\\udffc-\\udfff]|\\ud83e\\udef1\\ud83c\\udffc\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\udef1\\ud83c\\udffd\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\udef1\\ud83c\\udffe\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\udef1\\ud83c\\udfff\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1|\\ud83d\\udc6b\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6c\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6d\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc8f\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc91\\ud83c[\\udffb-\\udfff]|\\ud83e\\udd1d\\ud83c[\\udffb-\\udfff]|\\ud83d[\\udc6b-\\udc6d\\udc8f\\udc91]|\\ud83e\\udd1d)|(?:\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1)(?:\\ud83c[\\udffb-\\udfff])?\\u200d(?:\\u2695\\ufe0f|\\u2696\\ufe0f|\\u2708\\ufe0f|\\ud83c[\\udf3e\\udf73\\udf7c\\udf84\\udf93\\udfa4\\udfa8\\udfeb\\udfed]|\\ud83d[\\udcbb\\udcbc\\udd27\\udd2c\\ude80\\ude92]|\\ud83e[\\uddaf-\\uddb3\\uddbc\\uddbd])|(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75]|\\u26f9)((?:\\ud83c[\\udffb-\\udfff]|\\ufe0f)\\u200d[\\u2640\\u2642]\\ufe0f)|(?:\\ud83c[\\udfc3\\udfc4\\udfca]|\\ud83d[\\udc6e\\udc70\\udc71\\udc73\\udc77\\udc81\\udc82\\udc86\\udc87\\ude45-\\ude47\\ude4b\\ude4d\\ude4e\\udea3\\udeb4-\\udeb6]|\\ud83e[\\udd26\\udd35\\udd37-\\udd39\\udd3d\\udd3e\\uddb8\\uddb9\\uddcd-\\uddcf\\uddd4\\uddd6-\\udddd])(?:\\ud83c[\\udffb-\\udfff])?\\u200d[\\u2640\\u2642]\\ufe0f|(?:\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83c\\udff3\\ufe0f\\u200d\\u26a7\\ufe0f|\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08|\\ud83d\\ude36\\u200d\\ud83c\\udf2b\\ufe0f|\\u2764\\ufe0f\\u200d\\ud83d\\udd25|\\u2764\\ufe0f\\u200d\\ud83e\\ude79|\\ud83c\\udff4\\u200d\\u2620\\ufe0f|\\ud83d\\udc15\\u200d\\ud83e\\uddba|\\ud83d\\udc3b\\u200d\\u2744\\ufe0f|\\ud83d\\udc41\\u200d\\ud83d\\udde8|\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc6f\\u200d\\u2640\\ufe0f|\\ud83d\\udc6f\\u200d\\u2642\\ufe0f|\\ud83d\\ude2e\\u200d\\ud83d\\udca8|\\ud83d\\ude35\\u200d\\ud83d\\udcab|\\ud83e\\udd3c\\u200d\\u2640\\ufe0f|\\ud83e\\udd3c\\u200d\\u2642\\ufe0f|\\ud83e\\uddde\\u200d\\u2640\\ufe0f|\\ud83e\\uddde\\u200d\\u2642\\ufe0f|\\ud83e\\udddf\\u200d\\u2640\\ufe0f|\\ud83e\\udddf\\u200d\\u2642\\ufe0f|\\ud83d\\udc08\\u200d\\u2b1b)|[#*0-9]\\ufe0f?\\u20e3|(?:[©®\\u2122\\u265f]\\ufe0f)|(?:\\ud83c[\\udc04\\udd70\\udd71\\udd7e\\udd7f\\ude02\\ude1a\\ude2f\\ude37\\udf21\\udf24-\\udf2c\\udf36\\udf7d\\udf96\\udf97\\udf99-\\udf9b\\udf9e\\udf9f\\udfcd\\udfce\\udfd4-\\udfdf\\udff3\\udff5\\udff7]|\\ud83d[\\udc3f\\udc41\\udcfd\\udd49\\udd4a\\udd6f\\udd70\\udd73\\udd76-\\udd79\\udd87\\udd8a-\\udd8d\\udda5\\udda8\\uddb1\\uddb2\\uddbc\\uddc2-\\uddc4\\uddd1-\\uddd3\\udddc-\\uddde\\udde1\\udde3\\udde8\\uddef\\uddf3\\uddfa\\udecb\\udecd-\\udecf\\udee0-\\udee5\\udee9\\udef0\\udef3]|[\\u203c\\u2049\\u2139\\u2194-\\u2199\\u21a9\\u21aa\\u231a\\u231b\\u2328\\u23cf\\u23ed-\\u23ef\\u23f1\\u23f2\\u23f8-\\u23fa\\u24c2\\u25aa\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u2600-\\u2604\\u260e\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262a\\u262e\\u262f\\u2638-\\u263a\\u2640\\u2642\\u2648-\\u2653\\u2660\\u2663\\u2665\\u2666\\u2668\\u267b\\u267f\\u2692-\\u2697\\u2699\\u269b\\u269c\\u26a0\\u26a1\\u26a7\\u26aa\\u26ab\\u26b0\\u26b1\\u26bd\\u26be\\u26c4\\u26c5\\u26c8\\u26cf\\u26d1\\u26d3\\u26d4\\u26e9\\u26ea\\u26f0-\\u26f5\\u26f8\\u26fa\\u26fd\\u2702\\u2708\\u2709\\u270f\\u2712\\u2714\\u2716\\u271d\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u2764\\u27a1\\u2934\\u2935\\u2b05-\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u3030\\u303d\\u3297\\u3299])(?:\\ufe0f|(?!\\ufe0e))|(?:(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75\\udd90]|[\\u261d\\u26f7\\u26f9\\u270c\\u270d])(?:\\ufe0f|(?!\\ufe0e))|(?:\\ud83c[\\udf85\\udfc2-\\udfc4\\udfc7\\udfca]|\\ud83d[\\udc42\\udc43\\udc46-\\udc50\\udc66-\\udc69\\udc6e\\udc70-\\udc78\\udc7c\\udc81-\\udc83\\udc85-\\udc87\\udcaa\\udd7a\\udd95\\udd96\\ude45-\\ude47\\ude4b-\\ude4f\\udea3\\udeb4-\\udeb6\\udec0\\udecc]|\\ud83e[\\udd0c\\udd0f\\udd18-\\udd1c\\udd1e\\udd1f\\udd26\\udd30-\\udd39\\udd3d\\udd3e\\udd77\\uddb5\\uddb6\\uddb8\\uddb9\\uddbb\\uddcd-\\uddcf\\uddd1-\\udddd\\udec3-\\udec5\\udef0-\\udef6]|[\\u270a\\u270b]))(?:\\ud83c[\\udffb-\\udfff])?|(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f|\\ud83c\\udde6\\ud83c[\\udde8-\\uddec\\uddee\\uddf1\\uddf2\\uddf4\\uddf6-\\uddfa\\uddfc\\uddfd\\uddff]|\\ud83c\\udde7\\ud83c[\\udde6\\udde7\\udde9-\\uddef\\uddf1-\\uddf4\\uddf6-\\uddf9\\uddfb\\uddfc\\uddfe\\uddff]|\\ud83c\\udde8\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\uddee\\uddf0-\\uddf5\\uddf7\\uddfa-\\uddff]|\\ud83c\\udde9\\ud83c[\\uddea\\uddec\\uddef\\uddf0\\uddf2\\uddf4\\uddff]|\\ud83c\\uddea\\ud83c[\\udde6\\udde8\\uddea\\uddec\\udded\\uddf7-\\uddfa]|\\ud83c\\uddeb\\ud83c[\\uddee-\\uddf0\\uddf2\\uddf4\\uddf7]|\\ud83c\\uddec\\ud83c[\\udde6\\udde7\\udde9-\\uddee\\uddf1-\\uddf3\\uddf5-\\uddfa\\uddfc\\uddfe]|\\ud83c\\udded\\ud83c[\\uddf0\\uddf2\\uddf3\\uddf7\\uddf9\\uddfa]|\\ud83c\\uddee\\ud83c[\\udde8-\\uddea\\uddf1-\\uddf4\\uddf6-\\uddf9]|\\ud83c\\uddef\\ud83c[\\uddea\\uddf2\\uddf4\\uddf5]|\\ud83c\\uddf0\\ud83c[\\uddea\\uddec-\\uddee\\uddf2\\uddf3\\uddf5\\uddf7\\uddfc\\uddfe\\uddff]|\\ud83c\\uddf1\\ud83c[\\udde6-\\udde8\\uddee\\uddf0\\uddf7-\\uddfb\\uddfe]|\\ud83c\\uddf2\\ud83c[\\udde6\\udde8-\\udded\\uddf0-\\uddff]|\\ud83c\\uddf3\\ud83c[\\udde6\\udde8\\uddea-\\uddec\\uddee\\uddf1\\uddf4\\uddf5\\uddf7\\uddfa\\uddff]|\\ud83c\\uddf4\\ud83c\\uddf2|\\ud83c\\uddf5\\ud83c[\\udde6\\uddea-\\udded\\uddf0-\\uddf3\\uddf7-\\uddf9\\uddfc\\uddfe]|\\ud83c\\uddf6\\ud83c\\udde6|\\ud83c\\uddf7\\ud83c[\\uddea\\uddf4\\uddf8\\uddfa\\uddfc]|\\ud83c\\uddf8\\ud83c[\\udde6-\\uddea\\uddec-\\uddf4\\uddf7-\\uddf9\\uddfb\\uddfd-\\uddff]|\\ud83c\\uddf9\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\udded\\uddef-\\uddf4\\uddf7\\uddf9\\uddfb\\uddfc\\uddff]|\\ud83c\\uddfa\\ud83c[\\udde6\\uddec\\uddf2\\uddf3\\uddf8\\uddfe\\uddff]|\\ud83c\\uddfb\\ud83c[\\udde6\\udde8\\uddea\\uddec\\uddee\\uddf3\\uddfa]|\\ud83c\\uddfc\\ud83c[\\uddeb\\uddf8]|\\ud83c\\uddfd\\ud83c\\uddf0|\\ud83c\\uddfe\\ud83c[\\uddea\\uddf9]|\\ud83c\\uddff\\ud83c[\\udde6\\uddf2\\uddfc]|\\ud83c[\\udccf\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01\\ude32-\\ude36\\ude38-\\ude3a\\ude50\\ude51\\udf00-\\udf20\\udf2d-\\udf35\\udf37-\\udf7c\\udf7e-\\udf84\\udf86-\\udf93\\udfa0-\\udfc1\\udfc5\\udfc6\\udfc8\\udfc9\\udfcf-\\udfd3\\udfe0-\\udff0\\udff4\\udff8-\\udfff]|\\ud83d[\\udc00-\\udc3e\\udc40\\udc44\\udc45\\udc51-\\udc65\\udc6a\\udc6f\\udc79-\\udc7b\\udc7d-\\udc80\\udc84\\udc88-\\udc8e\\udc90\\udc92-\\udca9\\udcab-\\udcfc\\udcff-\\udd3d\\udd4b-\\udd4e\\udd50-\\udd67\\udda4\\uddfb-\\ude44\\ude48-\\ude4a\\ude80-\\udea2\\udea4-\\udeb3\\udeb7-\\udebf\\udec1-\\udec5\\uded0-\\uded2\\uded5-\\uded7\\udedd-\\udedf\\udeeb\\udeec\\udef4-\\udefc\\udfe0-\\udfeb\\udff0]|\\ud83e[\\udd0d\\udd0e\\udd10-\\udd17\\udd20-\\udd25\\udd27-\\udd2f\\udd3a\\udd3c\\udd3f-\\udd45\\udd47-\\udd76\\udd78-\\uddb4\\uddb7\\uddba\\uddbc-\\uddcc\\uddd0\\uddde-\\uddff\\ude70-\\ude74\\ude78-\\ude7c\\ude80-\\ude86\\ude90-\\udeac\\udeb0-\\udeba\\udec0-\\udec2\\uded0-\\uded9\\udee0-\\udee7]|[\\u23e9-\\u23ec\\u23f0\\u23f3\\u267e\\u26ce\\u2705\\u2728\\u274c\\u274e\\u2753-\\u2755\\u2795-\\u2797\\u27b0\\u27bf\\ue50a])|\\ufe0f/g\n\nfunction toCodePoint(unicodeSurrogates, sep) {\n var\n\t\tr = [],\n\t\tc = 0,\n\t\tp = 0,\n\t\ti = 0\n\t\t\n\twhile (i < unicodeSurrogates.length) {\n\t\tc = unicodeSurrogates.charCodeAt(i++)\n\t\tif (p) {\n\t\t\tr.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16))\n\t\t\tp = 0\n\t\t} else if (0xD800 <= c && c <= 0xDBFF) {\n\t\t\tp = c\n\t\t} else {\n\t\t\tr.push(c.toString(16))\n\t\t}\n\t}\n\treturn r.join(sep || '-')\n}\n\n// avoid runtime RegExp creation for not so smart,\n// not JIT based, and old browsers / engines\nvar UFE0Fg = /\\uFE0F/g\n\n// avoid using a string literal like '\\u200D' here because minifiers expand it inline\nvar U200D = String.fromCharCode(0x200D)\n\n/**\n* Used to both remove the possible variant\n* and to convert utf16 into code points.\n* If there is a zero-width-joiner (U+200D), leave the variants in.\n* @param string the raw text of the emoji match\n*/\nfunction grabTheRightIcon(rawText) {\n\t// if variant is present as \\uFE0F\n\treturn toCodePoint(rawText.indexOf(U200D) < 0 ?\n\t\trawText.replace(UFE0Fg, '') :\n\t\trawText\n\t);\n}\n\nmodule.exports = function replaceEmoji (string, render) {\n\t// Note: the latest regex added an empty matching group, so we ignore it.\n\treturn replaceStringToArray(string, re, function emojiReplacer (match, _, offset) {\n\t\tvar icon = grabTheRightIcon(match)\n\t\treturn render(icon, match, offset)\n\t})\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n// \n\nvar charCodeOfDot = \".\".charCodeAt(0);\nvar reEscapeChar = /\\\\(\\\\)?/g;\nvar rePropName = RegExp(\n// Match anything that isn't a dot or bracket.\n\"[^.[\\\\]]+\" + \"|\" +\n// Or match property names within brackets.\n\"\\\\[(?:\" +\n// Match a non-string expression.\n\"([^\\\"'][^[]*)\" + \"|\" +\n// Or match strings (supports escaping characters).\n\"([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2\" + \")\\\\]\" + \"|\" +\n// Or match \"\" as the space between consecutive dots or empty brackets.\n\"(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))\", \"g\");\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = function stringToPath(string) {\n var result = [];\n if (string.charCodeAt(0) === charCodeOfDot) {\n result.push(\"\");\n }\n string.replace(rePropName, function (match, expression, quote, subString) {\n var key = match;\n if (quote) {\n key = subString.replace(reEscapeChar, \"$1\");\n } else if (expression) {\n key = expression.trim();\n }\n result.push(key);\n });\n return result;\n};\nvar keysCache = {};\nvar keysRegex = /[.[\\]]+/;\nvar toPath = function toPath(key) {\n if (key === null || key === undefined || !key.length) {\n return [];\n }\n if (typeof key !== \"string\") {\n throw new Error(\"toPath() expects a string\");\n }\n if (keysCache[key] == null) {\n /**\n * The following patch fixes issue 456, introduced since v4.20.3:\n *\n * Before v4.20.3, i.e. in v4.20.2, a `key` like 'choices[]' would map to ['choices']\n * (e.g. an array of choices used where 'choices[]' is name attribute of an input of type checkbox).\n *\n * Since v4.20.3, a `key` like 'choices[]' would map to ['choices', ''] which is wrong and breaks\n * this kind of inputs e.g. in React.\n *\n * v4.20.3 introduced an unwanted breaking change, this patch fixes it, see the issue at the link below.\n *\n * @see https://github.com/final-form/final-form/issues/456\n */\n if (key.endsWith(\"[]\")) {\n // v4.20.2 (a `key` like 'choices[]' should map to ['choices'], which is fine).\n keysCache[key] = key.split(keysRegex).filter(Boolean);\n } else {\n // v4.20.3 (a `key` like 'choices[]' maps to ['choices', ''], which breaks applications relying on inputs like ``).\n keysCache[key] = stringToPath(key);\n }\n }\n return keysCache[key];\n};\n\n// \nvar getIn = function getIn(state, complexKey) {\n // Intentionally using iteration rather than recursion\n var path = toPath(complexKey);\n var current = state;\n for (var i = 0; i < path.length; i++) {\n var key = path[i];\n if (current === undefined || current === null || typeof current !== \"object\" || Array.isArray(current) && isNaN(key)) {\n return undefined;\n }\n current = current[key];\n }\n return current;\n};\n\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); }\nvar setInRecursor = function setInRecursor(current, index, path, value, destroyArrays) {\n if (index >= path.length) {\n // end of recursion\n return value;\n }\n var key = path[index];\n\n // determine type of key\n if (isNaN(key)) {\n var _extends2;\n // object set\n if (current === undefined || current === null) {\n var _ref;\n // recurse\n var _result = setInRecursor(undefined, index + 1, path, value, destroyArrays);\n\n // delete or create an object\n return _result === undefined ? undefined : (_ref = {}, _ref[key] = _result, _ref);\n }\n if (Array.isArray(current)) {\n throw new Error(\"Cannot set a non-numeric property on an array\");\n }\n // current exists, so make a copy of all its values, and add/update the new one\n var _result2 = setInRecursor(current[key], index + 1, path, value, destroyArrays);\n if (_result2 === undefined) {\n var numKeys = Object.keys(current).length;\n if (current[key] === undefined && numKeys === 0) {\n // object was already empty\n return undefined;\n }\n if (current[key] !== undefined && numKeys <= 1) {\n // only key we had was the one we are deleting\n if (!isNaN(path[index - 1]) && !destroyArrays) {\n // we are in an array, so return an empty object\n return {};\n } else {\n return undefined;\n }\n }\n current[key];\n var _final = _objectWithoutPropertiesLoose(current, [key].map(_toPropertyKey));\n return _final;\n }\n // set result in key\n return _extends({}, current, (_extends2 = {}, _extends2[key] = _result2, _extends2));\n }\n // array set\n var numericKey = Number(key);\n if (current === undefined || current === null) {\n // recurse\n var _result3 = setInRecursor(undefined, index + 1, path, value, destroyArrays);\n\n // if nothing returned, delete it\n if (_result3 === undefined) {\n return undefined;\n }\n\n // create an array\n var _array = [];\n _array[numericKey] = _result3;\n return _array;\n }\n if (!Array.isArray(current)) {\n throw new Error(\"Cannot set a numeric property on an object\");\n }\n // recurse\n var existingValue = current[numericKey];\n var result = setInRecursor(existingValue, index + 1, path, value, destroyArrays);\n\n // current exists, so make a copy of all its values, and add/update the new one\n var array = [].concat(current);\n if (destroyArrays && result === undefined) {\n array.splice(numericKey, 1);\n if (array.length === 0) {\n return undefined;\n }\n } else {\n array[numericKey] = result;\n }\n return array;\n};\nvar setIn = function setIn(state, key, value, destroyArrays) {\n if (destroyArrays === void 0) {\n destroyArrays = false;\n }\n if (state === undefined || state === null) {\n throw new Error(\"Cannot call setIn() with \" + String(state) + \" state\");\n }\n if (key === undefined || key === null) {\n throw new Error(\"Cannot call setIn() with \" + String(key) + \" key\");\n }\n // Recursive function needs to accept and return State, but public API should\n // only deal with Objects\n return setInRecursor(state, 0, toPath(key), value, destroyArrays);\n};\n\nvar FORM_ERROR = \"FINAL_FORM/form-error\";\nvar ARRAY_ERROR = \"FINAL_FORM/array-error\";\n\n// \n\n\n/**\n * Converts internal field state to published field state\n */\nfunction publishFieldState(formState, field) {\n var errors = formState.errors,\n initialValues = formState.initialValues,\n lastSubmittedValues = formState.lastSubmittedValues,\n submitErrors = formState.submitErrors,\n submitFailed = formState.submitFailed,\n submitSucceeded = formState.submitSucceeded,\n submitting = formState.submitting,\n values = formState.values;\n var active = field.active,\n blur = field.blur,\n change = field.change,\n data = field.data,\n focus = field.focus,\n modified = field.modified,\n modifiedSinceLastSubmit = field.modifiedSinceLastSubmit,\n name = field.name,\n touched = field.touched,\n validating = field.validating,\n visited = field.visited;\n var value = getIn(values, name);\n var error = getIn(errors, name);\n if (error && error[ARRAY_ERROR]) {\n error = error[ARRAY_ERROR];\n }\n var submitError = submitErrors && getIn(submitErrors, name);\n var initial = initialValues && getIn(initialValues, name);\n var pristine = field.isEqual(initial, value);\n var dirtySinceLastSubmit = !!(lastSubmittedValues && !field.isEqual(getIn(lastSubmittedValues, name), value));\n var valid = !error && !submitError;\n return {\n active: active,\n blur: blur,\n change: change,\n data: data,\n dirty: !pristine,\n dirtySinceLastSubmit: dirtySinceLastSubmit,\n error: error,\n focus: focus,\n initial: initial,\n invalid: !valid,\n length: Array.isArray(value) ? value.length : undefined,\n modified: modified,\n modifiedSinceLastSubmit: modifiedSinceLastSubmit,\n name: name,\n pristine: pristine,\n submitError: submitError,\n submitFailed: submitFailed,\n submitSucceeded: submitSucceeded,\n submitting: submitting,\n touched: touched,\n valid: valid,\n value: value,\n visited: visited,\n validating: validating\n };\n}\n\n// \nvar fieldSubscriptionItems = [\"active\", \"data\", \"dirty\", \"dirtySinceLastSubmit\", \"error\", \"initial\", \"invalid\", \"length\", \"modified\", \"modifiedSinceLastSubmit\", \"pristine\", \"submitError\", \"submitFailed\", \"submitSucceeded\", \"submitting\", \"touched\", \"valid\", \"value\", \"visited\", \"validating\"];\n\n// \n\nvar shallowEqual = function shallowEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== \"object\" || !a || typeof b !== \"object\" || !b) {\n return false;\n }\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n if (keysA.length !== keysB.length) {\n return false;\n }\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(b);\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n if (!bHasOwnProperty(key) || a[key] !== b[key]) {\n return false;\n }\n }\n return true;\n};\n\n// \nfunction subscriptionFilter (dest, src, previous, subscription, keys, shallowEqualKeys) {\n var different = false;\n keys.forEach(function (key) {\n if (subscription[key]) {\n dest[key] = src[key];\n if (!previous || (~shallowEqualKeys.indexOf(key) ? !shallowEqual(src[key], previous[key]) : src[key] !== previous[key])) {\n different = true;\n }\n }\n });\n return different;\n}\n\n// \nvar shallowEqualKeys$1 = [\"data\"];\n\n/**\n * Filters items in a FieldState based on a FieldSubscription\n */\nvar filterFieldState = function filterFieldState(state, previousState, subscription, force) {\n var result = {\n blur: state.blur,\n change: state.change,\n focus: state.focus,\n name: state.name\n };\n var different = subscriptionFilter(result, state, previousState, subscription, fieldSubscriptionItems, shallowEqualKeys$1) || !previousState;\n return different || force ? result : undefined;\n};\n\n// \nvar formSubscriptionItems = [\"active\", \"dirty\", \"dirtyFields\", \"dirtyFieldsSinceLastSubmit\", \"dirtySinceLastSubmit\", \"error\", \"errors\", \"hasSubmitErrors\", \"hasValidationErrors\", \"initialValues\", \"invalid\", \"modified\", \"modifiedSinceLastSubmit\", \"pristine\", \"submitting\", \"submitError\", \"submitErrors\", \"submitFailed\", \"submitSucceeded\", \"touched\", \"valid\", \"validating\", \"values\", \"visited\"];\n\n// \nvar shallowEqualKeys = [\"touched\", \"visited\"];\n\n/**\n * Filters items in a FormState based on a FormSubscription\n */\nfunction filterFormState(state, previousState, subscription, force) {\n var result = {};\n var different = subscriptionFilter(result, state, previousState, subscription, formSubscriptionItems, shallowEqualKeys) || !previousState;\n return different || force ? result : undefined;\n}\n\n// \nvar memoize = function memoize(fn) {\n var lastArgs;\n var lastResult;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (!lastArgs || args.length !== lastArgs.length || args.some(function (arg, index) {\n return !shallowEqual(lastArgs[index], arg);\n })) {\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n }\n return lastResult;\n };\n};\n\nvar isPromise = (function (obj) {\n return !!obj && (typeof obj === \"object\" || typeof obj === \"function\") && typeof obj.then === \"function\";\n});\n\nvar version = \"4.20.10\";\n\nvar configOptions = [\"debug\", \"initialValues\", \"keepDirtyOnReinitialize\", \"mutators\", \"onSubmit\", \"validate\", \"validateOnBlur\"];\nvar tripleEquals = function tripleEquals(a, b) {\n return a === b;\n};\nvar hasAnyError = function hasAnyError(errors) {\n return Object.keys(errors).some(function (key) {\n var value = errors[key];\n if (value && typeof value === \"object\" && !(value instanceof Error)) {\n return hasAnyError(value);\n }\n return typeof value !== \"undefined\";\n });\n};\nfunction convertToExternalFormState(_ref) {\n var active = _ref.active,\n dirtySinceLastSubmit = _ref.dirtySinceLastSubmit,\n modifiedSinceLastSubmit = _ref.modifiedSinceLastSubmit,\n error = _ref.error,\n errors = _ref.errors,\n initialValues = _ref.initialValues,\n pristine = _ref.pristine,\n submitting = _ref.submitting,\n submitFailed = _ref.submitFailed,\n submitSucceeded = _ref.submitSucceeded,\n submitError = _ref.submitError,\n submitErrors = _ref.submitErrors,\n valid = _ref.valid,\n validating = _ref.validating,\n values = _ref.values;\n return {\n active: active,\n dirty: !pristine,\n dirtySinceLastSubmit: dirtySinceLastSubmit,\n modifiedSinceLastSubmit: modifiedSinceLastSubmit,\n error: error,\n errors: errors,\n hasSubmitErrors: !!(submitError || submitErrors && hasAnyError(submitErrors)),\n hasValidationErrors: !!(error || hasAnyError(errors)),\n invalid: !valid,\n initialValues: initialValues,\n pristine: pristine,\n submitting: submitting,\n submitFailed: submitFailed,\n submitSucceeded: submitSucceeded,\n submitError: submitError,\n submitErrors: submitErrors,\n valid: valid,\n validating: validating > 0,\n values: values\n };\n}\nfunction notifySubscriber(subscriber, subscription, state, lastState, filter, force) {\n var notification = filter(state, lastState, subscription, force);\n if (notification) {\n subscriber(notification);\n return true;\n }\n return false;\n}\nfunction notify(_ref2, state, lastState, filter, force) {\n var entries = _ref2.entries;\n Object.keys(entries).forEach(function (key) {\n var entry = entries[Number(key)];\n // istanbul ignore next\n if (entry) {\n var subscription = entry.subscription,\n subscriber = entry.subscriber,\n notified = entry.notified;\n if (notifySubscriber(subscriber, subscription, state, lastState, filter, force || !notified)) {\n entry.notified = true;\n }\n }\n });\n}\nfunction createForm(config) {\n if (!config) {\n throw new Error(\"No config specified\");\n }\n var debug = config.debug,\n destroyOnUnregister = config.destroyOnUnregister,\n keepDirtyOnReinitialize = config.keepDirtyOnReinitialize,\n initialValues = config.initialValues,\n mutators = config.mutators,\n onSubmit = config.onSubmit,\n validate = config.validate,\n validateOnBlur = config.validateOnBlur;\n if (!onSubmit) {\n throw new Error(\"No onSubmit function specified\");\n }\n var state = {\n subscribers: {\n index: 0,\n entries: {}\n },\n fieldSubscribers: {},\n fields: {},\n formState: {\n asyncErrors: {},\n dirtySinceLastSubmit: false,\n modifiedSinceLastSubmit: false,\n errors: {},\n initialValues: initialValues && _extends({}, initialValues),\n invalid: false,\n pristine: true,\n submitting: false,\n submitFailed: false,\n submitSucceeded: false,\n resetWhileSubmitting: false,\n valid: true,\n validating: 0,\n values: initialValues ? _extends({}, initialValues) : {}\n },\n lastFormState: undefined\n };\n var inBatch = 0;\n var validationPaused = false;\n var validationBlocked = false;\n var preventNotificationWhileValidationPaused = false;\n var nextAsyncValidationKey = 0;\n var asyncValidationPromises = {};\n var clearAsyncValidationPromise = function clearAsyncValidationPromise(key) {\n return function (result) {\n delete asyncValidationPromises[key];\n return result;\n };\n };\n var changeValue = function changeValue(state, name, mutate) {\n var before = getIn(state.formState.values, name);\n var after = mutate(before);\n state.formState.values = setIn(state.formState.values, name, after) || {};\n };\n var renameField = function renameField(state, from, to) {\n if (state.fields[from]) {\n var _extends2, _extends3;\n state.fields = _extends({}, state.fields, (_extends2 = {}, _extends2[to] = _extends({}, state.fields[from], {\n name: to,\n // rebind event handlers\n blur: function blur() {\n return api.blur(to);\n },\n change: function change(value) {\n return api.change(to, value);\n },\n focus: function focus() {\n return api.focus(to);\n },\n lastFieldState: undefined\n }), _extends2));\n delete state.fields[from];\n state.fieldSubscribers = _extends({}, state.fieldSubscribers, (_extends3 = {}, _extends3[to] = state.fieldSubscribers[from], _extends3));\n delete state.fieldSubscribers[from];\n var value = getIn(state.formState.values, from);\n state.formState.values = setIn(state.formState.values, from, undefined) || {};\n state.formState.values = setIn(state.formState.values, to, value);\n delete state.lastFormState;\n }\n };\n\n // bind state to mutators\n var getMutatorApi = function getMutatorApi(key) {\n return function () {\n // istanbul ignore next\n if (mutators) {\n // ^^ causes branch coverage warning, but needed to appease the Flow gods\n var mutatableState = {\n formState: state.formState,\n fields: state.fields,\n fieldSubscribers: state.fieldSubscribers,\n lastFormState: state.lastFormState\n };\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var returnValue = mutators[key](args, mutatableState, {\n changeValue: changeValue,\n getIn: getIn,\n renameField: renameField,\n resetFieldState: api.resetFieldState,\n setIn: setIn,\n shallowEqual: shallowEqual\n });\n state.formState = mutatableState.formState;\n state.fields = mutatableState.fields;\n state.fieldSubscribers = mutatableState.fieldSubscribers;\n state.lastFormState = mutatableState.lastFormState;\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n return returnValue;\n }\n };\n };\n var mutatorsApi = mutators ? Object.keys(mutators).reduce(function (result, key) {\n result[key] = getMutatorApi(key);\n return result;\n }, {}) : {};\n var runRecordLevelValidation = function runRecordLevelValidation(setErrors) {\n var promises = [];\n if (validate) {\n var errorsOrPromise = validate(_extends({}, state.formState.values)); // clone to avoid writing\n if (isPromise(errorsOrPromise)) {\n promises.push(errorsOrPromise.then(function (errors) {\n return setErrors(errors, true);\n }));\n } else {\n setErrors(errorsOrPromise, false);\n }\n }\n return promises;\n };\n var getValidators = function getValidators(field) {\n return Object.keys(field.validators).reduce(function (result, index) {\n var validator = field.validators[Number(index)]();\n if (validator) {\n result.push(validator);\n }\n return result;\n }, []);\n };\n var runFieldLevelValidation = function runFieldLevelValidation(field, setError) {\n var promises = [];\n var validators = getValidators(field);\n if (validators.length) {\n var error;\n validators.forEach(function (validator) {\n var errorOrPromise = validator(getIn(state.formState.values, field.name), state.formState.values, validator.length === 0 || validator.length === 3 ? publishFieldState(state.formState, state.fields[field.name]) : undefined);\n if (errorOrPromise && isPromise(errorOrPromise)) {\n field.validating = true;\n var promise = errorOrPromise.then(function (error) {\n if (state.fields[field.name]) {\n state.fields[field.name].validating = false;\n setError(error);\n }\n }); // errors must be resolved, not rejected\n promises.push(promise);\n } else if (!error) {\n // first registered validator wins\n error = errorOrPromise;\n }\n });\n setError(error);\n }\n return promises;\n };\n var runValidation = function runValidation(fieldChanged, callback) {\n if (validationPaused) {\n validationBlocked = true;\n callback();\n return;\n }\n var fields = state.fields,\n formState = state.formState;\n var safeFields = _extends({}, fields);\n var fieldKeys = Object.keys(safeFields);\n if (!validate && !fieldKeys.some(function (key) {\n return getValidators(safeFields[key]).length;\n })) {\n callback();\n return; // no validation rules\n }\n\n // pare down field keys to actually validate\n var limitedFieldLevelValidation = false;\n if (fieldChanged) {\n var changedField = safeFields[fieldChanged];\n if (changedField) {\n var validateFields = changedField.validateFields;\n if (validateFields) {\n limitedFieldLevelValidation = true;\n fieldKeys = validateFields.length ? validateFields.concat(fieldChanged) : [fieldChanged];\n }\n }\n }\n var recordLevelErrors = {};\n var asyncRecordLevelErrors = {};\n var fieldLevelErrors = {};\n var promises = [].concat(runRecordLevelValidation(function (errors, wasAsync) {\n if (wasAsync) {\n asyncRecordLevelErrors = errors || {};\n } else {\n recordLevelErrors = errors || {};\n }\n }), fieldKeys.reduce(function (result, name) {\n return result.concat(runFieldLevelValidation(fields[name], function (error) {\n fieldLevelErrors[name] = error;\n }));\n }, []));\n var hasAsyncValidations = promises.length > 0;\n var asyncValidationPromiseKey = ++nextAsyncValidationKey;\n var promise = Promise.all(promises).then(clearAsyncValidationPromise(asyncValidationPromiseKey));\n\n // backwards-compat: add promise to submit-blocking promises iff there are any promises to await\n if (hasAsyncValidations) {\n asyncValidationPromises[asyncValidationPromiseKey] = promise;\n }\n var processErrors = function processErrors(afterAsync) {\n var merged = _extends({}, limitedFieldLevelValidation ? formState.errors : {}, recordLevelErrors, afterAsync ? asyncRecordLevelErrors // new async errors\n : formState.asyncErrors);\n var forEachError = function forEachError(fn) {\n fieldKeys.forEach(function (name) {\n if (fields[name]) {\n // make sure field is still registered\n // field-level errors take precedent over record-level errors\n var recordLevelError = getIn(recordLevelErrors, name);\n var errorFromParent = getIn(merged, name);\n var hasFieldLevelValidation = getValidators(safeFields[name]).length;\n var fieldLevelError = fieldLevelErrors[name];\n fn(name, hasFieldLevelValidation && fieldLevelError || validate && recordLevelError || (!recordLevelError && !limitedFieldLevelValidation ? errorFromParent : undefined));\n }\n });\n };\n forEachError(function (name, error) {\n merged = setIn(merged, name, error) || {};\n });\n forEachError(function (name, error) {\n if (error && error[ARRAY_ERROR]) {\n var existing = getIn(merged, name);\n var copy = [].concat(existing);\n copy[ARRAY_ERROR] = error[ARRAY_ERROR];\n merged = setIn(merged, name, copy);\n }\n });\n if (!shallowEqual(formState.errors, merged)) {\n formState.errors = merged;\n }\n if (afterAsync) {\n formState.asyncErrors = asyncRecordLevelErrors;\n }\n formState.error = recordLevelErrors[FORM_ERROR];\n };\n if (hasAsyncValidations) {\n // async validations are running, ensure validating is true before notifying\n state.formState.validating++;\n callback();\n }\n\n // process sync errors\n processErrors(false);\n // sync errors have been set. notify listeners while we wait for others\n callback();\n if (hasAsyncValidations) {\n var afterPromise = function afterPromise() {\n state.formState.validating--;\n callback();\n // field async validation may affect formState validating\n // so force notifyFormListeners if validating is still 0 after callback finished\n // and lastFormState validating is true\n if (state.formState.validating === 0 && state.lastFormState.validating) {\n notifyFormListeners();\n }\n };\n promise.then(function () {\n if (nextAsyncValidationKey > asyncValidationPromiseKey) {\n // if this async validator has been superseded by another, ignore its results\n return;\n }\n processErrors(true);\n }).then(afterPromise, afterPromise);\n }\n };\n var notifyFieldListeners = function notifyFieldListeners(name) {\n if (inBatch) {\n return;\n }\n var fields = state.fields,\n fieldSubscribers = state.fieldSubscribers,\n formState = state.formState;\n var safeFields = _extends({}, fields);\n var notifyField = function notifyField(name) {\n var field = safeFields[name];\n var fieldState = publishFieldState(formState, field);\n var lastFieldState = field.lastFieldState;\n field.lastFieldState = fieldState;\n var fieldSubscriber = fieldSubscribers[name];\n if (fieldSubscriber) {\n notify(fieldSubscriber, fieldState, lastFieldState, filterFieldState, lastFieldState === undefined);\n }\n };\n if (name) {\n notifyField(name);\n } else {\n Object.keys(safeFields).forEach(notifyField);\n }\n };\n var markAllFieldsTouched = function markAllFieldsTouched() {\n Object.keys(state.fields).forEach(function (key) {\n state.fields[key].touched = true;\n });\n };\n var hasSyncErrors = function hasSyncErrors() {\n return !!(state.formState.error || hasAnyError(state.formState.errors));\n };\n var calculateNextFormState = function calculateNextFormState() {\n var fields = state.fields,\n formState = state.formState,\n lastFormState = state.lastFormState;\n var safeFields = _extends({}, fields);\n var safeFieldKeys = Object.keys(safeFields);\n\n // calculate dirty/pristine\n var foundDirty = false;\n var dirtyFields = safeFieldKeys.reduce(function (result, key) {\n var dirty = !safeFields[key].isEqual(getIn(formState.values, key), getIn(formState.initialValues || {}, key));\n if (dirty) {\n foundDirty = true;\n result[key] = true;\n }\n return result;\n }, {});\n var dirtyFieldsSinceLastSubmit = safeFieldKeys.reduce(function (result, key) {\n // istanbul ignore next\n var nonNullLastSubmittedValues = formState.lastSubmittedValues || {}; // || {} is for flow, but causes branch coverage complaint\n if (!safeFields[key].isEqual(getIn(formState.values, key), getIn(nonNullLastSubmittedValues, key))) {\n result[key] = true;\n }\n return result;\n }, {});\n formState.pristine = !foundDirty;\n formState.dirtySinceLastSubmit = !!(formState.lastSubmittedValues && Object.values(dirtyFieldsSinceLastSubmit).some(function (value) {\n return value;\n }));\n formState.modifiedSinceLastSubmit = !!(formState.lastSubmittedValues &&\n // Object.values would treat values as mixed (facebook/flow#2221)\n Object.keys(safeFields).some(function (value) {\n return safeFields[value].modifiedSinceLastSubmit;\n }));\n formState.valid = !formState.error && !formState.submitError && !hasAnyError(formState.errors) && !(formState.submitErrors && hasAnyError(formState.submitErrors));\n var nextFormState = convertToExternalFormState(formState);\n var _safeFieldKeys$reduce = safeFieldKeys.reduce(function (result, key) {\n result.modified[key] = safeFields[key].modified;\n result.touched[key] = safeFields[key].touched;\n result.visited[key] = safeFields[key].visited;\n return result;\n }, {\n modified: {},\n touched: {},\n visited: {}\n }),\n modified = _safeFieldKeys$reduce.modified,\n touched = _safeFieldKeys$reduce.touched,\n visited = _safeFieldKeys$reduce.visited;\n nextFormState.dirtyFields = lastFormState && shallowEqual(lastFormState.dirtyFields, dirtyFields) ? lastFormState.dirtyFields : dirtyFields;\n nextFormState.dirtyFieldsSinceLastSubmit = lastFormState && shallowEqual(lastFormState.dirtyFieldsSinceLastSubmit, dirtyFieldsSinceLastSubmit) ? lastFormState.dirtyFieldsSinceLastSubmit : dirtyFieldsSinceLastSubmit;\n nextFormState.modified = lastFormState && shallowEqual(lastFormState.modified, modified) ? lastFormState.modified : modified;\n nextFormState.touched = lastFormState && shallowEqual(lastFormState.touched, touched) ? lastFormState.touched : touched;\n nextFormState.visited = lastFormState && shallowEqual(lastFormState.visited, visited) ? lastFormState.visited : visited;\n return lastFormState && shallowEqual(lastFormState, nextFormState) ? lastFormState : nextFormState;\n };\n var callDebug = function callDebug() {\n return debug && \"development\" !== \"production\" && debug(calculateNextFormState(), Object.keys(state.fields).reduce(function (result, key) {\n result[key] = state.fields[key];\n return result;\n }, {}));\n };\n var notifying = false;\n var scheduleNotification = false;\n var notifyFormListeners = function notifyFormListeners() {\n if (notifying) {\n scheduleNotification = true;\n } else {\n notifying = true;\n callDebug();\n if (!inBatch && !(validationPaused && preventNotificationWhileValidationPaused)) {\n var lastFormState = state.lastFormState;\n var nextFormState = calculateNextFormState();\n if (nextFormState !== lastFormState) {\n state.lastFormState = nextFormState;\n notify(state.subscribers, nextFormState, lastFormState, filterFormState);\n }\n }\n notifying = false;\n if (scheduleNotification) {\n scheduleNotification = false;\n notifyFormListeners();\n }\n }\n };\n var beforeSubmit = function beforeSubmit() {\n return Object.keys(state.fields).some(function (name) {\n return state.fields[name].beforeSubmit && state.fields[name].beforeSubmit() === false;\n });\n };\n var afterSubmit = function afterSubmit() {\n return Object.keys(state.fields).forEach(function (name) {\n return state.fields[name].afterSubmit && state.fields[name].afterSubmit();\n });\n };\n var resetModifiedAfterSubmit = function resetModifiedAfterSubmit() {\n return Object.keys(state.fields).forEach(function (key) {\n return state.fields[key].modifiedSinceLastSubmit = false;\n });\n };\n\n // generate initial errors\n runValidation(undefined, function () {\n notifyFormListeners();\n });\n var api = {\n batch: function batch(fn) {\n inBatch++;\n fn();\n inBatch--;\n notifyFieldListeners();\n notifyFormListeners();\n },\n blur: function blur(name) {\n var fields = state.fields,\n formState = state.formState;\n var previous = fields[name];\n if (previous) {\n // can only blur registered fields\n delete formState.active;\n fields[name] = _extends({}, previous, {\n active: false,\n touched: true\n });\n if (validateOnBlur) {\n runValidation(name, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n } else {\n notifyFieldListeners();\n notifyFormListeners();\n }\n }\n },\n change: function change(name, value) {\n var fields = state.fields,\n formState = state.formState;\n if (getIn(formState.values, name) !== value) {\n changeValue(state, name, function () {\n return value;\n });\n var previous = fields[name];\n if (previous) {\n // only track modified for registered fields\n fields[name] = _extends({}, previous, {\n modified: true,\n modifiedSinceLastSubmit: !!formState.lastSubmittedValues\n });\n }\n if (validateOnBlur) {\n notifyFieldListeners();\n notifyFormListeners();\n } else {\n runValidation(name, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n }\n }\n },\n get destroyOnUnregister() {\n return !!destroyOnUnregister;\n },\n set destroyOnUnregister(value) {\n destroyOnUnregister = value;\n },\n focus: function focus(name) {\n var field = state.fields[name];\n if (field && !field.active) {\n state.formState.active = name;\n field.active = true;\n field.visited = true;\n notifyFieldListeners();\n notifyFormListeners();\n }\n },\n mutators: mutatorsApi,\n getFieldState: function getFieldState(name) {\n var field = state.fields[name];\n return field && field.lastFieldState;\n },\n getRegisteredFields: function getRegisteredFields() {\n return Object.keys(state.fields);\n },\n getState: function getState() {\n return calculateNextFormState();\n },\n initialize: function initialize(data) {\n var fields = state.fields,\n formState = state.formState;\n var safeFields = _extends({}, fields);\n var values = typeof data === \"function\" ? data(formState.values) : data;\n if (!keepDirtyOnReinitialize) {\n formState.values = values;\n }\n /**\n * Hello, inquisitive code reader! Thanks for taking the time to dig in!\n *\n * The following code is the way it is to allow for non-registered deep\n * field values to be set via initialize()\n */\n\n // save dirty values\n var savedDirtyValues = keepDirtyOnReinitialize ? Object.keys(safeFields).reduce(function (result, key) {\n var field = safeFields[key];\n var pristine = field.isEqual(getIn(formState.values, key), getIn(formState.initialValues || {}, key));\n if (!pristine) {\n result[key] = getIn(formState.values, key);\n }\n return result;\n }, {}) : {};\n // update initalValues and values\n formState.initialValues = values;\n formState.values = values;\n // restore the dirty values\n Object.keys(savedDirtyValues).forEach(function (key) {\n formState.values = setIn(formState.values, key, savedDirtyValues[key]) || {};\n });\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n },\n isValidationPaused: function isValidationPaused() {\n return validationPaused;\n },\n pauseValidation: function pauseValidation(preventNotification) {\n if (preventNotification === void 0) {\n preventNotification = true;\n }\n validationPaused = true;\n preventNotificationWhileValidationPaused = preventNotification;\n },\n registerField: function registerField(name, subscriber, subscription, fieldConfig) {\n if (subscription === void 0) {\n subscription = {};\n }\n if (!state.fieldSubscribers[name]) {\n state.fieldSubscribers[name] = {\n index: 0,\n entries: {}\n };\n }\n var index = state.fieldSubscribers[name].index++;\n\n // save field subscriber callback\n state.fieldSubscribers[name].entries[index] = {\n subscriber: memoize(subscriber),\n subscription: subscription,\n notified: false\n };\n\n // create initial field state if not exists\n var field = state.fields[name] || {\n active: false,\n afterSubmit: fieldConfig && fieldConfig.afterSubmit,\n beforeSubmit: fieldConfig && fieldConfig.beforeSubmit,\n data: fieldConfig && fieldConfig.data || {},\n isEqual: fieldConfig && fieldConfig.isEqual || tripleEquals,\n lastFieldState: undefined,\n modified: false,\n modifiedSinceLastSubmit: false,\n name: name,\n touched: false,\n valid: true,\n validateFields: fieldConfig && fieldConfig.validateFields,\n validators: {},\n validating: false,\n visited: false\n };\n // Mutators can create a field in order to keep the field states\n // We must update this field when registerField is called afterwards\n field.blur = field.blur || function () {\n return api.blur(name);\n };\n field.change = field.change || function (value) {\n return api.change(name, value);\n };\n field.focus = field.focus || function () {\n return api.focus(name);\n };\n state.fields[name] = field;\n var haveValidator = false;\n var silent = fieldConfig && fieldConfig.silent;\n var notify = function notify() {\n if (silent && state.fields[name]) {\n notifyFieldListeners(name);\n } else {\n notifyFormListeners();\n notifyFieldListeners();\n }\n };\n if (fieldConfig) {\n haveValidator = !!(fieldConfig.getValidator && fieldConfig.getValidator());\n if (fieldConfig.getValidator) {\n state.fields[name].validators[index] = fieldConfig.getValidator;\n }\n var noValueInFormState = getIn(state.formState.values, name) === undefined;\n if (fieldConfig.initialValue !== undefined && (noValueInFormState || getIn(state.formState.values, name) === getIn(state.formState.initialValues, name))\n // only initialize if we don't yet have any value for this field\n ) {\n state.formState.initialValues = setIn(state.formState.initialValues || {}, name, fieldConfig.initialValue);\n state.formState.values = setIn(state.formState.values, name, fieldConfig.initialValue);\n runValidation(undefined, notify);\n }\n\n // only use defaultValue if we don't yet have any value for this field\n if (fieldConfig.defaultValue !== undefined && fieldConfig.initialValue === undefined && getIn(state.formState.initialValues, name) === undefined && noValueInFormState) {\n state.formState.values = setIn(state.formState.values, name, fieldConfig.defaultValue);\n }\n }\n if (haveValidator) {\n runValidation(undefined, notify);\n } else {\n notify();\n }\n return function () {\n var validatorRemoved = false;\n // istanbul ignore next\n if (state.fields[name]) {\n // state.fields[name] may have been removed by a mutator\n validatorRemoved = !!(state.fields[name].validators[index] && state.fields[name].validators[index]());\n delete state.fields[name].validators[index];\n }\n var hasFieldSubscribers = !!state.fieldSubscribers[name];\n if (hasFieldSubscribers) {\n // state.fieldSubscribers[name] may have been removed by a mutator\n delete state.fieldSubscribers[name].entries[index];\n }\n var lastOne = hasFieldSubscribers && !Object.keys(state.fieldSubscribers[name].entries).length;\n if (lastOne) {\n delete state.fieldSubscribers[name];\n delete state.fields[name];\n if (validatorRemoved) {\n state.formState.errors = setIn(state.formState.errors, name, undefined) || {};\n }\n if (destroyOnUnregister) {\n state.formState.values = setIn(state.formState.values, name, undefined, true) || {};\n }\n }\n if (!silent) {\n if (validatorRemoved) {\n runValidation(undefined, function () {\n notifyFormListeners();\n notifyFieldListeners();\n });\n } else if (lastOne) {\n // values or errors may have changed\n notifyFormListeners();\n }\n }\n };\n },\n reset: function reset(initialValues) {\n if (initialValues === void 0) {\n initialValues = state.formState.initialValues;\n }\n if (state.formState.submitting) {\n state.formState.resetWhileSubmitting = true;\n }\n state.formState.submitFailed = false;\n state.formState.submitSucceeded = false;\n delete state.formState.submitError;\n delete state.formState.submitErrors;\n delete state.formState.lastSubmittedValues;\n api.initialize(initialValues || {});\n },\n /**\n * Resets all field flags (e.g. touched, visited, etc.) to their initial state\n */\n resetFieldState: function resetFieldState(name) {\n state.fields[name] = _extends({}, state.fields[name], {\n active: false,\n lastFieldState: undefined,\n modified: false,\n touched: false,\n valid: true,\n validating: false,\n visited: false\n });\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n },\n /**\n * Returns the form to a clean slate; that is:\n * - Clear all values\n * - Resets all fields to their initial state\n */\n restart: function restart(initialValues) {\n if (initialValues === void 0) {\n initialValues = state.formState.initialValues;\n }\n api.batch(function () {\n for (var name in state.fields) {\n api.resetFieldState(name);\n state.fields[name] = _extends({}, state.fields[name], {\n active: false,\n lastFieldState: undefined,\n modified: false,\n modifiedSinceLastSubmit: false,\n touched: false,\n valid: true,\n validating: false,\n visited: false\n });\n }\n api.reset(initialValues);\n });\n },\n resumeValidation: function resumeValidation() {\n validationPaused = false;\n preventNotificationWhileValidationPaused = false;\n if (validationBlocked) {\n // validation was attempted while it was paused, so run it now\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n }\n validationBlocked = false;\n },\n setConfig: function setConfig(name, value) {\n switch (name) {\n case \"debug\":\n debug = value;\n break;\n case \"destroyOnUnregister\":\n destroyOnUnregister = value;\n break;\n case \"initialValues\":\n api.initialize(value);\n break;\n case \"keepDirtyOnReinitialize\":\n keepDirtyOnReinitialize = value;\n break;\n case \"mutators\":\n mutators = value;\n if (value) {\n Object.keys(mutatorsApi).forEach(function (key) {\n if (!(key in value)) {\n delete mutatorsApi[key];\n }\n });\n Object.keys(value).forEach(function (key) {\n mutatorsApi[key] = getMutatorApi(key);\n });\n } else {\n Object.keys(mutatorsApi).forEach(function (key) {\n delete mutatorsApi[key];\n });\n }\n break;\n case \"onSubmit\":\n onSubmit = value;\n break;\n case \"validate\":\n validate = value;\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n break;\n case \"validateOnBlur\":\n validateOnBlur = value;\n break;\n default:\n throw new Error(\"Unrecognised option \" + name);\n }\n },\n submit: function submit() {\n var formState = state.formState;\n if (formState.submitting) {\n return;\n }\n delete formState.submitErrors;\n delete formState.submitError;\n formState.lastSubmittedValues = _extends({}, formState.values);\n if (hasSyncErrors()) {\n markAllFieldsTouched();\n resetModifiedAfterSubmit();\n state.formState.submitFailed = true;\n notifyFormListeners();\n notifyFieldListeners();\n return; // no submit for you!!\n }\n\n var asyncValidationPromisesKeys = Object.keys(asyncValidationPromises);\n if (asyncValidationPromisesKeys.length) {\n // still waiting on async validation to complete...\n Promise.all(asyncValidationPromisesKeys.map(function (key) {\n return asyncValidationPromises[Number(key)];\n })).then(api.submit, console.error);\n return;\n }\n var submitIsBlocked = beforeSubmit();\n if (submitIsBlocked) {\n return;\n }\n var resolvePromise;\n var completeCalled = false;\n var complete = function complete(errors) {\n formState.submitting = false;\n var resetWhileSubmitting = formState.resetWhileSubmitting;\n if (resetWhileSubmitting) {\n formState.resetWhileSubmitting = false;\n }\n if (errors && hasAnyError(errors)) {\n formState.submitFailed = true;\n formState.submitSucceeded = false;\n formState.submitErrors = errors;\n formState.submitError = errors[FORM_ERROR];\n markAllFieldsTouched();\n } else {\n if (!resetWhileSubmitting) {\n formState.submitFailed = false;\n formState.submitSucceeded = true;\n }\n afterSubmit();\n }\n notifyFormListeners();\n notifyFieldListeners();\n completeCalled = true;\n if (resolvePromise) {\n resolvePromise(errors);\n }\n return errors;\n };\n formState.submitting = true;\n formState.submitFailed = false;\n formState.submitSucceeded = false;\n formState.lastSubmittedValues = _extends({}, formState.values);\n resetModifiedAfterSubmit();\n\n // onSubmit is either sync, callback or async with a Promise\n var result = onSubmit(formState.values, api, complete);\n if (!completeCalled) {\n if (result && isPromise(result)) {\n // onSubmit is async with a Promise\n notifyFormListeners(); // let everyone know we are submitting\n notifyFieldListeners(); // notify fields also\n return result.then(complete, function (error) {\n complete();\n throw error;\n });\n } else if (onSubmit.length >= 3) {\n // must be async, so we should return a Promise\n notifyFormListeners(); // let everyone know we are submitting\n notifyFieldListeners(); // notify fields also\n return new Promise(function (resolve) {\n resolvePromise = resolve;\n });\n } else {\n // onSubmit is sync\n complete(result);\n }\n }\n },\n subscribe: function subscribe(subscriber, subscription) {\n if (!subscriber) {\n throw new Error(\"No callback given.\");\n }\n if (!subscription) {\n throw new Error(\"No subscription provided. What values do you want to listen to?\");\n }\n var memoized = memoize(subscriber);\n var subscribers = state.subscribers;\n var index = subscribers.index++;\n subscribers.entries[index] = {\n subscriber: memoized,\n subscription: subscription,\n notified: false\n };\n var nextFormState = calculateNextFormState();\n notifySubscriber(memoized, subscription, nextFormState, nextFormState, filterFormState, true);\n return function () {\n delete subscribers.entries[index];\n };\n }\n };\n return api;\n}\n\nexport { ARRAY_ERROR, FORM_ERROR, configOptions, createForm, fieldSubscriptionItems, formSubscriptionItems, getIn, setIn, version };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport * as React from 'react';\nimport React__default from 'react';\nimport { formSubscriptionItems, createForm, version as version$1, fieldSubscriptionItems } from 'final-form';\n\nvar _excluded$3 = [\"render\", \"children\", \"component\"];\n// shared logic between components that use either render prop,\n// children render function, or component prop\nfunction renderComponent(props, lazyProps, name) {\n var render = props.render,\n children = props.children,\n component = props.component,\n rest = _objectWithoutPropertiesLoose(props, _excluded$3);\n\n if (component) {\n return /*#__PURE__*/React.createElement(component, Object.assign(lazyProps, rest, {\n children: children,\n render: render\n }));\n }\n\n if (render) {\n return render(children === undefined ? Object.assign(lazyProps, rest) : // inject children back in\n Object.assign(lazyProps, rest, {\n children: children\n }));\n }\n\n if (typeof children !== \"function\") {\n throw new Error(\"Must specify either a render prop, a render function as children, or a component prop to \" + name);\n }\n\n return children(Object.assign(lazyProps, rest));\n}\n\nfunction useWhenValueChanges(value, callback, isEqual) {\n if (isEqual === void 0) {\n isEqual = function isEqual(a, b) {\n return a === b;\n };\n }\n\n var previous = React__default.useRef(value);\n React__default.useEffect(function () {\n if (!isEqual(value, previous.current)) {\n callback();\n previous.current = value;\n }\n });\n}\n\n/**\n * A simple hook to create a constant value that lives for\n * the lifetime of the component.\n *\n * Plagiarized from https://github.com/Andarist/use-constant\n *\n * Do NOT reuse this code unless you know what you're doing.\n * Use Andarist's hook; it's more fault tolerant to things like\n * falsy values.\n *\n * @param {Function} init - A function to generate the value\n */\n\nfunction useConstant(init) {\n var ref = React__default.useRef();\n\n if (!ref.current) {\n ref.current = init();\n }\n\n return ref.current;\n}\n\nvar shallowEqual = function shallowEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== \"object\" || !a || typeof b !== \"object\" || !b) {\n return false;\n }\n\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(b);\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key) || a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n};\n\nvar isSyntheticEvent = function isSyntheticEvent(candidate) {\n return !!(candidate && typeof candidate.stopPropagation === \"function\");\n};\n\nvar ReactFinalFormContext = /*#__PURE__*/React.createContext();\n\nfunction useLatest(value) {\n var ref = React__default.useRef(value);\n React__default.useEffect(function () {\n ref.current = value;\n });\n return ref;\n}\n\nvar version = \"6.5.8\";\n\nvar addLazyState = function addLazyState(dest, state, keys) {\n keys.forEach(function (key) {\n Object.defineProperty(dest, key, {\n get: function get() {\n return state[key];\n },\n enumerable: true\n });\n });\n};\n\nvar addLazyFormState = function addLazyFormState(dest, state) {\n return addLazyState(dest, state, [\"active\", \"dirty\", \"dirtyFields\", \"dirtySinceLastSubmit\", \"dirtyFieldsSinceLastSubmit\", \"error\", \"errors\", \"hasSubmitErrors\", \"hasValidationErrors\", \"initialValues\", \"invalid\", \"modified\", \"modifiedSinceLastSubmit\", \"pristine\", \"submitError\", \"submitErrors\", \"submitFailed\", \"submitSucceeded\", \"submitting\", \"touched\", \"valid\", \"validating\", \"values\", \"visited\"]);\n};\nvar addLazyFieldMetaState = function addLazyFieldMetaState(dest, state) {\n return addLazyState(dest, state, [\"active\", \"data\", \"dirty\", \"dirtySinceLastSubmit\", \"error\", \"initial\", \"invalid\", \"length\", \"modified\", \"modifiedSinceLastSubmit\", \"pristine\", \"submitError\", \"submitFailed\", \"submitSucceeded\", \"submitting\", \"touched\", \"valid\", \"validating\", \"visited\"]);\n};\n\nvar _excluded$2 = [\"debug\", \"decorators\", \"destroyOnUnregister\", \"form\", \"initialValues\", \"initialValuesEqual\", \"keepDirtyOnReinitialize\", \"mutators\", \"onSubmit\", \"subscription\", \"validate\", \"validateOnBlur\"];\nvar versions = {\n \"final-form\": version$1,\n \"react-final-form\": version\n};\nvar all$1 = formSubscriptionItems.reduce(function (result, key) {\n result[key] = true;\n return result;\n}, {});\n\nfunction ReactFinalForm(_ref) {\n var debug = _ref.debug,\n _ref$decorators = _ref.decorators,\n decorators = _ref$decorators === void 0 ? [] : _ref$decorators,\n destroyOnUnregister = _ref.destroyOnUnregister,\n alternateFormApi = _ref.form,\n initialValues = _ref.initialValues,\n initialValuesEqual = _ref.initialValuesEqual,\n keepDirtyOnReinitialize = _ref.keepDirtyOnReinitialize,\n mutators = _ref.mutators,\n onSubmit = _ref.onSubmit,\n _ref$subscription = _ref.subscription,\n subscription = _ref$subscription === void 0 ? all$1 : _ref$subscription,\n validate = _ref.validate,\n validateOnBlur = _ref.validateOnBlur,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n var config = {\n debug: debug,\n destroyOnUnregister: destroyOnUnregister,\n initialValues: initialValues,\n keepDirtyOnReinitialize: keepDirtyOnReinitialize,\n mutators: mutators,\n onSubmit: onSubmit,\n validate: validate,\n validateOnBlur: validateOnBlur\n };\n var form = useConstant(function () {\n var f = alternateFormApi || createForm(config); // pause validation until children register all fields on first render (unpaused in useEffect() below)\n\n f.pauseValidation();\n return f;\n }); // synchronously register and unregister to query form state for our subscription on first render\n\n var _React$useState = React.useState(function () {\n var initialState = {};\n form.subscribe(function (state) {\n initialState = state;\n }, subscription)();\n return initialState;\n }),\n state = _React$useState[0],\n setState = _React$useState[1]; // save a copy of state that can break through the closure\n // on the shallowEqual() line below.\n\n\n var stateRef = useLatest(state);\n React.useEffect(function () {\n // We have rendered, so all fields are now registered, so we can unpause validation\n form.isValidationPaused() && form.resumeValidation();\n var unsubscriptions = [form.subscribe(function (s) {\n if (!shallowEqual(s, stateRef.current)) {\n setState(s);\n }\n }, subscription)].concat(decorators ? decorators.map(function (decorator) {\n return (// this noop ternary is to appease the flow gods\n // istanbul ignore next\n decorator(form)\n );\n }) : []);\n return function () {\n form.pauseValidation(); // pause validation so we don't revalidate on every field deregistration\n\n unsubscriptions.reverse().forEach(function (unsubscribe) {\n return unsubscribe();\n }); // don't need to resume validation here; either unmounting, or will re-run this hook with new deps\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, decorators); // warn about decorator changes\n // istanbul ignore next\n\n if (process.env.NODE_ENV !== \"production\") {\n // You're never supposed to use hooks inside a conditional, but in this\n // case we can be certain that you're not going to be changing your\n // NODE_ENV between renders, so this is safe.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useWhenValueChanges(decorators, function () {\n console.error(\"Form decorators should not change from one render to the next as new values will be ignored\");\n }, shallowEqual);\n } // allow updatable config\n\n\n useWhenValueChanges(debug, function () {\n form.setConfig(\"debug\", debug);\n });\n useWhenValueChanges(destroyOnUnregister, function () {\n form.destroyOnUnregister = !!destroyOnUnregister;\n });\n useWhenValueChanges(keepDirtyOnReinitialize, function () {\n form.setConfig(\"keepDirtyOnReinitialize\", keepDirtyOnReinitialize);\n });\n useWhenValueChanges(initialValues, function () {\n form.setConfig(\"initialValues\", initialValues);\n }, initialValuesEqual || shallowEqual);\n useWhenValueChanges(mutators, function () {\n form.setConfig(\"mutators\", mutators);\n });\n useWhenValueChanges(onSubmit, function () {\n form.setConfig(\"onSubmit\", onSubmit);\n });\n useWhenValueChanges(validate, function () {\n form.setConfig(\"validate\", validate);\n });\n useWhenValueChanges(validateOnBlur, function () {\n form.setConfig(\"validateOnBlur\", validateOnBlur);\n });\n\n var handleSubmit = function handleSubmit(event) {\n if (event) {\n // sometimes not true, e.g. React Native\n if (typeof event.preventDefault === \"function\") {\n event.preventDefault();\n }\n\n if (typeof event.stopPropagation === \"function\") {\n // prevent any outer forms from receiving the event too\n event.stopPropagation();\n }\n }\n\n return form.submit();\n };\n\n var renderProps = {\n form: _extends({}, form, {\n reset: function reset(eventOrValues) {\n if (isSyntheticEvent(eventOrValues)) {\n // it's a React SyntheticEvent, call reset with no arguments\n form.reset();\n } else {\n form.reset(eventOrValues);\n }\n }\n }),\n handleSubmit: handleSubmit\n };\n addLazyFormState(renderProps, state);\n return /*#__PURE__*/React.createElement(ReactFinalFormContext.Provider, {\n value: form\n }, renderComponent(_extends({}, rest, {\n __versions: versions\n }), renderProps, \"ReactFinalForm\"));\n}\n\nfunction useForm(componentName) {\n var form = React.useContext(ReactFinalFormContext);\n\n if (!form) {\n throw new Error((componentName || \"useForm\") + \" must be used inside of a
      component\");\n }\n\n return form;\n}\n\nfunction useFormState(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n onChange = _ref.onChange,\n _ref$subscription = _ref.subscription,\n subscription = _ref$subscription === void 0 ? all$1 : _ref$subscription;\n\n var form = useForm(\"useFormState\");\n var firstRender = React.useRef(true);\n var onChangeRef = React.useRef(onChange);\n onChangeRef.current = onChange; // synchronously register and unregister to query field state for our subscription on first render\n\n var _React$useState = React.useState(function () {\n var initialState = {};\n form.subscribe(function (state) {\n initialState = state;\n }, subscription)();\n\n if (onChange) {\n onChange(initialState);\n }\n\n return initialState;\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n React.useEffect(function () {\n return form.subscribe(function (newState) {\n if (firstRender.current) {\n firstRender.current = false;\n } else {\n setState(newState);\n\n if (onChangeRef.current) {\n onChangeRef.current(newState);\n }\n }\n }, subscription);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n var lazyState = {};\n addLazyFormState(lazyState, state);\n return lazyState;\n}\n\nvar _excluded$1 = [\"onChange\", \"subscription\"];\n\nfunction FormSpy(_ref) {\n var onChange = _ref.onChange,\n subscription = _ref.subscription,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n var reactFinalForm = useForm(\"FormSpy\");\n var state = useFormState({\n onChange: onChange,\n subscription: subscription\n });\n\n if (onChange) {\n return null;\n }\n\n var renderProps = {\n form: _extends({}, reactFinalForm, {\n reset: function reset(eventOrValues) {\n if (isSyntheticEvent(eventOrValues)) {\n // it's a React SyntheticEvent, call reset with no arguments\n reactFinalForm.reset();\n } else {\n reactFinalForm.reset(eventOrValues);\n }\n }\n })\n };\n return renderComponent(_extends({}, rest, renderProps), state, \"FormSpy\");\n}\n\nvar isReactNative = typeof window !== \"undefined\" && window.navigator && window.navigator.product && window.navigator.product === \"ReactNative\";\n\nvar getSelectedValues = function getSelectedValues(options) {\n var result = [];\n\n if (options) {\n for (var index = 0; index < options.length; index++) {\n var option = options[index];\n\n if (option.selected) {\n result.push(option.value);\n }\n }\n }\n\n return result;\n};\n\nvar getValue = function getValue(event, currentValue, valueProp, isReactNative) {\n if (!isReactNative && event.nativeEvent && event.nativeEvent.text !== undefined) {\n return event.nativeEvent.text;\n }\n\n if (isReactNative && event.nativeEvent) {\n return event.nativeEvent.text;\n }\n\n var detypedEvent = event;\n var _detypedEvent$target = detypedEvent.target,\n type = _detypedEvent$target.type,\n value = _detypedEvent$target.value,\n checked = _detypedEvent$target.checked;\n\n switch (type) {\n case \"checkbox\":\n if (valueProp !== undefined) {\n // we are maintaining an array, not just a boolean\n if (checked) {\n // add value to current array value\n return Array.isArray(currentValue) ? currentValue.concat(valueProp) : [valueProp];\n } else {\n // remove value from current array value\n if (!Array.isArray(currentValue)) {\n return currentValue;\n }\n\n var index = currentValue.indexOf(valueProp);\n\n if (index < 0) {\n return currentValue;\n } else {\n return currentValue.slice(0, index).concat(currentValue.slice(index + 1));\n }\n }\n } else {\n // it's just a boolean\n return !!checked;\n }\n\n case \"select-multiple\":\n return getSelectedValues(event.target.options);\n\n default:\n return value;\n }\n};\n\n/**\n * Creates a callback, even with closures, that will be\n * instance === for the lifetime of the component, always\n * calling the most recent version of the function and its\n * closures.\n */\n\nfunction useConstantCallback(callback) {\n var ref = React.useRef(callback);\n React.useEffect(function () {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return ref.current.apply(null, args);\n }, []);\n}\n\nvar all = fieldSubscriptionItems.reduce(function (result, key) {\n result[key] = true;\n return result;\n}, {});\n\nvar defaultFormat = function defaultFormat(value, name) {\n return value === undefined ? \"\" : value;\n};\n\nvar defaultParse = function defaultParse(value, name) {\n return value === \"\" ? undefined : value;\n};\n\nvar defaultIsEqual = function defaultIsEqual(a, b) {\n return a === b;\n};\n\nfunction useField(name, config) {\n if (config === void 0) {\n config = {};\n }\n\n var _config = config,\n afterSubmit = _config.afterSubmit,\n allowNull = _config.allowNull,\n component = _config.component,\n data = _config.data,\n defaultValue = _config.defaultValue,\n _config$format = _config.format,\n format = _config$format === void 0 ? defaultFormat : _config$format,\n formatOnBlur = _config.formatOnBlur,\n initialValue = _config.initialValue,\n multiple = _config.multiple,\n _config$parse = _config.parse,\n parse = _config$parse === void 0 ? defaultParse : _config$parse,\n _config$subscription = _config.subscription,\n subscription = _config$subscription === void 0 ? all : _config$subscription,\n type = _config.type,\n validateFields = _config.validateFields,\n _value = _config.value;\n var form = useForm(\"useField\");\n var configRef = useLatest(config);\n\n var register = function register(callback, silent) {\n return (// avoid using `state` const in any closures created inside `register`\n // because they would refer `state` from current execution context\n // whereas actual `state` would defined in the subsequent `useField` hook\n // execution\n // (that would be caused by `setState` call performed in `register` callback)\n form.registerField(name, callback, subscription, {\n afterSubmit: afterSubmit,\n beforeSubmit: function beforeSubmit() {\n var _configRef$current = configRef.current,\n beforeSubmit = _configRef$current.beforeSubmit,\n formatOnBlur = _configRef$current.formatOnBlur,\n _configRef$current$fo = _configRef$current.format,\n format = _configRef$current$fo === void 0 ? defaultFormat : _configRef$current$fo;\n\n if (formatOnBlur) {\n var _ref = form.getFieldState(name),\n value = _ref.value;\n\n var formatted = format(value, name);\n\n if (formatted !== value) {\n form.change(name, formatted);\n }\n }\n\n return beforeSubmit && beforeSubmit();\n },\n data: data,\n defaultValue: defaultValue,\n getValidator: function getValidator() {\n return configRef.current.validate;\n },\n initialValue: initialValue,\n isEqual: function isEqual(a, b) {\n return (configRef.current.isEqual || defaultIsEqual)(a, b);\n },\n silent: silent,\n validateFields: validateFields\n })\n );\n };\n\n var firstRender = React.useRef(true); // synchronously register and unregister to query field state for our subscription on first render\n\n var _React$useState = React.useState(function () {\n var initialState = {}; // temporarily disable destroyOnUnregister\n\n // temporarily disable destroyOnUnregister\n var destroyOnUnregister = form.destroyOnUnregister;\n form.destroyOnUnregister = false;\n register(function (state) {\n initialState = state;\n }, true)(); // return destroyOnUnregister to its original value\n\n // return destroyOnUnregister to its original value\n form.destroyOnUnregister = destroyOnUnregister;\n return initialState;\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n React.useEffect(function () {\n return register(function (state) {\n if (firstRender.current) {\n firstRender.current = false;\n } else {\n setState(state);\n }\n }, false);\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [name, data, defaultValue, // If we want to allow inline fat-arrow field-level validation functions, we\n // cannot reregister field every time validate function !==.\n // validate,\n initialValue // The validateFields array is often passed as validateFields={[]}, creating\n // a !== new array every time. If it needs to be changed, a rerender/reregister\n // can be forced by changing the key prop\n // validateFields\n ]);\n var meta = {};\n addLazyFieldMetaState(meta, state);\n var input = {\n name: name,\n\n get value() {\n var value = state.value;\n\n if (formatOnBlur) {\n if (component === \"input\") {\n value = defaultFormat(value);\n }\n } else {\n value = format(value, name);\n }\n\n if (value === null && !allowNull) {\n value = \"\";\n }\n\n if (type === \"checkbox\" || type === \"radio\") {\n return _value;\n } else if (component === \"select\" && multiple) {\n return value || [];\n }\n\n return value;\n },\n\n get checked() {\n var value = state.value;\n\n if (type === \"checkbox\") {\n value = format(value, name);\n\n if (_value === undefined) {\n return !!value;\n } else {\n return !!(Array.isArray(value) && ~value.indexOf(_value));\n }\n } else if (type === \"radio\") {\n return format(value, name) === _value;\n }\n\n return undefined;\n },\n\n onBlur: useConstantCallback(function (event) {\n state.blur();\n\n if (formatOnBlur) {\n /**\n * Here we must fetch the value directly from Final Form because we cannot\n * trust that our `state` closure has the most recent value. This is a problem\n * if-and-only-if the library consumer has called `onChange()` immediately\n * before calling `onBlur()`, but before the field has had a chance to receive\n * the value update from Final Form.\n */\n var fieldState = form.getFieldState(state.name);\n state.change(format(fieldState.value, state.name));\n }\n }),\n onChange: useConstantCallback(function (event) {\n // istanbul ignore next\n if (process.env.NODE_ENV !== \"production\" && event && event.target) {\n var targetType = event.target.type;\n var unknown = ~[\"checkbox\", \"radio\", \"select-multiple\"].indexOf(targetType) && !type && component !== \"select\";\n\n var _value2 = targetType === \"select-multiple\" ? state.value : _value;\n\n if (unknown) {\n console.error(\"You must pass `type=\\\"\" + (targetType === \"select-multiple\" ? \"select\" : targetType) + \"\\\"` prop to your Field(\" + name + \") component.\\n\" + (\"Without it we don't know how to unpack your `value` prop - \" + (Array.isArray(_value2) ? \"[\" + _value2 + \"]\" : \"\\\"\" + _value2 + \"\\\"\") + \".\"));\n }\n }\n\n var value = event && event.target ? getValue(event, state.value, _value, isReactNative) : event;\n state.change(parse(value, name));\n }),\n onFocus: useConstantCallback(function (event) {\n return state.focus();\n })\n };\n\n if (multiple) {\n input.multiple = multiple;\n }\n\n if (type !== undefined) {\n input.type = type;\n }\n\n var renderProps = {\n input: input,\n meta: meta\n }; // assign to force Flow check\n\n return renderProps;\n}\n\nvar _excluded = [\"afterSubmit\", \"allowNull\", \"beforeSubmit\", \"children\", \"component\", \"data\", \"defaultValue\", \"format\", \"formatOnBlur\", \"initialValue\", \"isEqual\", \"multiple\", \"name\", \"parse\", \"subscription\", \"type\", \"validate\", \"validateFields\", \"value\"];\nvar Field = /*#__PURE__*/React.forwardRef(function Field(_ref, ref) {\n var afterSubmit = _ref.afterSubmit,\n allowNull = _ref.allowNull,\n beforeSubmit = _ref.beforeSubmit,\n children = _ref.children,\n component = _ref.component,\n data = _ref.data,\n defaultValue = _ref.defaultValue,\n format = _ref.format,\n formatOnBlur = _ref.formatOnBlur,\n initialValue = _ref.initialValue,\n isEqual = _ref.isEqual,\n multiple = _ref.multiple,\n name = _ref.name,\n parse = _ref.parse,\n subscription = _ref.subscription,\n type = _ref.type,\n validate = _ref.validate,\n validateFields = _ref.validateFields,\n value = _ref.value,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n var field = useField(name, {\n afterSubmit: afterSubmit,\n allowNull: allowNull,\n beforeSubmit: beforeSubmit,\n children: children,\n component: component,\n data: data,\n defaultValue: defaultValue,\n format: format,\n formatOnBlur: formatOnBlur,\n initialValue: initialValue,\n isEqual: isEqual,\n multiple: multiple,\n parse: parse,\n subscription: subscription,\n type: type,\n validate: validate,\n validateFields: validateFields,\n value: value\n });\n\n if (typeof children === \"function\") {\n return children(_extends({}, field, rest));\n }\n\n if (typeof component === \"string\") {\n // ignore meta, combine input with any other props\n return /*#__PURE__*/React.createElement(component, _extends({}, field.input, {\n children: children,\n ref: ref\n }, rest));\n }\n\n if (!name) {\n throw new Error(\"prop name cannot be undefined in component\");\n }\n\n return renderComponent(_extends({\n children: children,\n component: component,\n ref: ref\n }, rest), field, \"Field(\" + name + \")\");\n});\n\nfunction withTypes() {\n return {\n Form: ReactFinalForm,\n FormSpy: FormSpy\n };\n}\n\nexport { Field, ReactFinalForm as Form, FormSpy, useField, useForm, useFormState, version, withTypes };\n","'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\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * A React component for the font-awesome icon library.\n *\n * @param {String} [ariaLabel] An extra accessibility label to put on the icon\n * @param {Boolean} [border=false] Whether or not to show a border radius\n * @param {String} [className] An extra set of CSS classes to add to the component\n * @param {Object} [cssModule] Option to pass FontAwesome CSS as a module\n * @param {Boolean} [fixedWidth=false] Make buttons fixed width\n * @param {String} [flip=false] Flip the icon's orientation.\n * @param {Boolean} [inverse=false] Inverse the icon's color\n * @param {String} [name] Name of the icon to use\n * @param {Boolean} [pulse=false] Rotate icon with 8 steps, rather than smoothly\n * @param {Number} [rotate] The degress to rotate the icon by\n * @param {String} [size] The icon scaling size\n * @param {Boolean} [spin=false] Spin the icon\n * @param {String} [stack] Stack an icon on top of another. Arguments specify z-index such as '1x' See documentation for example http://fontawesome.io/examples/#stacked\n * @param {String} [tag=span] The HTML tag to use as a string, eg 'i' or 'em'\n * @module FontAwesome\n * @type {ReactClass}\n */\nvar FontAwesome = function (_React$Component) {\n _inherits(FontAwesome, _React$Component);\n\n function FontAwesome() {\n _classCallCheck(this, FontAwesome);\n\n var _this = _possibleConstructorReturn(this, (FontAwesome.__proto__ || Object.getPrototypeOf(FontAwesome)).call(this));\n\n _this.displayName = 'FontAwesome';\n return _this;\n }\n\n _createClass(FontAwesome, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n border = _props.border,\n cssModule = _props.cssModule,\n className = _props.className,\n fixedWidth = _props.fixedWidth,\n flip = _props.flip,\n inverse = _props.inverse,\n name = _props.name,\n pulse = _props.pulse,\n rotate = _props.rotate,\n size = _props.size,\n spin = _props.spin,\n stack = _props.stack,\n _props$tag = _props.tag,\n tag = _props$tag === undefined ? 'span' : _props$tag,\n ariaLabel = _props.ariaLabel,\n props = _objectWithoutProperties(_props, ['border', 'cssModule', 'className', 'fixedWidth', 'flip', 'inverse', 'name', 'pulse', 'rotate', 'size', 'spin', 'stack', 'tag', 'ariaLabel']);\n\n var ariaProps = ariaLabel ? { 'aria-label': ariaLabel } : { 'aria-hidden': true };\n var classNames = [];\n\n if (cssModule) {\n classNames.push(cssModule['fa']);\n classNames.push(cssModule['fa-' + name]);\n size && classNames.push(cssModule['fa-' + size]);\n spin && classNames.push(cssModule['fa-spin']);\n pulse && classNames.push(cssModule['fa-pulse']);\n border && classNames.push(cssModule['fa-border']);\n fixedWidth && classNames.push(cssModule['fa-fw']);\n inverse && classNames.push(cssModule['fa-inverse']);\n flip && classNames.push(cssModule['fa-flip-' + flip]);\n rotate && classNames.push(cssModule['fa-rotate-' + rotate]);\n stack && classNames.push(cssModule['fa-stack-' + stack]);\n } else {\n classNames.push('fa');\n classNames.push('fa-' + name);\n size && classNames.push('fa-' + size);\n spin && classNames.push('fa-spin');\n pulse && classNames.push('fa-pulse');\n border && classNames.push('fa-border');\n fixedWidth && classNames.push('fa-fw');\n inverse && classNames.push('fa-inverse');\n flip && classNames.push('fa-flip-' + flip);\n rotate && classNames.push('fa-rotate-' + rotate);\n stack && classNames.push('fa-stack-' + stack);\n }\n\n // Add any custom class names at the end.\n className && classNames.push(className);\n return _react2.default.createElement(tag, _extends({}, props, ariaProps, {\n className: classNames.join(' ')\n }));\n }\n }]);\n\n return FontAwesome;\n}(_react2.default.Component);\n\nFontAwesome.propTypes = {\n ariaLabel: _propTypes2.default.string,\n border: _propTypes2.default.bool,\n className: _propTypes2.default.string,\n cssModule: _propTypes2.default.object,\n fixedWidth: _propTypes2.default.bool,\n flip: _propTypes2.default.oneOf(['horizontal', 'vertical']),\n inverse: _propTypes2.default.bool,\n name: _propTypes2.default.string.isRequired,\n pulse: _propTypes2.default.bool,\n rotate: _propTypes2.default.oneOf([90, 180, 270]),\n size: _propTypes2.default.oneOf(['lg', '2x', '3x', '4x', '5x']),\n spin: _propTypes2.default.bool,\n stack: _propTypes2.default.oneOf(['1x', '2x']),\n tag: _propTypes2.default.string\n};\n\nexports.default = FontAwesome;\nmodule.exports = exports.default;","import e,{Component as t}from\"react\";import r from\"prop-types\";import n from\"react-fast-compare\";import i from\"invariant\";import o from\"shallowequal\";function a(){return(a=Object.assign||function(e){for(var t=1;t=0||(i[r]=e[r]);return i}var u={BASE:\"base\",BODY:\"body\",HEAD:\"head\",HTML:\"html\",LINK:\"link\",META:\"meta\",NOSCRIPT:\"noscript\",SCRIPT:\"script\",STYLE:\"style\",TITLE:\"title\",FRAGMENT:\"Symbol(react.fragment)\"},l=Object.keys(u).map(function(e){return u[e]}),p={accesskey:\"accessKey\",charset:\"charSet\",class:\"className\",contenteditable:\"contentEditable\",contextmenu:\"contextMenu\",\"http-equiv\":\"httpEquiv\",itemprop:\"itemProp\",tabindex:\"tabIndex\"},f=Object.keys(p).reduce(function(e,t){return e[p[t]]=t,e},{}),d=function(e,t){for(var r=e.length-1;r>=0;r-=1){var n=e[r];if(Object.prototype.hasOwnProperty.call(n,t))return n[t]}return null},h=function(e){var t=d(e,u.TITLE),r=d(e,\"titleTemplate\");if(Array.isArray(t)&&(t=t.join(\"\")),r&&t)return r.replace(/%s/g,function(){return t});var n=d(e,\"defaultTitle\");return t||n||void 0},m=function(e){return d(e,\"onChangeClientState\")||function(){}},y=function(e,t){return t.filter(function(t){return void 0!==t[e]}).map(function(t){return t[e]}).reduce(function(e,t){return a({},e,t)},{})},T=function(e,t){return t.filter(function(e){return void 0!==e[u.BASE]}).map(function(e){return e[u.BASE]}).reverse().reduce(function(t,r){if(!t.length)for(var n=Object.keys(r),i=0;i/g,\">\").replace(/\"/g,\""\").replace(/'/g,\"'\")},C=function(e){return Object.keys(e).reduce(function(t,r){var n=void 0!==e[r]?r+'=\"'+e[r]+'\"':\"\"+r;return t?t+\" \"+n:n},\"\")},O=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce(function(t,r){return t[p[r]||r]=e[r],t},t)},E=function(t,r,n){switch(t){case u.TITLE:return{toComponent:function(){return n=r.titleAttributes,(i={key:t=r.title})[\"data-rh\"]=!0,o=O(n,i),[e.createElement(u.TITLE,o,t)];var t,n,i,o},toString:function(){return function(e,t,r,n){var i=C(r),o=g(t);return i?\"<\"+e+' data-rh=\"true\" '+i+\">\"+A(o,n)+\"\":\"<\"+e+' data-rh=\"true\">'+A(o,n)+\"\"}(t,r.title,r.titleAttributes,n)}};case\"bodyAttributes\":case\"htmlAttributes\":return{toComponent:function(){return O(r)},toString:function(){return C(r)}};default:return{toComponent:function(){return function(t,r){return r.map(function(r,n){var i,o=((i={key:n})[\"data-rh\"]=!0,i);return Object.keys(r).forEach(function(e){var t=p[e]||e;\"innerHTML\"===t||\"cssText\"===t?o.dangerouslySetInnerHTML={__html:r.innerHTML||r.cssText}:o[t]=r[e]}),e.createElement(t,o)})}(t,r)},toString:function(){return function(e,t,r){return t.reduce(function(t,n){var i=Object.keys(n).filter(function(e){return!(\"innerHTML\"===e||\"cssText\"===e)}).reduce(function(e,t){var i=void 0===n[t]?t:t+'=\"'+A(n[t],r)+'\"';return e?e+\" \"+i:i},\"\"),o=n.innerHTML||n.cssText||\"\",a=-1===v.indexOf(e);return t+\"<\"+e+' data-rh=\"true\" '+i+(a?\"/>\":\">\"+o+\"\")},\"\")}(t,r,n)}}}},S=function(e){var t=e.bodyAttributes,r=e.encode,n=e.htmlAttributes,i=e.linkTags,o=e.metaTags,a=e.noscriptTags,s=e.scriptTags,c=e.styleTags,l=e.title,p=void 0===l?\"\":l,f=e.titleAttributes;return{base:E(u.BASE,e.baseTag,r),bodyAttributes:E(\"bodyAttributes\",t,r),htmlAttributes:E(\"htmlAttributes\",n,r),link:E(u.LINK,i,r),meta:E(u.META,o,r),noscript:E(u.NOSCRIPT,a,r),script:E(u.SCRIPT,s,r),style:E(u.STYLE,c,r),title:E(u.TITLE,{title:p,titleAttributes:f},r)}},I=e.createContext({}),P=r.shape({setHelmet:r.func,helmetInstances:r.shape({get:r.func,add:r.func,remove:r.func})}),L=\"undefined\"!=typeof document,x=function(t){function r(e){var n;return(n=t.call(this,e)||this).instances=[],n.value={setHelmet:function(e){n.props.context.helmet=e},helmetInstances:{get:function(){return n.instances},add:function(e){n.instances.push(e)},remove:function(e){var t=n.instances.indexOf(e);n.instances.splice(t,1)}}},r.canUseDOM||(e.context.helmet=S({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:\"\",titleAttributes:{}})),n}return s(r,t),r.prototype.render=function(){return e.createElement(I.Provider,{value:this.value},this.props.children)},r}(t);x.canUseDOM=L,x.propTypes={context:r.shape({helmet:r.shape()}),children:r.node.isRequired},x.defaultProps={context:{}},x.displayName=\"HelmetProvider\";var j=function(e,t){var r,n=document.head||document.querySelector(u.HEAD),i=n.querySelectorAll(e+\"[data-rh]\"),o=[].slice.call(i),a=[];return t&&t.length&&t.forEach(function(t){var n=document.createElement(e);for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(\"innerHTML\"===i?n.innerHTML=t.innerHTML:\"cssText\"===i?n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText)):n.setAttribute(i,void 0===t[i]?\"\":t[i]));n.setAttribute(\"data-rh\",\"true\"),o.some(function(e,t){return r=t,n.isEqualNode(e)})?o.splice(r,1):a.push(n)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),a.forEach(function(e){return n.appendChild(e)}),{oldTags:o,newTags:a}},w=function(e,t){var r=document.getElementsByTagName(e)[0];if(r){for(var n=r.getAttribute(\"data-rh\"),i=n?n.split(\",\"):[],o=[].concat(i),a=Object.keys(t),s=0;s=0;p-=1)r.removeAttribute(o[p]);i.length===o.length?r.removeAttribute(\"data-rh\"):r.getAttribute(\"data-rh\")!==a.join(\",\")&&r.setAttribute(\"data-rh\",a.join(\",\"))}},H=function(e,t){var r=e.baseTag,n=e.htmlAttributes,i=e.linkTags,o=e.metaTags,a=e.noscriptTags,s=e.onChangeClientState,c=e.scriptTags,l=e.styleTags,p=e.title,f=e.titleAttributes;w(u.BODY,e.bodyAttributes),w(u.HTML,n),function(e,t){void 0!==e&&document.title!==e&&(document.title=g(e)),w(u.TITLE,t)}(p,f);var d={baseTag:j(u.BASE,r),linkTags:j(u.LINK,i),metaTags:j(u.META,o),noscriptTags:j(u.NOSCRIPT,a),scriptTags:j(u.SCRIPT,c),styleTags:j(u.STYLE,l)},h={},m={};Object.keys(d).forEach(function(e){var t=d[e],r=t.newTags,n=t.oldTags;r.length&&(h[e]=r),n.length&&(m[e]=d[e].oldTags)}),t&&t(),s(e,h,m)},k=null,M=function(e){function t(){for(var t,r=arguments.length,n=new Array(r),i=0;i elements are self-closing and can not contain children. Refer to our API for more information.\")}},o.flattenArrayTypeChildren=function(e){var t,r=e.child,n=e.arrayTypeChildren;return a({},n,((t={})[r.type]=[].concat(n[r.type]||[],[a({},e.newChildProps,this.mapNestedChildrenToProps(r,e.nestedChildren))]),t))},o.mapObjectTypeChildren=function(e){var t,r,n=e.child,i=e.newProps,o=e.newChildProps,s=e.nestedChildren;switch(n.type){case u.TITLE:return a({},i,((t={})[n.type]=s,t.titleAttributes=a({},o),t));case u.BODY:return a({},i,{bodyAttributes:a({},o)});case u.HTML:return a({},i,{htmlAttributes:a({},o)});default:return a({},i,((r={})[n.type]=a({},o),r))}},o.mapArrayTypeChildrenToProps=function(e,t){var r=a({},t);return Object.keys(e).forEach(function(t){var n;r=a({},r,((n={})[t]=e[t],n))}),r},o.warnOnInvalidChildren=function(e,t){return i(l.some(function(t){return e.type===t}),\"function\"==typeof e.type?\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\":\"Only elements types \"+l.join(\", \")+\" are allowed. Helmet does not support rendering <\"+e.type+\"> elements. Refer to our API for more information.\"),i(!t||\"string\"==typeof t||Array.isArray(t)&&!t.some(function(e){return\"string\"!=typeof e}),\"Helmet expects a string as a child of <\"+e.type+\">. Did you forget to wrap your children in braces? ( <\"+e.type+\">{``} ) Refer to our API for more information.\"),!0},o.mapChildrenToProps=function(t,r){var n=this,i={};return e.Children.forEach(t,function(e){if(e&&e.props){var t=e.props,o=t.children,a=c(t,[\"children\"]),s=Object.keys(a).reduce(function(e,t){return e[f[t]||t]=a[t],e},{}),l=e.type;switch(\"symbol\"==typeof l?l=l.toString():n.warnOnInvalidChildren(e,o),l){case u.FRAGMENT:r=n.mapChildrenToProps(o,r);break;case u.LINK:case u.META:case u.NOSCRIPT:case u.SCRIPT:case u.STYLE:i=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:i,newChildProps:s,nestedChildren:o});break;default:r=n.mapObjectTypeChildren({child:e,newProps:r,newChildProps:s,nestedChildren:o})}}}),this.mapArrayTypeChildrenToProps(i,r)},o.render=function(){var t=this.props,r=t.children,n=a({},c(t,[\"children\"]));return r&&(n=this.mapChildrenToProps(r,n)),e.createElement(I.Consumer,null,function(t){return e.createElement(M,a({},n,{context:t}))})},r}(t);N.propTypes={base:r.object,bodyAttributes:r.object,children:r.oneOfType([r.arrayOf(r.node),r.node]),defaultTitle:r.string,defer:r.bool,encodeSpecialCharacters:r.bool,htmlAttributes:r.object,link:r.arrayOf(r.object),meta:r.arrayOf(r.object),noscript:r.arrayOf(r.object),onChangeClientState:r.func,script:r.arrayOf(r.object),style:r.arrayOf(r.object),title:r.string,titleAttributes:r.object,titleTemplate:r.string},N.defaultProps={defer:!0,encodeSpecialCharacters:!0},N.displayName=\"Helmet\";export{N as Helmet,x as HelmetProvider};\n//# sourceMappingURL=index.module.js.map\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nvar React = require('react');\n\nvar xtend = require('xtend');\n\nvar ReactIs = require('react-is');\n\nfunction astToReact(node, options) {\n var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var renderer = options.renderers[node.type]; // Nodes created by plugins do not have positional info, in which case we set\n // an object that matches the positon interface.\n\n if (!node.position) {\n node.position = {\n start: {\n line: null,\n column: null,\n offset: null\n },\n end: {\n line: null,\n column: null,\n offset: null\n }\n };\n }\n\n var pos = node.position.start;\n var key = [node.type, pos.line, pos.column, index].join('-');\n\n if (!ReactIs.isValidElementType(renderer)) {\n throw new Error(\"Renderer for type `\".concat(node.type, \"` not defined or is not renderable\"));\n }\n\n var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n return React.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || undefined);\n\n function resolveChildren() {\n return node.children && node.children.map(function (childNode, i) {\n return astToReact(childNode, options, {\n node: node,\n props: nodeProps\n }, i);\n });\n }\n} // eslint-disable-next-line max-params, complexity\n\n\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n var props = {\n key: key\n };\n var isSimpleRenderer = typeof renderer === 'string' || renderer === React.Fragment; // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n\n if (opts.sourcePos && node.position) {\n props['data-sourcepos'] = flattenPosition(node.position);\n }\n\n if (opts.rawSourcePos && !isSimpleRenderer) {\n props.sourcePosition = node.position;\n } // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n\n\n if (opts.includeNodeIndex && parent.node && parent.node.children && !isSimpleRenderer) {\n props.index = parent.node.children.indexOf(node);\n props.parentChildCount = parent.node.children.length;\n }\n\n var ref = node.identifier !== null && node.identifier !== undefined ?\n /* istanbul ignore next - plugins could inject an undefined reference. */\n opts.definitions[node.identifier.toUpperCase()] || {} : null;\n\n switch (node.type) {\n case 'root':\n assignDefined(props, {\n className: opts.className\n });\n break;\n\n case 'text':\n props.nodeKey = key;\n props.children = node.value;\n break;\n\n case 'heading':\n props.level = node.depth;\n break;\n\n case 'list':\n props.start = node.start;\n props.ordered = node.ordered;\n props.spread = node.spread;\n props.depth = node.depth;\n break;\n\n case 'listItem':\n props.checked = node.checked;\n props.spread = node.spread;\n props.ordered = node.ordered;\n props.index = node.index;\n props.children = getListItemChildren(node, parent).map(function (childNode, i) {\n return astToReact(childNode, opts, {\n node: node,\n props: props\n }, i);\n });\n break;\n\n case 'definition':\n assignDefined(props, {\n identifier: node.identifier,\n title: node.title,\n url: node.url\n });\n break;\n\n case 'code':\n assignDefined(props, {\n language: node.lang && node.lang.split(/\\s/, 1)[0]\n });\n break;\n\n case 'inlineCode':\n props.children = node.value;\n props.inline = true;\n break;\n\n case 'link':\n assignDefined(props, {\n title: node.title || undefined,\n target: typeof opts.linkTarget === 'function' ? opts.linkTarget(node.url, node.children, node.title) : opts.linkTarget,\n href: opts.transformLinkUri ? opts.transformLinkUri(node.url, node.children, node.title) : node.url\n });\n break;\n\n case 'image':\n assignDefined(props, {\n src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url,\n alt: node.alt || '',\n title: node.title || undefined\n });\n break;\n\n case 'linkReference':\n assignDefined(props, xtend(ref, {\n href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n }));\n break;\n\n case 'imageReference':\n assignDefined(props, {\n src: opts.transformImageUri && ref.href ? opts.transformImageUri(ref.href, node.children, ref.title, node.alt) : ref.href,\n alt: node.alt || '',\n title: ref.title || undefined\n });\n break;\n\n case 'table':\n case 'tableHead':\n case 'tableBody':\n props.columnAlignment = node.align;\n break;\n\n case 'tableRow':\n props.isHeader = parent.node.type === 'tableHead';\n props.columnAlignment = parent.props.columnAlignment;\n break;\n\n case 'tableCell':\n assignDefined(props, {\n isHeader: parent.props.isHeader,\n align: parent.props.columnAlignment[index]\n });\n break;\n\n case 'virtualHtml':\n props.tag = node.tag;\n break;\n\n case 'html':\n // @todo find a better way than this\n props.isBlock = node.position.start.line !== node.position.end.line;\n props.allowDangerousHtml = opts.allowDangerousHtml;\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n break;\n\n case 'parsedHtml':\n {\n var parsedChildren;\n\n if (node.children) {\n parsedChildren = node.children.map(function (child, i) {\n return astToReact(child, opts, {\n node: node,\n props: props\n }, i);\n });\n }\n\n props.allowDangerousHtml = opts.allowDangerousHtml;\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n props.element = node.element ? mergeNodeChildren(node, parsedChildren) : null;\n break;\n }\n\n default:\n assignDefined(props, xtend(node, {\n type: undefined,\n position: undefined,\n children: undefined\n }));\n }\n\n if (!isSimpleRenderer && node.value) {\n props.value = node.value;\n }\n\n if (!isSimpleRenderer) {\n props.node = node;\n }\n\n return props;\n}\n\nfunction assignDefined(target, attrs) {\n for (var key in attrs) {\n if (typeof attrs[key] !== 'undefined') {\n target[key] = attrs[key];\n }\n }\n}\n\nfunction mergeNodeChildren(node, parsedChildren) {\n var el = node.element;\n\n if (Array.isArray(el)) {\n /* istanbul ignore next - `div` fallback for old React. */\n var Fragment = React.Fragment || 'div';\n return React.createElement(Fragment, null, el);\n }\n\n if (el.props.children || parsedChildren) {\n var children = React.Children.toArray(el.props.children).concat(parsedChildren);\n return React.cloneElement(el, null, children);\n }\n\n return React.cloneElement(el, null);\n}\n\nfunction flattenPosition(pos) {\n return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\n}\n\nfunction getListItemChildren(node, parent) {\n /* istanbul ignore next - list items are always in a list, but best to be sure. */\n var loose = parent && parent.node ? listLoose(parent.node) : listItemLoose(node);\n return loose ? node.children : unwrapParagraphs(node);\n}\n\nfunction unwrapParagraphs(node) {\n return node.children.reduce(function (array, child) {\n return array.concat(child.type === 'paragraph' ? child.children : [child]);\n }, []);\n}\n\nfunction listLoose(node) {\n var children = node.children;\n var loose = node.spread;\n var index = -1;\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index]);\n }\n\n return loose;\n}\n\nfunction listItemLoose(node) {\n var spread = node.spread;\n /* istanbul ignore next - spread is present from remark-parse, but maybe plugins don’t set it. */\n\n return spread === undefined || spread === null ? node.children.length > 1 : spread;\n}\n\nmodule.exports = astToReact;","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function getDefinitions(tree) {\n var definitions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n visit(tree, 'definition', function (node) {\n var identifier = node.identifier.toUpperCase();\n if (identifier in definitions) return;\n definitions[identifier] = {\n href: node.url,\n title: node.title\n };\n });\n return definitions;\n};","\"use strict\";\n\nvar visit = require('unist-util-visit');\n\nvar splice = [].splice;\n\nexports.ofType = function (types, mode) {\n return ifNotMatch(allow, mode);\n\n function allow(node, index, parent) {\n return !types.includes(node.type);\n }\n};\n\nexports.ifNotMatch = ifNotMatch;\n\nfunction ifNotMatch(allow, mode) {\n return transform;\n\n function transform(tree) {\n visit(tree, filter);\n return tree;\n } // eslint-disable-next-line consistent-return\n\n\n function filter(node, index, parent) {\n if (parent && !allow(node, index, parent)) {\n var parameters = [index, 1];\n\n if (mode === 'unwrap' && node.children) {\n parameters = parameters.concat(node.children);\n }\n\n splice.apply(parent.children, parameters);\n return index;\n }\n }\n}","\"use strict\";\n\n/**\n * Naive, simple plugin to match inline nodes without attributes\n * This allows say foo, but not foo\n * For proper HTML support, you'll want a different plugin\n **/\nvar visit = require('unist-util-visit');\n\nvar type = 'virtualHtml';\nvar selfClosingRe = /^<(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)\\s*\\/?>$/i;\nvar simpleTagRe = /^<(\\/?)([a-z]+)\\s*>$/;\n\nmodule.exports = function (tree) {\n var open;\n var currentParent;\n visit(tree, 'html', function (node, index, parent) {\n if (currentParent !== parent) {\n open = [];\n currentParent = parent;\n }\n\n var selfClosing = getSelfClosing(node);\n\n if (selfClosing) {\n parent.children.splice(index, 1, {\n type: type,\n tag: selfClosing,\n position: node.position\n });\n return true;\n }\n\n var current = getSimpleTag(node, parent);\n\n if (!current) {\n return true;\n }\n\n var matching = findAndPull(open, current.tag);\n\n if (matching) {\n parent.children.splice(index, 0, virtual(current, matching, parent));\n } else if (!current.opening) {\n open.push(current);\n }\n\n return true;\n }, true // Iterate in reverse\n );\n return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n var i = open.length;\n\n while (i--) {\n if (open[i].tag === matchingTag) {\n return open.splice(i, 1)[0];\n }\n }\n\n return false;\n}\n\nfunction getSimpleTag(node, parent) {\n var match = node.value.match(simpleTagRe);\n return match ? {\n tag: match[2],\n opening: !match[1],\n node: node\n } : false;\n}\n\nfunction getSelfClosing(node) {\n var match = node.value.match(selfClosingRe);\n return match ? match[1] : false;\n}\n\nfunction virtual(fromNode, toNode, parent) {\n var fromIndex = parent.children.indexOf(fromNode.node);\n var toIndex = parent.children.indexOf(toNode.node);\n var extracted = parent.children.splice(fromIndex, toIndex - fromIndex + 1);\n var children = extracted.slice(1, -1);\n return {\n type: type,\n children: children,\n tag: fromNode.tag,\n position: {\n start: fromNode.node.position.start,\n end: toNode.node.position.end,\n indent: []\n }\n };\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar unified = require('unified');\n\nvar parse = require('remark-parse');\n\nvar PropTypes = require('prop-types');\n\nvar addListMetadata = require('mdast-add-list-metadata');\n\nvar naiveHtml = require('./plugins/naive-html');\n\nvar disallowNode = require('./plugins/disallow-node');\n\nvar astToReact = require('./ast-to-react');\n\nvar wrapTableRows = require('./wrap-table-rows');\n\nvar getDefinitions = require('./get-definitions');\n\nvar uriTransformer = require('./uri-transformer');\n\nvar defaultRenderers = require('./renderers');\n\nvar symbols = require('./symbols');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\n // To do in next major: remove `source`.\n var src = props.source || props.children || '';\n\n if (props.allowedTypes && props.disallowedTypes) {\n throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n }\n\n var renderers = xtend(defaultRenderers, props.renderers);\n var processor = unified().use(parse).use(props.plugins || []); // eslint-disable-next-line no-sync\n\n var tree = processor.runSync(processor.parse(src));\n var renderProps = xtend(props, {\n renderers: renderers,\n definitions: getDefinitions(tree)\n });\n determineAstToReactTransforms(props).forEach(function (transform) {\n tree = transform(tree, renderProps);\n });\n return tree;\n};\n\nfunction determineAstToReactTransforms(props) {\n var transforms = [wrapTableRows, addListMetadata()];\n var disallowedTypes = props.disallowedTypes;\n\n if (props.allowedTypes) {\n disallowedTypes = allTypes.filter(function (type) {\n return type !== 'root' && props.allowedTypes.indexOf(type) === -1;\n });\n }\n\n var removalMethod = props.unwrapDisallowed ? 'unwrap' : 'remove';\n\n if (disallowedTypes && disallowedTypes.length > 0) {\n transforms.push(disallowNode.ofType(disallowedTypes, removalMethod));\n }\n\n if (props.allowNode) {\n transforms.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n } // To do in next major: remove `escapeHtml`.\n\n\n var renderHtml = (props.allowDangerousHtml || props.escapeHtml === false) && !props.skipHtml;\n var hasHtmlParser = (props.astPlugins || []).some(function (transform) {\n return transform.identity === symbols.HtmlParser;\n });\n\n if (renderHtml && !hasHtmlParser) {\n transforms.push(naiveHtml);\n }\n\n if (props.astPlugins) {\n transforms = transforms.concat(props.astPlugins);\n } // Add the final transform to turn everything into React.\n\n\n transforms.push(astToReact);\n return transforms;\n}\n\nReactMarkdown.defaultProps = {\n transformLinkUri: uriTransformer\n};\nReactMarkdown.propTypes = {\n className: PropTypes.string,\n source: PropTypes.string,\n children: PropTypes.string,\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n escapeHtml: PropTypes.bool,\n allowDangerousHtml: PropTypes.bool,\n skipHtml: PropTypes.bool,\n allowNode: PropTypes.func,\n allowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n disallowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n astPlugins: PropTypes.arrayOf(PropTypes.func),\n unwrapDisallowed: PropTypes.bool,\n renderers: PropTypes.object,\n plugins: PropTypes.array\n};\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\nmodule.exports = ReactMarkdown;","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\n\nvar React = require('react');\n/* istanbul ignore next - Don’t crash on old React. */\n\n\nvar supportsStringRender = parseInt((React.version || '16').slice(0, 2), 10) >= 16;\nvar createElement = React.createElement;\nmodule.exports = {\n break: 'br',\n paragraph: 'p',\n emphasis: 'em',\n strong: 'strong',\n thematicBreak: 'hr',\n blockquote: 'blockquote',\n delete: 'del',\n link: 'a',\n image: 'img',\n linkReference: 'a',\n imageReference: 'img',\n table: SimpleRenderer.bind(null, 'table'),\n tableHead: SimpleRenderer.bind(null, 'thead'),\n tableBody: SimpleRenderer.bind(null, 'tbody'),\n tableRow: SimpleRenderer.bind(null, 'tr'),\n tableCell: TableCell,\n root: Root,\n text: TextRenderer,\n list: List,\n listItem: ListItem,\n definition: NullRenderer,\n heading: Heading,\n inlineCode: InlineCode,\n code: CodeBlock,\n html: Html,\n virtualHtml: VirtualHtml,\n parsedHtml: ParsedHtml\n};\n\nfunction TextRenderer(props) {\n /* istanbul ignore next - a text node w/o a value could be injected by plugins */\n var children = props.children || '';\n /* istanbul ignore next - `span` is a fallback for old React. */\n\n return supportsStringRender ? children : createElement('span', null, children);\n}\n\nfunction Root(props) {\n var className = props.className;\n var root = !className && React.Fragment || 'div';\n return createElement(root, className ? {\n className: className\n } : null, props.children);\n}\n\nfunction SimpleRenderer(tag, props) {\n return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n var style = props.align ? {\n textAlign: props.align\n } : undefined;\n var coreProps = getCoreProps(props);\n return createElement(props.isHeader ? 'th' : 'td', style ? xtend({\n style: style\n }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n return createElement(\"h\".concat(props.level), getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n var attrs = getCoreProps(props);\n\n if (props.start !== null && props.start !== 1 && props.start !== undefined) {\n attrs.start = props.start.toString();\n }\n\n return createElement(props.ordered ? 'ol' : 'ul', attrs, props.children);\n}\n\nfunction ListItem(props) {\n var checkbox = null;\n\n if (props.checked !== null && props.checked !== undefined) {\n var checked = props.checked;\n checkbox = createElement('input', {\n type: 'checkbox',\n checked: checked,\n readOnly: true\n });\n }\n\n return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n var className = props.language && \"language-\".concat(props.language);\n var code = createElement('code', className ? {\n className: className\n } : null, props.value);\n return createElement('pre', getCoreProps(props), code);\n}\n\nfunction InlineCode(props) {\n return createElement('code', getCoreProps(props), props.children);\n}\n\nfunction Html(props) {\n if (props.skipHtml) {\n return null;\n }\n\n var dangerous = props.allowDangerousHtml || props.escapeHtml === false;\n var tag = props.isBlock ? 'div' : 'span';\n\n if (!dangerous) {\n /* istanbul ignore next - `tag` is a fallback for old React. */\n return createElement(React.Fragment || tag, null, props.value);\n }\n\n var nodeProps = {\n dangerouslySetInnerHTML: {\n __html: props.value\n }\n };\n return createElement(tag, nodeProps);\n}\n\nfunction ParsedHtml(props) {\n /* To do: `React.cloneElement` is slow, is it really needed? */\n return props['data-sourcepos'] ? React.cloneElement(props.element, {\n 'data-sourcepos': props['data-sourcepos']\n }) : props.element;\n}\n\nfunction VirtualHtml(props) {\n return createElement(props.tag, getCoreProps(props), props.children);\n}\n\nfunction NullRenderer() {\n return null;\n}\n\nfunction getCoreProps(props) {\n var source = props['data-sourcepos'];\n /* istanbul ignore next - nodes from plugins w/o position */\n\n return source ? {\n 'data-sourcepos': source\n } : {};\n}","\"use strict\";\n\nvar HtmlParser = '__RMD_HTML_PARSER__';\n/* istanbul ignore next - Fallback for `Symbol`. */\n\nexports.HtmlParser = typeof Symbol === 'undefined' ? HtmlParser : Symbol(HtmlParser);","\"use strict\";\n\nvar protocols = ['http', 'https', 'mailto', 'tel'];\n\nmodule.exports = function uriTransformer(uri) {\n var url = (uri || '').trim();\n var first = url.charAt(0);\n\n if (first === '#' || first === '/') {\n return url;\n }\n\n var colon = url.indexOf(':');\n\n if (colon === -1) {\n return url;\n }\n\n var length = protocols.length;\n var index = -1;\n\n while (++index < length) {\n var protocol = protocols[index];\n\n if (colon === protocol.length && url.slice(0, protocol.length).toLowerCase() === protocol) {\n return url;\n }\n }\n\n index = url.indexOf('?');\n\n if (index !== -1 && colon > index) {\n return url;\n }\n\n index = url.indexOf('#');\n\n if (index !== -1 && colon > index) {\n return url;\n } // eslint-disable-next-line no-script-url\n\n\n return 'javascript:void(0)';\n};","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function (node) {\n visit(node, 'table', wrap);\n return node;\n};\n\nfunction wrap(table) {\n var children = table.children;\n table.children = [{\n type: 'tableHead',\n align: table.align,\n children: [children[0]],\n position: children[0].position\n }];\n\n if (children.length > 1) {\n table.children.push({\n type: 'tableBody',\n align: table.align,\n children: children.slice(1),\n position: {\n start: children[1].position.start,\n end: children[children.length - 1].position.end\n }\n });\n }\n}","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * React Router DOM v6.3.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { useRef, useState, useLayoutEffect, createElement, forwardRef, useCallback, useMemo } from 'react';\nimport { createBrowserHistory, createHashHistory } from 'history';\nimport { Router, useHref, createPath, useLocation, useResolvedPath, useNavigate } from 'react-router';\nexport { MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, createPath, createRoutesFromChildren, generatePath, matchPath, matchRoutes, parsePath, renderMatches, resolvePath, useHref, useInRouterContext, useLocation, useMatch, useNavigate, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRoutes } from 'react-router';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded = [\"onClick\", \"reloadDocument\", \"replace\", \"state\", \"target\", \"to\"],\n _excluded2 = [\"aria-current\", \"caseSensitive\", \"className\", \"end\", \"style\", \"to\", \"children\"];\n\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message); // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n} ////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nfunction BrowserRouter(_ref) {\n let {\n basename,\n children,\n window\n } = _ref;\n let historyRef = useRef();\n\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({\n window\n });\n }\n\n let history = historyRef.current;\n let [state, setState] = useState({\n action: history.action,\n location: history.location\n });\n useLayoutEffect(() => history.listen(setState), [history]);\n return /*#__PURE__*/createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history\n });\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nfunction HashRouter(_ref2) {\n let {\n basename,\n children,\n window\n } = _ref2;\n let historyRef = useRef();\n\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({\n window\n });\n }\n\n let history = historyRef.current;\n let [state, setState] = useState({\n action: history.action,\n location: history.location\n });\n useLayoutEffect(() => history.listen(setState), [history]);\n return /*#__PURE__*/createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history\n });\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter(_ref3) {\n let {\n basename,\n children,\n history\n } = _ref3;\n const [state, setState] = useState({\n action: history.action,\n location: history.location\n });\n useLayoutEffect(() => history.listen(setState), [history]);\n return /*#__PURE__*/createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = /*#__PURE__*/forwardRef(function LinkWithRef(_ref4, ref) {\n let {\n onClick,\n reloadDocument,\n replace = false,\n state,\n target,\n to\n } = _ref4,\n rest = _objectWithoutPropertiesLoose(_ref4, _excluded);\n\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, {\n replace,\n state,\n target\n });\n\n function handleClick(event) {\n if (onClick) onClick(event);\n\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n /*#__PURE__*/\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n createElement(\"a\", _extends({}, rest, {\n href: href,\n onClick: handleClick,\n ref: ref,\n target: target\n }))\n );\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n Link.displayName = \"Link\";\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = /*#__PURE__*/forwardRef(function NavLinkWithRef(_ref5, ref) {\n let {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children\n } = _ref5,\n rest = _objectWithoutPropertiesLoose(_ref5, _excluded2);\n\n let location = useLocation();\n let path = useResolvedPath(to);\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(toPathname.length) === \"/\";\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n let className;\n\n if (typeof classNameProp === \"function\") {\n className = classNameProp({\n isActive\n });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null].filter(Boolean).join(\" \");\n }\n\n let style = typeof styleProp === \"function\" ? styleProp({\n isActive\n }) : styleProp;\n return /*#__PURE__*/createElement(Link, _extends({}, rest, {\n \"aria-current\": ariaCurrent,\n className: className,\n ref: ref,\n style: style,\n to: to\n }), typeof children === \"function\" ? children({\n isActive\n }) : children);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n NavLink.displayName = \"NavLink\";\n} ////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\n\n\nfunction useLinkClickHandler(to, _temp) {\n let {\n target,\n replace: replaceProp,\n state\n } = _temp === void 0 ? {} : _temp;\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n return useCallback(event => {\n if (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(); // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n\n let replace = !!replaceProp || createPath(location) === createPath(path);\n navigate(to, {\n replace,\n state\n });\n }\n }, [location, navigate, path, replaceProp, state, target, to]);\n}\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\n\nfunction useSearchParams(defaultInit) {\n process.env.NODE_ENV !== \"production\" ? warning(typeof URLSearchParams !== \"undefined\", \"You cannot use the `useSearchParams` hook in a browser that does not \" + \"support the URLSearchParams API. If you need to support Internet \" + \"Explorer 11, we recommend you load a polyfill such as \" + \"https://github.com/ungap/url-search-params\\n\\n\" + \"If you're unsure how to load polyfills, we recommend you check out \" + \"https://polyfill.io/v3/ which provides some recommendations about how \" + \"to load polyfills only for users that need them, instead of for every \" + \"user.\") : void 0;\n let defaultSearchParamsRef = useRef(createSearchParams(defaultInit));\n let location = useLocation();\n let searchParams = useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n let navigate = useNavigate();\n let setSearchParams = useCallback((nextInit, navigateOptions) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n }, [navigate]);\n return [searchParams, setSearchParams];\n}\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink, createSearchParams, HistoryRouter as unstable_HistoryRouter, useLinkClickHandler, useSearchParams };\n//# sourceMappingURL=index.js.map\n","/**\n * React Router v6.3.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport { parsePath, createMemoryHistory, Action } from 'history';\nexport { Action as NavigationType, createPath, parsePath } from 'history';\nimport { createContext, useContext, useMemo, useRef, useEffect, useCallback, createElement, useState, useLayoutEffect, Children, isValidElement, Fragment } from 'react';\n\nconst NavigationContext = /*#__PURE__*/createContext(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n NavigationContext.displayName = \"Navigation\";\n}\n\nconst LocationContext = /*#__PURE__*/createContext(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n LocationContext.displayName = \"Location\";\n}\n\nconst RouteContext = /*#__PURE__*/createContext({\n outlet: null,\n matches: []\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n RouteContext.displayName = \"Route\";\n}\n\nfunction invariant(cond, message) {\n if (!cond) throw new Error(message);\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message); // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nconst alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n process.env.NODE_ENV !== \"production\" ? warning(false, message) : void 0;\n }\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nfunction generatePath(path, params) {\n if (params === void 0) {\n params = {};\n }\n\n return path.replace(/:(\\w+)/g, (_, key) => {\n !(params[key] != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Missing \\\":\" + key + \"\\\" param\") : invariant(false) : void 0;\n return params[key];\n }).replace(/\\/*\\*$/, _ => params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\"));\n}\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n\n routes.forEach((route, index) => {\n let meta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n !meta.relativePath.startsWith(parentPath) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\") : invariant(false) : void 0;\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta); // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n\n if (route.children && route.children.length > 0) {\n !(route.index !== true) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\")) : invariant(false) : void 0;\n flattenRoutes(route.children, branches, routesMeta, path);\n } // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n\n\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n });\n return branches;\n}\n\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\n\nconst isSplat = s => s === \"*\";\n\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\n\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch(branch, pathname) {\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n if (!match) return null;\n Object.assign(matchedParams, match.params);\n let route = meta.route;\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\n\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n\n let [matcher, paramNames] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = paramNames.reduce((memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(captureGroups[index] || \"\", paramName);\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\n\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n\n if (end === void 0) {\n end = true;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\")) : void 0;\n let paramNames = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_, paramName) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value, paramName) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n process.env.NODE_ENV !== \"production\" ? warning(false, \"The value for the URL param \\\"\" + paramName + \"\\\" will not be decoded because\" + (\" the string \\\"\" + value + \"\\\" is a malformed URL segment. This is probably\") + (\" due to a bad percent encoding (\" + error + \").\")) : void 0;\n return value;\n }\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\n\n\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\n\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction resolveTo(toArg, routePathnames, locationPathname) {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname; // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n\n let from;\n\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\"); // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n } // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from); // Ensure the pathname has a trailing slash if the original to value had one.\n\n if (toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\") && !path.pathname.endsWith(\"/\")) {\n path.pathname += \"/\";\n }\n\n return path;\n}\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\n\nfunction useHref(to) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useHref() may be used only in the context of a component.\") : invariant(false) : void 0;\n let {\n basename,\n navigator\n } = useContext(NavigationContext);\n let {\n hash,\n pathname,\n search\n } = useResolvedPath(to);\n let joinedPathname = pathname;\n\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname = pathname === \"/\" ? basename + (endsWithSlash ? \"/\" : \"\") : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({\n pathname: joinedPathname,\n search,\n hash\n });\n}\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\n\nfunction useInRouterContext() {\n return useContext(LocationContext) != null;\n}\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\n\nfunction useLocation() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useLocation() may be used only in the context of a component.\") : invariant(false) : void 0;\n return useContext(LocationContext).location;\n}\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\n\nfunction useNavigationType() {\n return useContext(LocationContext).navigationType;\n}\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\n\nfunction useMatch(pattern) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useMatch() may be used only in the context of a component.\") : invariant(false) : void 0;\n let {\n pathname\n } = useLocation();\n return useMemo(() => matchPath(pattern, pathname), [pathname, pattern]);\n}\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nfunction useNavigate() {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useNavigate() may be used only in the context of a component.\") : invariant(false) : void 0;\n let {\n basename,\n navigator\n } = useContext(NavigationContext);\n let {\n matches\n } = useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(matches.map(match => match.pathnameBase));\n let activeRef = useRef(false);\n useEffect(() => {\n activeRef.current = true;\n });\n let navigate = useCallback(function (to, options) {\n if (options === void 0) {\n options = {};\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(activeRef.current, \"You should call navigate() in a React.useEffect(), not when \" + \"your component is first rendered.\") : void 0;\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(to, JSON.parse(routePathnamesJson), locationPathname);\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(path, options.state);\n }, [basename, navigator, routePathnamesJson, locationPathname]);\n return navigate;\n}\nconst OutletContext = /*#__PURE__*/createContext(null);\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\n\nfunction useOutletContext() {\n return useContext(OutletContext);\n}\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\n\nfunction useOutlet(context) {\n let outlet = useContext(RouteContext).outlet;\n\n if (outlet) {\n return /*#__PURE__*/createElement(OutletContext.Provider, {\n value: context\n }, outlet);\n }\n\n return outlet;\n}\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\n\nfunction useParams() {\n let {\n matches\n } = useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? routeMatch.params : {};\n}\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\n\nfunction useResolvedPath(to) {\n let {\n matches\n } = useContext(RouteContext);\n let {\n pathname: locationPathname\n } = useLocation();\n let routePathnamesJson = JSON.stringify(matches.map(match => match.pathnameBase));\n return useMemo(() => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname), [to, routePathnamesJson, locationPathname]);\n}\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\n\nfunction useRoutes(routes, locationArg) {\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n \"useRoutes() may be used only in the context of a component.\") : invariant(false) : void 0;\n let {\n matches: parentMatches\n } = useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (process.env.NODE_ENV !== \"production\") {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = parentRoute && parentRoute.path || \"\";\n warningOnce(parentPathname, !parentRoute || parentPath.endsWith(\"*\"), \"You rendered descendant (or called `useRoutes()`) at \" + (\"\\\"\" + parentPathname + \"\\\" (under ) but the \") + \"parent route path has no trailing \\\"*\\\". This means if you navigate \" + \"deeper, the parent won't match anymore and therefore the child \" + \"routes will never render.\\n\\n\" + (\"Please change the parent to .\"));\n }\n\n let locationFromContext = useLocation();\n let location;\n\n if (locationArg) {\n var _parsedLocationArg$pa;\n\n let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n !(parentPathnameBase === \"/\" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"When overriding the location using `` or `useRoutes(routes, location)`, \" + \"the location pathname must begin with the portion of the URL pathname that was \" + (\"matched by all parent routes. The current pathname base is \\\"\" + parentPathnameBase + \"\\\" \") + (\"but pathname \\\"\" + parsedLocationArg.pathname + \"\\\" was given in the `location` prop.\")) : invariant(false) : void 0;\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname = parentPathnameBase === \"/\" ? pathname : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, {\n pathname: remainingPathname\n });\n\n if (process.env.NODE_ENV !== \"production\") {\n process.env.NODE_ENV !== \"production\" ? warning(parentRoute || matches != null, \"No routes matched location \\\"\" + location.pathname + location.search + location.hash + \"\\\" \") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(matches == null || matches[matches.length - 1].route.element !== undefined, \"Matched leaf route at location \\\"\" + location.pathname + location.search + location.hash + \"\\\" does not have an element. \" + \"This means it will render an with a null value by default resulting in an \\\"empty\\\" page.\") : void 0;\n }\n\n return _renderMatches(matches && matches.map(match => Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([parentPathnameBase, match.pathnameBase])\n })), parentMatches);\n}\nfunction _renderMatches(matches, parentMatches) {\n if (parentMatches === void 0) {\n parentMatches = [];\n }\n\n if (matches == null) return null;\n return matches.reduceRight((outlet, match, index) => {\n return /*#__PURE__*/createElement(RouteContext.Provider, {\n children: match.route.element !== undefined ? match.route.element : outlet,\n value: {\n outlet,\n matches: parentMatches.concat(matches.slice(0, index + 1))\n }\n });\n }, null);\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nfunction MemoryRouter(_ref) {\n let {\n basename,\n children,\n initialEntries,\n initialIndex\n } = _ref;\n let historyRef = useRef();\n\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex\n });\n }\n\n let history = historyRef.current;\n let [state, setState] = useState({\n action: history.action,\n location: history.location\n });\n useLayoutEffect(() => history.listen(setState), [history]);\n return /*#__PURE__*/createElement(Router, {\n basename: basename,\n children: children,\n location: state.location,\n navigationType: state.action,\n navigator: history\n });\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nfunction Navigate(_ref2) {\n let {\n to,\n replace,\n state\n } = _ref2;\n !useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n \" may be used only in the context of a component.\") : invariant(false) : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!useContext(NavigationContext).static, \" must not be used on the initial render in a . \" + \"This is a no-op, but you should modify your code so the is \" + \"only ever rendered in response to some user interaction or state change.\") : void 0;\n let navigate = useNavigate();\n useEffect(() => {\n navigate(to, {\n replace,\n state\n });\n });\n return null;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nfunction Outlet(props) {\n return useOutlet(props.context);\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nfunction Route(_props) {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"A is only ever to be used as the child of element, \" + \"never rendered directly. Please wrap your in a .\") : invariant(false) ;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nfunction Router(_ref3) {\n let {\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = Action.Pop,\n navigator,\n static: staticProp = false\n } = _ref3;\n !!useInRouterContext() ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot render a inside another .\" + \" You should never have more than one in your app.\") : invariant(false) : void 0;\n let basename = normalizePathname(basenameProp);\n let navigationContext = useMemo(() => ({\n basename,\n navigator,\n static: staticProp\n }), [basename, navigator, staticProp]);\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\"\n } = locationProp;\n let location = useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key\n };\n }, [basename, pathname, search, hash, state, key]);\n process.env.NODE_ENV !== \"production\" ? warning(location != null, \" is not able to match the URL \" + (\"\\\"\" + pathname + search + hash + \"\\\" because it does not start with the \") + \"basename, so the won't render anything.\") : void 0;\n\n if (location == null) {\n return null;\n }\n\n return /*#__PURE__*/createElement(NavigationContext.Provider, {\n value: navigationContext\n }, /*#__PURE__*/createElement(LocationContext.Provider, {\n children: children,\n value: {\n location,\n navigationType\n }\n }));\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nfunction Routes(_ref4) {\n let {\n children,\n location\n } = _ref4;\n return useRoutes(createRoutesFromChildren(children), location);\n} ///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\n\nfunction createRoutesFromChildren(children) {\n let routes = [];\n Children.forEach(children, element => {\n if (! /*#__PURE__*/isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(routes, createRoutesFromChildren(element.props.children));\n return;\n }\n\n !(element.type === Route) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"[\" + (typeof element.type === \"string\" ? element.type : element.type.name) + \"] is not a component. All component children of must be a or \") : invariant(false) : void 0;\n let route = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n return routes;\n}\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\n\nfunction renderMatches(matches) {\n return _renderMatches(matches);\n}\n\nexport { MemoryRouter, Navigate, Outlet, Route, Router, Routes, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, createRoutesFromChildren, generatePath, matchPath, matchRoutes, renderMatches, resolvePath, useHref, useInRouterContext, useLocation, useMatch, useNavigate, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRoutes };\n//# sourceMappingURL=index.js.map\n","import { PureComponent, createElement } from 'react';\nimport { array, arrayOf, func, number, object, oneOf, oneOfType, string } from 'prop-types';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\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 __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\n\nvar ALIGNMENT;\n(function (ALIGNMENT) {\n ALIGNMENT[\"AUTO\"] = \"auto\";\n ALIGNMENT[\"START\"] = \"start\";\n ALIGNMENT[\"CENTER\"] = \"center\";\n ALIGNMENT[\"END\"] = \"end\";\n})(ALIGNMENT || (ALIGNMENT = {}));\nvar DIRECTION;\n(function (DIRECTION) {\n DIRECTION[\"HORIZONTAL\"] = \"horizontal\";\n DIRECTION[\"VERTICAL\"] = \"vertical\";\n})(DIRECTION || (DIRECTION = {}));\nvar SCROLL_CHANGE_REASON;\n(function (SCROLL_CHANGE_REASON) {\n SCROLL_CHANGE_REASON[\"OBSERVED\"] = \"observed\";\n SCROLL_CHANGE_REASON[\"REQUESTED\"] = \"requested\";\n})(SCROLL_CHANGE_REASON || (SCROLL_CHANGE_REASON = {}));\nvar scrollProp = (_a = {}, _a[DIRECTION.VERTICAL] = 'scrollTop', _a[DIRECTION.HORIZONTAL] = 'scrollLeft', _a);\nvar sizeProp = (_b = {}, _b[DIRECTION.VERTICAL] = 'height', _b[DIRECTION.HORIZONTAL] = 'width', _b);\nvar positionProp = (_c = {}, _c[DIRECTION.VERTICAL] = 'top', _c[DIRECTION.HORIZONTAL] = 'left', _c);\nvar marginProp = (_d = {}, _d[DIRECTION.VERTICAL] = 'marginTop', _d[DIRECTION.HORIZONTAL] = 'marginLeft', _d);\nvar oppositeMarginProp = (_e = {}, _e[DIRECTION.VERTICAL] = 'marginBottom', _e[DIRECTION.HORIZONTAL] = 'marginRight', _e);\nvar _a;\nvar _b;\nvar _c;\nvar _d;\nvar _e;\n\n/* Forked from react-virtualized 💖 */\nvar SizeAndPositionManager = /** @class */function () {\n function SizeAndPositionManager(_a) {\n var itemCount = _a.itemCount,\n itemSizeGetter = _a.itemSizeGetter,\n estimatedItemSize = _a.estimatedItemSize;\n this.itemSizeGetter = itemSizeGetter;\n this.itemCount = itemCount;\n this.estimatedItemSize = estimatedItemSize;\n // Cache of size and position data for items, mapped by item index.\n this.itemSizeAndPositionData = {};\n // Measurements for items up to this index can be trusted; items afterward should be estimated.\n this.lastMeasuredIndex = -1;\n }\n SizeAndPositionManager.prototype.updateConfig = function (_a) {\n var itemCount = _a.itemCount,\n itemSizeGetter = _a.itemSizeGetter,\n estimatedItemSize = _a.estimatedItemSize;\n if (itemCount != null) {\n this.itemCount = itemCount;\n }\n if (estimatedItemSize != null) {\n this.estimatedItemSize = estimatedItemSize;\n }\n if (itemSizeGetter != null) {\n this.itemSizeGetter = itemSizeGetter;\n }\n };\n SizeAndPositionManager.prototype.getLastMeasuredIndex = function () {\n return this.lastMeasuredIndex;\n };\n /**\n * This method returns the size and position for the item at the specified index.\n * It just-in-time calculates (or used cached values) for items leading up to the index.\n */\n SizeAndPositionManager.prototype.getSizeAndPositionForIndex = function (index) {\n if (index < 0 || index >= this.itemCount) {\n throw Error(\"Requested index \" + index + \" is outside of range 0..\" + this.itemCount);\n }\n if (index > this.lastMeasuredIndex) {\n var lastMeasuredSizeAndPosition = this.getSizeAndPositionOfLastMeasuredItem();\n var offset = lastMeasuredSizeAndPosition.offset + lastMeasuredSizeAndPosition.size;\n for (var i = this.lastMeasuredIndex + 1; i <= index; i++) {\n var size = this.itemSizeGetter(i);\n if (size == null || isNaN(size)) {\n throw Error(\"Invalid size returned for index \" + i + \" of value \" + size);\n }\n this.itemSizeAndPositionData[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n }\n this.lastMeasuredIndex = index;\n }\n return this.itemSizeAndPositionData[index];\n };\n SizeAndPositionManager.prototype.getSizeAndPositionOfLastMeasuredItem = function () {\n return this.lastMeasuredIndex >= 0 ? this.itemSizeAndPositionData[this.lastMeasuredIndex] : { offset: 0, size: 0 };\n };\n /**\n * Total size of all items being measured.\n * This value will be completedly estimated initially.\n * As items as measured the estimate will be updated.\n */\n SizeAndPositionManager.prototype.getTotalSize = function () {\n var lastMeasuredSizeAndPosition = this.getSizeAndPositionOfLastMeasuredItem();\n return lastMeasuredSizeAndPosition.offset + lastMeasuredSizeAndPosition.size + (this.itemCount - this.lastMeasuredIndex - 1) * this.estimatedItemSize;\n };\n /**\n * Determines a new offset that ensures a certain item is visible, given the alignment.\n *\n * @param align Desired alignment within container; one of \"start\" (default), \"center\", or \"end\"\n * @param containerSize Size (width or height) of the container viewport\n * @return Offset to use to ensure the specified item is visible\n */\n SizeAndPositionManager.prototype.getUpdatedOffsetForIndex = function (_a) {\n var _b = _a.align,\n align = _b === void 0 ? ALIGNMENT.START : _b,\n containerSize = _a.containerSize,\n currentOffset = _a.currentOffset,\n targetIndex = _a.targetIndex;\n if (containerSize <= 0) {\n return 0;\n }\n var datum = this.getSizeAndPositionForIndex(targetIndex);\n var maxOffset = datum.offset;\n var minOffset = maxOffset - containerSize + datum.size;\n var idealOffset;\n switch (align) {\n case ALIGNMENT.END:\n idealOffset = minOffset;\n break;\n case ALIGNMENT.CENTER:\n idealOffset = maxOffset - (containerSize - datum.size) / 2;\n break;\n case ALIGNMENT.START:\n idealOffset = maxOffset;\n break;\n default:\n idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n }\n var totalSize = this.getTotalSize();\n return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n };\n SizeAndPositionManager.prototype.getVisibleRange = function (_a) {\n var containerSize = _a.containerSize,\n offset = _a.offset,\n overscanCount = _a.overscanCount;\n var totalSize = this.getTotalSize();\n if (totalSize === 0) {\n return {};\n }\n var maxOffset = offset + containerSize;\n var start = this.findNearestItem(offset);\n if (typeof start === 'undefined') {\n throw Error(\"Invalid offset \" + offset + \" specified\");\n }\n var datum = this.getSizeAndPositionForIndex(start);\n offset = datum.offset + datum.size;\n var stop = start;\n while (offset < maxOffset && stop < this.itemCount - 1) {\n stop++;\n offset += this.getSizeAndPositionForIndex(stop).size;\n }\n if (overscanCount) {\n start = Math.max(0, start - overscanCount);\n stop = Math.min(stop + overscanCount, this.itemCount - 1);\n }\n return {\n start: start,\n stop: stop\n };\n };\n /**\n * Clear all cached values for items after the specified index.\n * This method should be called for any item that has changed its size.\n * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionForIndex() is called.\n */\n SizeAndPositionManager.prototype.resetItem = function (index) {\n this.lastMeasuredIndex = Math.min(this.lastMeasuredIndex, index - 1);\n };\n /**\n * Searches for the item (index) nearest the specified offset.\n *\n * If no exact match is found the next lowest item index will be returned.\n * This allows partially visible items (with offsets just before/above the fold) to be visible.\n */\n SizeAndPositionManager.prototype.findNearestItem = function (offset) {\n if (isNaN(offset)) {\n throw Error(\"Invalid offset \" + offset + \" specified\");\n }\n // Our search algorithms find the nearest match at or below the specified offset.\n // So make sure the offset is at least 0 or no match will be found.\n offset = Math.max(0, offset);\n var lastMeasuredSizeAndPosition = this.getSizeAndPositionOfLastMeasuredItem();\n var lastMeasuredIndex = Math.max(0, this.lastMeasuredIndex);\n if (lastMeasuredSizeAndPosition.offset >= offset) {\n // If we've already measured items within this range just use a binary search as it's faster.\n return this.binarySearch({\n high: lastMeasuredIndex,\n low: 0,\n offset: offset\n });\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of items as a binary search would.\n // The overall complexity for this approach is O(log n).\n return this.exponentialSearch({\n index: lastMeasuredIndex,\n offset: offset\n });\n }\n };\n SizeAndPositionManager.prototype.binarySearch = function (_a) {\n var low = _a.low,\n high = _a.high,\n offset = _a.offset;\n var middle = 0;\n var currentOffset = 0;\n while (low <= high) {\n middle = low + Math.floor((high - low) / 2);\n currentOffset = this.getSizeAndPositionForIndex(middle).offset;\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n if (low > 0) {\n return low - 1;\n }\n return 0;\n };\n SizeAndPositionManager.prototype.exponentialSearch = function (_a) {\n var index = _a.index,\n offset = _a.offset;\n var interval = 1;\n while (index < this.itemCount && this.getSizeAndPositionForIndex(index).offset < offset) {\n index += interval;\n interval *= 2;\n }\n return this.binarySearch({\n high: Math.min(index, this.itemCount - 1),\n low: Math.floor(index / 2),\n offset: offset\n });\n };\n return SizeAndPositionManager;\n}();\n\nvar STYLE_WRAPPER = {\n overflow: 'auto',\n willChange: 'transform',\n WebkitOverflowScrolling: 'touch'\n};\nvar STYLE_INNER = {\n position: 'relative',\n width: '100%',\n minHeight: '100%'\n};\nvar STYLE_ITEM = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%'\n};\nvar STYLE_STICKY_ITEM = __assign({}, STYLE_ITEM, { position: 'sticky' });\nvar VirtualList = /** @class */function (_super) {\n __extends(VirtualList, _super);\n function VirtualList() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.itemSizeGetter = function (itemSize) {\n return function (index) {\n return _this.getSize(index, itemSize);\n };\n };\n _this.sizeAndPositionManager = new SizeAndPositionManager({\n itemCount: _this.props.itemCount,\n itemSizeGetter: _this.itemSizeGetter(_this.props.itemSize),\n estimatedItemSize: _this.getEstimatedItemSize()\n });\n _this.state = {\n offset: _this.props.scrollOffset || _this.props.scrollToIndex != null && _this.getOffsetForIndex(_this.props.scrollToIndex) || 0,\n scrollChangeReason: SCROLL_CHANGE_REASON.REQUESTED\n };\n _this.styleCache = {};\n _this.getRef = function (node) {\n _this.rootNode = node;\n };\n _this.handleScroll = function (event) {\n var onScroll = _this.props.onScroll;\n var offset = _this.getNodeOffset();\n if (offset < 0 || _this.state.offset === offset || event.target !== _this.rootNode) {\n return;\n }\n _this.setState({\n offset: offset,\n scrollChangeReason: SCROLL_CHANGE_REASON.OBSERVED\n });\n if (typeof onScroll === 'function') {\n onScroll(offset, event);\n }\n };\n return _this;\n }\n VirtualList.prototype.componentDidMount = function () {\n var _a = this.props,\n scrollOffset = _a.scrollOffset,\n scrollToIndex = _a.scrollToIndex;\n this.rootNode.addEventListener('scroll', this.handleScroll, {\n passive: true\n });\n if (scrollOffset != null) {\n this.scrollTo(scrollOffset);\n } else if (scrollToIndex != null) {\n this.scrollTo(this.getOffsetForIndex(scrollToIndex));\n }\n };\n VirtualList.prototype.componentWillReceiveProps = function (nextProps) {\n var _a = this.props,\n estimatedItemSize = _a.estimatedItemSize,\n itemCount = _a.itemCount,\n itemSize = _a.itemSize,\n scrollOffset = _a.scrollOffset,\n scrollToAlignment = _a.scrollToAlignment,\n scrollToIndex = _a.scrollToIndex;\n var scrollPropsHaveChanged = nextProps.scrollToIndex !== scrollToIndex || nextProps.scrollToAlignment !== scrollToAlignment;\n var itemPropsHaveChanged = nextProps.itemCount !== itemCount || nextProps.itemSize !== itemSize || nextProps.estimatedItemSize !== estimatedItemSize;\n if (nextProps.itemSize !== itemSize) {\n this.sizeAndPositionManager.updateConfig({\n itemSizeGetter: this.itemSizeGetter(nextProps.itemSize)\n });\n }\n if (nextProps.itemCount !== itemCount || nextProps.estimatedItemSize !== estimatedItemSize) {\n this.sizeAndPositionManager.updateConfig({\n itemCount: nextProps.itemCount,\n estimatedItemSize: this.getEstimatedItemSize(nextProps)\n });\n }\n if (itemPropsHaveChanged) {\n this.recomputeSizes();\n }\n if (nextProps.scrollOffset !== scrollOffset) {\n this.setState({\n offset: nextProps.scrollOffset || 0,\n scrollChangeReason: SCROLL_CHANGE_REASON.REQUESTED\n });\n } else if (typeof nextProps.scrollToIndex === 'number' && (scrollPropsHaveChanged || itemPropsHaveChanged)) {\n this.setState({\n offset: this.getOffsetForIndex(nextProps.scrollToIndex, nextProps.scrollToAlignment, nextProps.itemCount),\n scrollChangeReason: SCROLL_CHANGE_REASON.REQUESTED\n });\n }\n };\n VirtualList.prototype.componentDidUpdate = function (_, prevState) {\n var _a = this.state,\n offset = _a.offset,\n scrollChangeReason = _a.scrollChangeReason;\n if (prevState.offset !== offset && scrollChangeReason === SCROLL_CHANGE_REASON.REQUESTED) {\n this.scrollTo(offset);\n }\n };\n VirtualList.prototype.componentWillUnmount = function () {\n this.rootNode.removeEventListener('scroll', this.handleScroll);\n };\n VirtualList.prototype.scrollTo = function (value) {\n var _a = this.props.scrollDirection,\n scrollDirection = _a === void 0 ? DIRECTION.VERTICAL : _a;\n this.rootNode[scrollProp[scrollDirection]] = value;\n };\n VirtualList.prototype.getOffsetForIndex = function (index, scrollToAlignment, itemCount) {\n if (scrollToAlignment === void 0) {\n scrollToAlignment = this.props.scrollToAlignment;\n }\n if (itemCount === void 0) {\n itemCount = this.props.itemCount;\n }\n var _a = this.props.scrollDirection,\n scrollDirection = _a === void 0 ? DIRECTION.VERTICAL : _a;\n if (index < 0 || index >= itemCount) {\n index = 0;\n }\n return this.sizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: this.props[sizeProp[scrollDirection]],\n currentOffset: this.state && this.state.offset || 0,\n targetIndex: index\n });\n };\n VirtualList.prototype.recomputeSizes = function (startIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n this.styleCache = {};\n this.sizeAndPositionManager.resetItem(startIndex);\n };\n VirtualList.prototype.render = function () {\n var _this = this;\n var _a = this.props,\n estimatedItemSize = _a.estimatedItemSize,\n height = _a.height,\n _b = _a.overscanCount,\n overscanCount = _b === void 0 ? 3 : _b,\n renderItem = _a.renderItem,\n itemCount = _a.itemCount,\n itemSize = _a.itemSize,\n onItemsRendered = _a.onItemsRendered,\n onScroll = _a.onScroll,\n _c = _a.scrollDirection,\n scrollDirection = _c === void 0 ? DIRECTION.VERTICAL : _c,\n scrollOffset = _a.scrollOffset,\n scrollToIndex = _a.scrollToIndex,\n scrollToAlignment = _a.scrollToAlignment,\n stickyIndices = _a.stickyIndices,\n style = _a.style,\n width = _a.width,\n props = __rest(_a, [\"estimatedItemSize\", \"height\", \"overscanCount\", \"renderItem\", \"itemCount\", \"itemSize\", \"onItemsRendered\", \"onScroll\", \"scrollDirection\", \"scrollOffset\", \"scrollToIndex\", \"scrollToAlignment\", \"stickyIndices\", \"style\", \"width\"]);\n var offset = this.state.offset;\n var _d = this.sizeAndPositionManager.getVisibleRange({\n containerSize: this.props[sizeProp[scrollDirection]] || 0,\n offset: offset,\n overscanCount: overscanCount\n }),\n start = _d.start,\n stop = _d.stop;\n var items = [];\n var wrapperStyle = __assign({}, STYLE_WRAPPER, style, { height: height, width: width });\n var innerStyle = __assign({}, STYLE_INNER, (_e = {}, _e[sizeProp[scrollDirection]] = this.sizeAndPositionManager.getTotalSize(), _e));\n if (stickyIndices != null && stickyIndices.length !== 0) {\n stickyIndices.forEach(function (index) {\n return items.push(renderItem({\n index: index,\n style: _this.getStyle(index, true)\n }));\n });\n if (scrollDirection === DIRECTION.HORIZONTAL) {\n innerStyle.display = 'flex';\n }\n }\n if (typeof start !== 'undefined' && typeof stop !== 'undefined') {\n for (var index = start; index <= stop; index++) {\n if (stickyIndices != null && stickyIndices.includes(index)) {\n continue;\n }\n items.push(renderItem({\n index: index,\n style: this.getStyle(index, false)\n }));\n }\n if (typeof onItemsRendered === 'function') {\n onItemsRendered({\n startIndex: start,\n stopIndex: stop\n });\n }\n }\n return createElement(\"div\", __assign({ ref: this.getRef }, props, { style: wrapperStyle }), createElement(\"div\", { style: innerStyle }, items));\n var _e;\n };\n VirtualList.prototype.getNodeOffset = function () {\n var _a = this.props.scrollDirection,\n scrollDirection = _a === void 0 ? DIRECTION.VERTICAL : _a;\n return this.rootNode[scrollProp[scrollDirection]];\n };\n VirtualList.prototype.getEstimatedItemSize = function (props) {\n if (props === void 0) {\n props = this.props;\n }\n return props.estimatedItemSize || typeof props.itemSize === 'number' && props.itemSize || 50;\n };\n VirtualList.prototype.getSize = function (index, itemSize) {\n if (typeof itemSize === 'function') {\n return itemSize(index);\n }\n return Array.isArray(itemSize) ? itemSize[index] : itemSize;\n };\n VirtualList.prototype.getStyle = function (index, sticky) {\n var style = this.styleCache[index];\n if (style) {\n return style;\n }\n var _a = this.props.scrollDirection,\n scrollDirection = _a === void 0 ? DIRECTION.VERTICAL : _a;\n var _b = this.sizeAndPositionManager.getSizeAndPositionForIndex(index),\n size = _b.size,\n offset = _b.offset;\n return this.styleCache[index] = sticky ? __assign({}, STYLE_STICKY_ITEM, (_c = {}, _c[sizeProp[scrollDirection]] = size, _c[marginProp[scrollDirection]] = offset, _c[oppositeMarginProp[scrollDirection]] = -(offset + size), _c.zIndex = 1, _c)) : __assign({}, STYLE_ITEM, (_d = {}, _d[sizeProp[scrollDirection]] = size, _d[positionProp[scrollDirection]] = offset, _d));\n var _c, _d;\n };\n VirtualList.defaultProps = {\n overscanCount: 3,\n scrollDirection: DIRECTION.VERTICAL,\n width: '100%'\n };\n VirtualList.propTypes = {\n estimatedItemSize: number,\n height: oneOfType([number, string]).isRequired,\n itemCount: number.isRequired,\n itemSize: oneOfType([number, array, func]).isRequired,\n onScroll: func,\n onItemsRendered: func,\n overscanCount: number,\n renderItem: func.isRequired,\n scrollOffset: number,\n scrollToIndex: number,\n scrollToAlignment: oneOf([ALIGNMENT.AUTO, ALIGNMENT.START, ALIGNMENT.CENTER, ALIGNMENT.END]),\n scrollDirection: oneOf([DIRECTION.HORIZONTAL, DIRECTION.VERTICAL]),\n stickyIndices: arrayOf(number),\n style: object,\n width: oneOfType([number, string])\n };\n return VirtualList;\n}(PureComponent);\n\nexport { DIRECTION as ScrollDirection };\nexport default VirtualList;\n","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
      \n * I'm a fade Transition!\n *
      \n * )}\n *
      \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
      \n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
      \n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
      ` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
      ` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import React from 'react';\nexport default React.createContext(null);","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict'\n\nmodule.exports = parse\n\nvar fromMarkdown = require('mdast-util-from-markdown')\n\nfunction parse(options) {\n var self = this\n\n this.Parser = parse\n\n function parse(doc) {\n return fromMarkdown(\n doc,\n Object.assign({}, self.data('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: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n )\n }\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","// Inspiration: https://github.com/facebook/react/issues/3386\n\nfunction replace (string, regexpOrSubstr, newValueOrFn, globalOffset) {\n\tif (typeof string !== 'string') throw new Error('First param must be a string')\n\tif (typeof regexpOrSubstr !== 'string' && !(regexpOrSubstr instanceof RegExp)) throw new Error('Second param must be a string pattern or a regular expression')\n\n\tvar fn = (typeof regexpOrSubstr === 'string') ? replaceUsingString : replaceUsingRegexp\n\n\treturn fn(string, regexpOrSubstr, newValueOrFn, globalOffset)\n}\n\nfunction replaceUsingString (string, patternString, newValueOrFn, globalOffset) {\n\tvar index = string.indexOf(patternString)\n\n\tif (index >= 0) {\n\t\tvar arr = []\n\t\tvar endIndex = index + patternString.length\n\n\t\tif (index > 0) {\n\t\t\tarr.push(string.substring(0, index))\n\t\t}\n\n\t\tarr.push(\n\t\t\t(typeof newValueOrFn === 'function') ?\n\t\t\t\tnewValueOrFn(\n\t\t\t\t\tstring.substring(index, endIndex),\n\t\t\t\t\tindex + globalOffset,\n\t\t\t\t\tstring\n\t\t\t\t) :\n\t\t\t\tnewValueOrFn\n\t\t)\n\n\t\tif (endIndex < string.length) {\n\t\t\tarr.push(string.substring(endIndex))\n\t\t}\n\n\t\treturn arr\n\t} else {\n\t\treturn [string]\n\t}\n}\n\nfunction replaceUsingRegexp (string, regexp, newValueOrFn, globalOffset) {\n\tvar output = []\n\n\tvar replacerIsFn = (typeof newValueOrFn === 'function')\n\n\tvar storedLastIndex = regexp.lastIndex\n\tregexp.lastIndex = 0\n\n\tvar result\n\tvar lastIndex = 0\n\twhile (result = regexp.exec(string)) {\n\t\tvar index = result.index\n\n\t\tif (result[0] === '') {\n\t\t\t// When the regexp is an empty string\n\t\t\t// we still want to advance our cursor to the next item.\n\t\t\t// This is the behavior of String.replace.\n\t\t\tregexp.lastIndex++\n\t\t}\n\n\t\tif (index !== lastIndex) {\n\t\t\toutput.push(string.substring(lastIndex, index))\n\t\t}\n\n\t\tvar match = result[0]\n\t\tlastIndex = index + match.length\n\t\t\n\t\tvar out = replacerIsFn ?\n\t\t\tnewValueOrFn.apply(this, result.concat(index + globalOffset, result.input)) :\n\t\t\tnewValueOrFn\n\t\toutput.push(out)\n\n\t\tif (!regexp.global) {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif (lastIndex < string.length) {\n\t\toutput.push(string.substring(lastIndex))\n\t}\n\n\tregexp.lastIndex = storedLastIndex\n\treturn output\n}\n\nmodule.exports = function stringReplaceToArray (stringOrArray, regexpOrSubstr, newSubStrOrFn) {\n\tif (typeof stringOrArray === 'string') {\n\t\treturn replace(stringOrArray, regexpOrSubstr, newSubStrOrFn, 0)\n\t} else if (!Array.isArray(stringOrArray) || !stringOrArray[0]) {\n\t\tthrow new TypeError('First argument must be an array or non-empty string')\n\t} else {\n\t\tvar len = stringOrArray.length\n\t\tvar output = []\n\t\tvar globalOffset = 0\n\t\tfor (var i = 0; i < len; ++i) {\n\t\t\tvar arrayItem = stringOrArray[i]\n\t\t\tif (typeof arrayItem === 'string') {\n\t\t\t\toutput.push.apply(output, replace(arrayItem, regexpOrSubstr, newSubStrOrFn, globalOffset))\n\t\t\t\tglobalOffset += arrayItem.length\n\t\t\t} else {\n\t\t\t\toutput.push(arrayItem)\n\t\t\t}\n\t\t}\n\t\treturn output\n\t}\n}","'use strict'\n\nvar wrap = require('./wrap.js')\n\nmodule.exports = trough\n\ntrough.wrap = wrap\n\nvar slice = [].slice\n\n// Create new middleware.\nfunction trough() {\n var fns = []\n var middleware = {}\n\n middleware.run = run\n middleware.use = use\n\n return middleware\n\n // Run `fns`. Last argument must be a completion handler.\n function run() {\n var index = -1\n var input = slice.call(arguments, 0, -1)\n var done = arguments[arguments.length - 1]\n\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done)\n }\n\n next.apply(null, [null].concat(input))\n\n // Run the next `fn`, if any.\n function next(err) {\n var fn = fns[++index]\n var params = slice.call(arguments, 0)\n var values = params.slice(1)\n var length = input.length\n var pos = -1\n\n if (err) {\n done(err)\n return\n }\n\n // Copy non-nully input into values.\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos]\n }\n }\n\n input = values\n\n // Next or done.\n if (fn) {\n wrap(fn, next).apply(null, input)\n } else {\n done.apply(null, [null].concat(input))\n }\n }\n }\n\n // Add `fn` to the list.\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn)\n }\n\n fns.push(fn)\n\n return middleware\n }\n}\n","'use strict'\n\nvar slice = [].slice\n\nmodule.exports = wrap\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n var invoked\n\n return wrapped\n\n function wrapped() {\n var params = slice.call(arguments, 0)\n var callback = fn.length > params.length\n var result\n\n if (callback) {\n params.push(done)\n }\n\n try {\n result = fn.apply(null, params)\n } catch (error) {\n // Well, this is quite the pickle.\n // `fn` received a callback and invoked it (thus continuing the pipeline),\n // but later also threw an error.\n // We’re not about to restart the pipeline again, so the only thing left\n // to do is to throw the thing instead.\n if (callback && invoked) {\n throw error\n }\n\n return done(error)\n }\n\n if (!callback) {\n if (result && 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 // Invoke `next`, only once.\n function done() {\n if (!invoked) {\n invoked = true\n\n callback.apply(null, arguments)\n }\n }\n\n // Invoke `done` with one value.\n // Tracks if an error is passed, too.\n function then(value) {\n done(null, value)\n }\n}\n","'use strict'\n\nvar bail = require('bail')\nvar buffer = require('is-buffer')\nvar extend = require('extend')\nvar plain = require('is-plain-obj')\nvar trough = require('trough')\nvar vfile = require('vfile')\n\n// Expose a frozen processor.\nmodule.exports = unified().freeze()\n\nvar slice = [].slice\nvar own = {}.hasOwnProperty\n\n// Process pipeline.\nvar pipeline = trough()\n .use(pipelineParse)\n .use(pipelineRun)\n .use(pipelineStringify)\n\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file)\n}\n\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done)\n\n function done(err, tree, file) {\n if (err) {\n next(err)\n } else {\n ctx.tree = tree\n ctx.file = file\n next()\n }\n }\n}\n\nfunction pipelineStringify(p, ctx) {\n var result = p.stringify(ctx.tree, ctx.file)\n var file = ctx.file\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (typeof result === 'string' || buffer(result)) {\n file.contents = result\n } else {\n file.result = result\n }\n}\n\n// Function to create the first processor.\nfunction unified() {\n var attachers = []\n var transformers = trough()\n var namespace = {}\n var frozen = false\n var freezeIndex = -1\n\n // Data management.\n processor.data = data\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n processor.run = run\n processor.runSync = runSync\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 function processor() {\n var destination = unified()\n var length = attachers.length\n var index = -1\n\n while (++index < length) {\n destination.use.apply(null, attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n // Freeze: used to signal a processor that has finished configuration.\n //\n // For example, take unified itself: it’s frozen.\n // Plugins should not be added to it.\n // Rather, it should be extended, by invoking it, before modifying it.\n //\n // In essence, always invoke this when exporting a processor.\n function freeze() {\n var values\n var plugin\n var options\n var transformer\n\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex]\n plugin = values[0]\n options = values[1]\n transformer = null\n\n if (options === false) {\n continue\n }\n\n if (options === true) {\n values[1] = undefined\n }\n\n transformer = plugin.apply(processor, values.slice(1))\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Infinity\n\n return processor\n }\n\n // Data management.\n // Getter / setter for processor-specific informtion.\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n\n namespace[key] = value\n\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 // Plugin management.\n //\n // Pass it:\n // * an attacher and options,\n // * a preset,\n // * a list of presets, attachers, and arguments (list of attachers and\n // options).\n function use(value) {\n var settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings)\n }\n\n return processor\n\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = extend(settings || {}, result.settings)\n }\n }\n\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n }\n\n function addList(plugins) {\n var length\n var index\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n length = plugins.length\n index = -1\n\n while (++index < length) {\n add(plugins[index])\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n function addPlugin(plugin, value) {\n var entry = find(plugin)\n\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(entry[1], value)\n }\n\n entry[1] = value\n } else {\n attachers.push(slice.call(arguments))\n }\n }\n }\n\n function find(plugin) {\n var length = attachers.length\n var index = -1\n var entry\n\n while (++index < length) {\n entry = attachers[index]\n\n if (entry[0] === plugin) {\n return entry\n }\n }\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor.\n function parse(doc) {\n var file = vfile(doc)\n var Parser\n\n freeze()\n Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n return new Parser(String(file), file).parse()\n }\n\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), async.\n function run(node, file, cb) {\n assertNode(node)\n freeze()\n\n if (!cb && typeof file === 'function') {\n cb = file\n file = null\n }\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done)\n\n function done(err, tree, file) {\n tree = tree || node\n if (err) {\n reject(err)\n } else if (resolve) {\n resolve(tree)\n } else {\n cb(null, tree, file)\n }\n }\n }\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), sync.\n function runSync(node, file) {\n var complete = false\n var result\n\n run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n return result\n\n function done(err, tree) {\n complete = true\n bail(err)\n result = tree\n }\n }\n\n // Stringify a unist node representation of a file (in string or vfile\n // representation) into a string using the `Compiler` on the processor.\n function stringify(node, doc) {\n var file = vfile(doc)\n var Compiler\n\n freeze()\n Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n return new Compiler(node, file).compile()\n }\n\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor, then run transforms on that node, and\n // compile the resulting node using the `Compiler` on the processor, and\n // store that result on the vfile.\n function process(doc, cb) {\n freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n var file = vfile(doc)\n\n pipeline.run(processor, {file: file}, done)\n\n function done(err) {\n if (err) {\n reject(err)\n } else if (resolve) {\n resolve(file)\n } else {\n cb(null, file)\n }\n }\n }\n }\n\n // Process the given document (in string or vfile representation), sync.\n function processSync(doc) {\n var complete = false\n var file\n\n freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n file = vfile(doc)\n\n process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n function done(err) {\n complete = true\n bail(err)\n }\n }\n}\n\n// Check if `value` is a constructor.\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\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 (keys(value.prototype) || name in value.prototype)\n )\n}\n\n// Check if `value` is an object with keys.\nfunction keys(value) {\n var key\n for (key in value) {\n return true\n }\n\n return false\n}\n\n// Assert a parser is available.\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`')\n }\n}\n\n// Assert a compiler is available.\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n// Assert the processor is not frozen.\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot invoke `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n// Assert `node` is a unist node.\nfunction assertNode(node) {\n if (!node || typeof node.type !== 'string') {\n throw new Error('Expected node, got `' + node + '`')\n }\n}\n\n// Assert that `complete` is `true`.\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n","'use strict'\n\nmodule.exports = convert\n\nfunction convert(test) {\n if (test == null) {\n return ok\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n if (typeof test === 'object') {\n return 'length' in test ? anyFactory(test) : allFactory(test)\n }\n\n if (typeof test === 'function') {\n return test\n }\n\n throw new Error('Expected function, string, or object as test')\n}\n\n// Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\nfunction allFactory(test) {\n return all\n\n function all(node) {\n var key\n\n for (key in test) {\n if (node[key] !== test[key]) return false\n }\n\n return true\n }\n}\n\nfunction anyFactory(tests) {\n var checks = []\n var index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return any\n\n function any() {\n var index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, arguments)) {\n return true\n }\n }\n\n return false\n }\n}\n\n// Utility to convert a string into a function which checks a given node’s type\n// for said string.\nfunction typeFactory(test) {\n return type\n\n function type(node) {\n return Boolean(node && node.type === test)\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position)\n }\n\n // Position.\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value)\n }\n\n // Point.\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {}\n }\n\n return index(point.line) + ':' + index(point.column)\n}\n\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {}\n }\n\n return point(pos.start) + '-' + point(pos.end)\n}\n\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","'use strict'\n\n/* Expose. */\nmodule.exports = visitParents\n\n/* Visit. */\nfunction visitParents(tree, type, visitor) {\n var stack = []\n\n if (typeof type === 'function') {\n visitor = type\n type = null\n }\n\n one(tree)\n\n /* Visit a single node. */\n function one(node) {\n var result\n\n if (!type || node.type === type) {\n result = visitor(node, stack.concat())\n }\n\n if (node.children && result !== false) {\n return all(node.children, node)\n }\n\n return result\n }\n\n /* Visit children in `parent`. */\n function all(children, parent) {\n var length = children.length\n var index = -1\n var child\n\n stack.push(parent)\n\n while (++index < length) {\n child = children[index]\n\n if (child && one(child) === false) {\n return false\n }\n }\n\n stack.pop()\n\n return true\n }\n}\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(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 function overload(node, parents) {\n var parent = parents[parents.length - 1]\n var index = parent ? parent.children.indexOf(node) : null\n return visitor(node, index, parent)\n }\n}\n","module.exports = identity\nfunction identity(d) {\n return d\n}\n","'use strict'\n\nmodule.exports = visitParents\n\nvar convert = require('unist-util-is/convert')\nvar color = require('./color')\n\nvar CONTINUE = true\nvar SKIP = 'skip'\nvar EXIT = false\n\nvisitParents.CONTINUE = CONTINUE\nvisitParents.SKIP = SKIP\nvisitParents.EXIT = EXIT\n\nfunction visitParents(tree, test, visitor, reverse) {\n var step\n var is\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n is = convert(test)\n step = reverse ? -1 : 1\n\n factory(tree, null, [])()\n\n function factory(node, index, parents) {\n var value = typeof node === 'object' && node !== null ? node : {}\n var name\n\n if (typeof value.type === 'string') {\n name =\n typeof value.tagName === 'string'\n ? value.tagName\n : typeof value.name === 'string'\n ? value.name\n : undefined\n\n visit.displayName =\n 'node (' + color(value.type + (name ? '<' + name + '>' : '')) + ')'\n }\n\n return visit\n\n function visit() {\n var grandparents = parents.concat(node)\n var result = []\n var subresult\n var offset\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if (node.children && result[0] !== SKIP) {\n offset = (reverse ? node.children.length : -1) + step\n\n while (offset > -1 && offset < node.children.length) {\n subresult = factory(node.children[offset], offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n\n return result\n }\n }\n}\n\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","module.exports = (function(){\n /*\n * Generated by PEG.js 0.7.0.\n *\n * http://pegjs.majda.cz/\n */\n \n function quote(s) {\n /*\n * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a\n * string literal except for the closing quote character, backslash,\n * carriage return, line separator, paragraph separator, and line feed.\n * Any character may appear in the form of an escape sequence.\n *\n * For portability, we also escape escape all control and non-ASCII\n * characters. Note that \"\\0\" and \"\\v\" escape sequences are not used\n * because JSHint does not like the first and IE the second.\n */\n return '\"' + s\n .replace(/\\\\/g, '\\\\\\\\') // backslash\n .replace(/\"/g, '\\\\\"') // closing quote character\n .replace(/\\x08/g, '\\\\b') // backspace\n .replace(/\\t/g, '\\\\t') // horizontal tab\n .replace(/\\n/g, '\\\\n') // line feed\n .replace(/\\f/g, '\\\\f') // form feed\n .replace(/\\r/g, '\\\\r') // carriage return\n .replace(/[\\x00-\\x07\\x0B\\x0E-\\x1F\\x80-\\uFFFF]/g, escape)\n + '\"';\n }\n \n var result = {\n /*\n * Parses the input with a generated parser. If the parsing is successfull,\n * returns a value explicitly or implicitly specified by the grammar from\n * which the parser was generated (see |PEG.buildParser|). If the parsing is\n * unsuccessful, throws |PEG.parser.SyntaxError| describing the error.\n */\n parse: function(input, startRule) {\n var parseFunctions = {\n \"uriTemplate\": parse_uriTemplate,\n \"expression\": parse_expression,\n \"op\": parse_op,\n \"pathExpression\": parse_pathExpression,\n \"paramList\": parse_paramList,\n \"param\": parse_param,\n \"cut\": parse_cut,\n \"listMarker\": parse_listMarker,\n \"substr\": parse_substr,\n \"nonexpression\": parse_nonexpression,\n \"extension\": parse_extension\n };\n \n if (startRule !== undefined) {\n if (parseFunctions[startRule] === undefined) {\n throw new Error(\"Invalid rule name: \" + quote(startRule) + \".\");\n }\n } else {\n startRule = \"uriTemplate\";\n }\n \n var pos = 0;\n var reportFailures = 0;\n var rightmostFailuresPos = 0;\n var rightmostFailuresExpected = [];\n \n function padLeft(input, padding, length) {\n var result = input;\n \n var padLength = length - input.length;\n for (var i = 0; i < padLength; i++) {\n result = padding + result;\n }\n \n return result;\n }\n \n function escape(ch) {\n var charCode = ch.charCodeAt(0);\n var escapeChar;\n var length;\n \n if (charCode <= 0xFF) {\n escapeChar = 'x';\n length = 2;\n } else {\n escapeChar = 'u';\n length = 4;\n }\n \n return '\\\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);\n }\n \n function matchFailed(failure) {\n if (pos < rightmostFailuresPos) {\n return;\n }\n \n if (pos > rightmostFailuresPos) {\n rightmostFailuresPos = pos;\n rightmostFailuresExpected = [];\n }\n \n rightmostFailuresExpected.push(failure);\n }\n \n function parse_uriTemplate() {\n var result0, result1;\n var pos0;\n \n pos0 = pos;\n result0 = [];\n result1 = parse_nonexpression();\n if (result1 === null) {\n result1 = parse_expression();\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_nonexpression();\n if (result1 === null) {\n result1 = parse_expression();\n }\n }\n if (result0 !== null) {\n result0 = (function(offset, pieces) { return new Template(pieces) })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_expression() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 123) {\n result0 = \"{\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"{\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_op();\n if (result1 !== null) {\n result2 = parse_paramList();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 125) {\n result3 = \"}\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"}\\\"\");\n }\n }\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, op, params) { return expression(op, params) })(pos0, result0[1], result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_op() {\n var result0;\n \n if (/^[\\/;:.?&+#]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\/;:.?&+#]\");\n }\n }\n if (result0 === null) {\n result0 = \"\";\n }\n return result0;\n }\n \n function parse_pathExpression() {\n var result0;\n \n if (input.substr(pos, 2) === \"{/\") {\n result0 = \"{/\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"{/\\\"\");\n }\n }\n return result0;\n }\n \n function parse_paramList() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2, pos3;\n \n pos0 = pos;\n pos1 = pos;\n result0 = parse_param();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n pos3 = pos;\n if (input.charCodeAt(pos) === 44) {\n result2 = \",\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos3;\n }\n } else {\n result2 = null;\n pos = pos3;\n }\n if (result2 !== null) {\n result2 = (function(offset, p) { return p; })(pos2, result2[1]);\n }\n if (result2 === null) {\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n pos3 = pos;\n if (input.charCodeAt(pos) === 44) {\n result2 = \",\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos3;\n }\n } else {\n result2 = null;\n pos = pos3;\n }\n if (result2 !== null) {\n result2 = (function(offset, p) { return p; })(pos2, result2[1]);\n }\n if (result2 === null) {\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, hd, rst) { rst.unshift(hd); return rst; })(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_param() {\n var result0, result1, result2;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (/^[a-zA-Z0-9_.%]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-zA-Z0-9_.%]\");\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n if (/^[a-zA-Z0-9_.%]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-zA-Z0-9_.%]\");\n }\n }\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result1 = parse_cut();\n if (result1 === null) {\n result1 = parse_listMarker();\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_extension();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, chars, clm, e) { clm = clm || {};\n return {\n name: chars.join(''),\n explode: clm.listMarker,\n cut: clm.cut,\n extended: e\n } })(pos0, result0[0], result0[1], result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_cut() {\n var result0;\n var pos0;\n \n pos0 = pos;\n result0 = parse_substr();\n if (result0 !== null) {\n result0 = (function(offset, cut) { return {cut: cut}; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_listMarker() {\n var result0;\n var pos0;\n \n pos0 = pos;\n if (input.charCodeAt(pos) === 42) {\n result0 = \"*\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset, listMarker) { return {listMarker: listMarker}; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_substr() {\n var result0, result1, result2;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 !== null) {\n if (/^[0-9]/.test(input.charAt(pos))) {\n result2 = input.charAt(pos);\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n if (result2 !== null) {\n result1 = [];\n while (result2 !== null) {\n result1.push(result2);\n if (/^[0-9]/.test(input.charAt(pos))) {\n result2 = input.charAt(pos);\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n }\n } else {\n result1 = null;\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, digits) { return parseInt(digits.join('')) })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_nonexpression() {\n var result0, result1;\n var pos0;\n \n pos0 = pos;\n if (/^[^{]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[^{]\");\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n if (/^[^{]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[^{]\");\n }\n }\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, chars) { return chars.join(''); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n function parse_extension() {\n var result0, result1, result2;\n var pos0, pos1;\n \n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 40) {\n result0 = \"(\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result0 !== null) {\n if (/^[^)]/.test(input.charAt(pos))) {\n result2 = input.charAt(pos);\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"[^)]\");\n }\n }\n if (result2 !== null) {\n result1 = [];\n while (result2 !== null) {\n result1.push(result2);\n if (/^[^)]/.test(input.charAt(pos))) {\n result2 = input.charAt(pos);\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"[^)]\");\n }\n }\n }\n } else {\n result1 = null;\n }\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 41) {\n result2 = \")\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, chars) { return chars.join('') })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n \n \n function cleanupExpected(expected) {\n expected.sort();\n \n var lastExpected = null;\n var cleanExpected = [];\n for (var i = 0; i < expected.length; i++) {\n if (expected[i] !== lastExpected) {\n cleanExpected.push(expected[i]);\n lastExpected = expected[i];\n }\n }\n return cleanExpected;\n }\n \n function computeErrorPosition() {\n /*\n * The first idea was to use |String.split| to break the input up to the\n * error position along newlines and derive the line and column from\n * there. However IE's |split| implementation is so broken that it was\n * enough to prevent it.\n */\n \n var line = 1;\n var column = 1;\n var seenCR = false;\n \n for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) {\n var ch = input.charAt(i);\n if (ch === \"\\n\") {\n if (!seenCR) { line++; }\n column = 1;\n seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n line++;\n column = 1;\n seenCR = true;\n } else {\n column++;\n seenCR = false;\n }\n }\n \n return { line: line, column: column };\n }\n \n \n var cls = require('./lib/classes')\n var Template = cls.Template\n var expression = cls.expression\n \n \n var result = parseFunctions[startRule]();\n \n /*\n * The parser is now in one of the following three states:\n *\n * 1. The parser successfully parsed the whole input.\n *\n * - |result !== null|\n * - |pos === input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 2. The parser successfully parsed only a part of the input.\n *\n * - |result !== null|\n * - |pos < input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 3. The parser did not successfully parse any part of the input.\n *\n * - |result === null|\n * - |pos === 0|\n * - |rightmostFailuresExpected| contains at least one failure\n *\n * All code following this comment (including called functions) must\n * handle these states.\n */\n if (result === null || pos !== input.length) {\n var offset = Math.max(pos, rightmostFailuresPos);\n var found = offset < input.length ? input.charAt(offset) : null;\n var errorPosition = computeErrorPosition();\n \n throw new this.SyntaxError(\n cleanupExpected(rightmostFailuresExpected),\n found,\n offset,\n errorPosition.line,\n errorPosition.column\n );\n }\n \n return result;\n },\n \n /* Returns the parser source code. */\n toSource: function() { return this._source; }\n };\n \n /* Thrown when a parser encounters a syntax error. */\n \n result.SyntaxError = function(expected, found, offset, line, column) {\n function buildMessage(expected, found) {\n var expectedHumanized, foundHumanized;\n \n switch (expected.length) {\n case 0:\n expectedHumanized = \"end of input\";\n break;\n case 1:\n expectedHumanized = expected[0];\n break;\n default:\n expectedHumanized = expected.slice(0, expected.length - 1).join(\", \")\n + \" or \"\n + expected[expected.length - 1];\n }\n \n foundHumanized = found ? quote(found) : \"end of input\";\n \n return \"Expected \" + expectedHumanized + \" but \" + foundHumanized + \" found.\";\n }\n \n this.name = \"SyntaxError\";\n this.expected = expected;\n this.found = found;\n this.message = buildMessage(expected, found);\n this.offset = offset;\n this.line = line;\n this.column = column;\n };\n \n result.SyntaxError.prototype = Error.prototype;\n \n return result;\n})();\n","// Generated by CoffeeScript 1.6.3\n(function() {\n var FormContinuationExpression, FormStartExpression, FragmentExpression, LabelExpression, NamedExpression, PathParamExpression, PathSegmentExpression, ReservedExpression, SimpleExpression, Template, encoders, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7,\n __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };\n\n encoders = require('./encoders');\n\n Template = Template = (function() {\n function Template(pieces) {\n /*\n :param pieces: An array of strings and expressions in the order they appear in the template.\n */\n\n var i,\n _this = this;\n this.expressions = [];\n this.prefix = 'string' === typeof pieces[0] ? pieces.shift() : '';\n i = 0;\n pieces.forEach(function(p) {\n switch (typeof p) {\n case 'object':\n return _this.expressions[i++] = p;\n case 'string':\n return _this.expressions[i - 1].suffix = p;\n }\n });\n }\n\n Template.prototype.expand = function(vars) {\n return this.prefix + this.expressions.map(function(expr) {\n return expr.expand(vars);\n }).join('');\n };\n\n Template.prototype.toString = function() {\n return this.prefix + this.expressions.join('');\n };\n\n Template.prototype.toJSON = function() {\n return this.toString();\n };\n\n return Template;\n\n })();\n\n SimpleExpression = (function() {\n var definedPairs;\n\n SimpleExpression.prototype.first = \"\";\n\n SimpleExpression.prototype.sep = \",\";\n\n SimpleExpression.prototype.named = false;\n\n SimpleExpression.prototype.empty = \"\";\n\n SimpleExpression.prototype.allow = \"U\";\n\n function SimpleExpression(params) {\n this.params = params;\n this.explodeObject = __bind(this.explodeObject, this);\n this.explodeArray = __bind(this.explodeArray, this);\n this._expandPair = __bind(this._expandPair, this);\n this.stringifySingle = __bind(this.stringifySingle, this);\n this.encode = __bind(this.encode, this);\n if (this.params == null) {\n this.params = [];\n }\n this.suffix = '';\n }\n\n SimpleExpression.prototype.encode = function(string) {\n /*\n Encode a string value for the URI\n */\n\n return encoders[this.allow](string);\n };\n\n SimpleExpression.prototype.stringifySingle = function(param, value) {\n /*\n Encode a single value as a string\n */\n\n var k, type, v;\n type = typeof value;\n if (type === 'string' || type === 'boolean' || type === 'number') {\n value = value.toString();\n return this.encode(value.substring(0, param.cut || value.length));\n } else if (Array.isArray(value)) {\n if (param.cut) {\n throw new Error(\"Prefixed Values do not support lists. Check \" + param.name);\n }\n return value.map(this.encode).join(',');\n } else {\n if (param.cut) {\n throw new Error(\"Prefixed Values do not support maps. Check \" + param.name);\n }\n return ((function() {\n var _results;\n _results = [];\n for (k in value) {\n v = value[k];\n _results.push([k, v].map(this.encode).join(','));\n }\n return _results;\n }).call(this)).join(',');\n }\n };\n\n SimpleExpression.prototype.expand = function(vars) {\n var defined, expanded,\n _this = this;\n defined = definedPairs(this.params, vars);\n expanded = defined.map(function(pair) {\n return _this._expandPair.apply(_this, pair);\n }).join(this.sep);\n if (expanded) {\n return this.first + expanded + this.suffix;\n } else {\n if (this.empty && defined.length) {\n return this.empty + this.suffix;\n } else {\n return this.suffix;\n }\n }\n };\n\n definedPairs = function(params, vars) {\n /*\n Return an array of [key, value] arrays where ``key`` is a parameter name\n from ``@params`` and ``value`` is the value from vars, when ``value`` is\n neither undefined nor an empty collection.\n */\n\n var _this = this;\n return params.map(function(p) {\n return [p, vars[p.name]];\n }).filter(function(pair) {\n var k, v, vv;\n v = pair[1];\n switch (typeof v) {\n case \"undefined\":\n return false;\n case \"object\":\n if (Array.isArray(v)) {\n v.length > 0;\n }\n for (k in v) {\n vv = v[k];\n if (vv) {\n return true;\n }\n }\n return false;\n default:\n return true;\n }\n });\n };\n\n SimpleExpression.prototype._expandPair = function(param, value) {\n /*\n Return the expanded string form of ``pair``.\n \n :param pair: A ``[param, value]`` tuple.\n */\n\n var name;\n name = param.name;\n if (param.explode) {\n if (Array.isArray(value)) {\n return this.explodeArray(param, value);\n } else if (typeof value === 'string') {\n return this.stringifySingle(param, value);\n } else {\n return this.explodeObject(value);\n }\n } else {\n return this.stringifySingle(param, value);\n }\n };\n\n SimpleExpression.prototype.explodeArray = function(param, array) {\n return array.map(this.encode).join(this.sep);\n };\n\n SimpleExpression.prototype.explodeObject = function(object) {\n var k, pairs, v, vv, _i, _len;\n pairs = [];\n for (k in object) {\n v = object[k];\n k = this.encode(k);\n if (Array.isArray(v)) {\n for (_i = 0, _len = v.length; _i < _len; _i++) {\n vv = v[_i];\n pairs.push([k, this.encode(vv)]);\n }\n } else {\n pairs.push([k, this.encode(v)]);\n }\n }\n return pairs.map(function(pair) {\n return pair.join('=');\n }).join(this.sep);\n };\n\n SimpleExpression.prototype.toString = function() {\n var params;\n params = this.params.map(function(p) {\n return p.name + p.explode;\n }).join(',');\n return \"{\" + this.first + params + \"}\" + this.suffix;\n };\n\n SimpleExpression.prototype.toJSON = function() {\n return this.toString();\n };\n\n return SimpleExpression;\n\n })();\n\n NamedExpression = (function(_super) {\n __extends(NamedExpression, _super);\n\n function NamedExpression() {\n this.explodeArray = __bind(this.explodeArray, this);\n this.stringifySingle = __bind(this.stringifySingle, this);\n _ref = NamedExpression.__super__.constructor.apply(this, arguments);\n return _ref;\n }\n\n /*\n A NamedExpression uses name=value expansions in most cases\n */\n\n\n NamedExpression.prototype.stringifySingle = function(param, value) {\n value = (value = NamedExpression.__super__.stringifySingle.apply(this, arguments)) ? \"=\" + value : this.empty;\n return \"\" + param.name + value;\n };\n\n NamedExpression.prototype.explodeArray = function(param, array) {\n var _this = this;\n return array.map(function(v) {\n return \"\" + param.name + \"=\" + (_this.encode(v));\n }).join(this.sep);\n };\n\n return NamedExpression;\n\n })(SimpleExpression);\n\n ReservedExpression = (function(_super) {\n __extends(ReservedExpression, _super);\n\n function ReservedExpression() {\n _ref1 = ReservedExpression.__super__.constructor.apply(this, arguments);\n return _ref1;\n }\n\n ReservedExpression.prototype.encode = function(string) {\n return encoders['U+R'](string);\n };\n\n ReservedExpression.prototype.toString = function() {\n return '{+' + (ReservedExpression.__super__.toString.apply(this, arguments)).substring(1);\n };\n\n return ReservedExpression;\n\n })(SimpleExpression);\n\n FragmentExpression = (function(_super) {\n __extends(FragmentExpression, _super);\n\n function FragmentExpression() {\n _ref2 = FragmentExpression.__super__.constructor.apply(this, arguments);\n return _ref2;\n }\n\n FragmentExpression.prototype.first = '#';\n\n FragmentExpression.prototype.empty = '#';\n\n FragmentExpression.prototype.encode = function(string) {\n return encoders['U+R'](string);\n };\n\n return FragmentExpression;\n\n })(SimpleExpression);\n\n LabelExpression = (function(_super) {\n __extends(LabelExpression, _super);\n\n function LabelExpression() {\n _ref3 = LabelExpression.__super__.constructor.apply(this, arguments);\n return _ref3;\n }\n\n LabelExpression.prototype.first = '.';\n\n LabelExpression.prototype.sep = '.';\n\n LabelExpression.prototype.empty = '.';\n\n return LabelExpression;\n\n })(SimpleExpression);\n\n PathSegmentExpression = (function(_super) {\n __extends(PathSegmentExpression, _super);\n\n function PathSegmentExpression() {\n _ref4 = PathSegmentExpression.__super__.constructor.apply(this, arguments);\n return _ref4;\n }\n\n PathSegmentExpression.prototype.first = '/';\n\n PathSegmentExpression.prototype.sep = '/';\n\n return PathSegmentExpression;\n\n })(SimpleExpression);\n\n PathParamExpression = (function(_super) {\n __extends(PathParamExpression, _super);\n\n function PathParamExpression() {\n _ref5 = PathParamExpression.__super__.constructor.apply(this, arguments);\n return _ref5;\n }\n\n PathParamExpression.prototype.first = ';';\n\n PathParamExpression.prototype.sep = ';';\n\n return PathParamExpression;\n\n })(NamedExpression);\n\n FormStartExpression = (function(_super) {\n __extends(FormStartExpression, _super);\n\n function FormStartExpression() {\n _ref6 = FormStartExpression.__super__.constructor.apply(this, arguments);\n return _ref6;\n }\n\n FormStartExpression.prototype.first = '?';\n\n FormStartExpression.prototype.sep = '&';\n\n FormStartExpression.prototype.empty = '=';\n\n return FormStartExpression;\n\n })(NamedExpression);\n\n FormContinuationExpression = (function(_super) {\n __extends(FormContinuationExpression, _super);\n\n function FormContinuationExpression() {\n _ref7 = FormContinuationExpression.__super__.constructor.apply(this, arguments);\n return _ref7;\n }\n\n FormContinuationExpression.prototype.first = '&';\n\n return FormContinuationExpression;\n\n })(FormStartExpression);\n\n module.exports = {\n Template: Template,\n SimpleExpression: SimpleExpression,\n NamedExpression: NamedExpression,\n ReservedExpression: ReservedExpression,\n FragmentExpression: FragmentExpression,\n LabelExpression: LabelExpression,\n PathSegmentExpression: PathSegmentExpression,\n PathParamExpression: PathParamExpression,\n FormStartExpression: FormStartExpression,\n FormContinuationExpression: FormContinuationExpression,\n expression: function(op, params) {\n var cls;\n cls = (function() {\n switch (op) {\n case '':\n return SimpleExpression;\n case '+':\n return ReservedExpression;\n case '#':\n return FragmentExpression;\n case '.':\n return LabelExpression;\n case '/':\n return PathSegmentExpression;\n case ';':\n return PathParamExpression;\n case '?':\n return FormStartExpression;\n case '&':\n return FormContinuationExpression;\n }\n })();\n return new cls(params);\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.6.3\n(function() {\n var pctEncode;\n\n pctEncode = require('pct-encode');\n\n exports[\"U\"] = pctEncode(/[^\\w~.-]/g);\n\n exports[\"U+R\"] = pctEncode(/[^\\w.~:\\/\\?#\\[\\]@!\\$&'()*+,;=%-]|%(?!\\d\\d)/g);\n\n}).call(this);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar callback_1 = require(\"./callback\");\nfunction useDebounce(value, delay, options) {\n var _a = react_1.useState(value), state = _a[0], dispatch = _a[1];\n var _b = callback_1.default(react_1.useCallback(function (value) { return dispatch(value); }, []), delay, options), callback = _b[0], cancel = _b[1];\n var previousValue = react_1.useRef(value);\n react_1.useEffect(function () {\n // We need to use this condition otherwise we will run debounce timer for the first render (including maxWait option)\n if (previousValue.current !== value) {\n callback(value);\n previousValue.current = value;\n }\n }, [value, callback]);\n return [state, cancel];\n}\nexports.default = useDebounce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nfunction useDebouncedCallback(callback, delay, options) {\n if (options === void 0) { options = {}; }\n var maxWait = options.maxWait;\n var maxWaitHandler = react_1.useRef(null);\n var maxWaitArgs = react_1.useRef([]);\n var leading = options.leading;\n var wasLeadingCalled = react_1.useRef(false);\n var functionTimeoutHandler = react_1.useRef(null);\n var isComponentUnmounted = react_1.useRef(false);\n var debouncedFunction = callback;\n var cancelDebouncedCallback = react_1.useCallback(function () {\n clearTimeout(functionTimeoutHandler.current);\n clearTimeout(maxWaitHandler.current);\n maxWaitHandler.current = null;\n maxWaitArgs.current = [];\n functionTimeoutHandler.current = null;\n wasLeadingCalled.current = false;\n }, []);\n react_1.useEffect(function () { return function () {\n // we use flag, as we allow to call callPending outside the hook\n isComponentUnmounted.current = true;\n }; }, []);\n var debouncedCallback = react_1.useCallback(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n maxWaitArgs.current = args;\n clearTimeout(functionTimeoutHandler.current);\n if (!functionTimeoutHandler.current && leading && !wasLeadingCalled.current) {\n debouncedFunction.apply(void 0, args);\n wasLeadingCalled.current = true;\n return;\n }\n functionTimeoutHandler.current = setTimeout(function () {\n cancelDebouncedCallback();\n if (!isComponentUnmounted.current) {\n debouncedFunction.apply(void 0, args);\n }\n }, delay);\n if (maxWait && !maxWaitHandler.current) {\n maxWaitHandler.current = setTimeout(function () {\n var args = maxWaitArgs.current;\n cancelDebouncedCallback();\n if (!isComponentUnmounted.current) {\n debouncedFunction.apply(null, args);\n }\n }, maxWait);\n }\n }, [debouncedFunction, maxWait, delay, cancelDebouncedCallback, leading]);\n var callPending = function () {\n // Call pending callback only if we have anything in our queue\n if (!functionTimeoutHandler.current) {\n return;\n }\n debouncedFunction.apply(null, maxWaitArgs.current);\n cancelDebouncedCallback();\n };\n // At the moment, we use 3 args array so that we save backward compatibility\n return [debouncedCallback, cancelDebouncedCallback, callPending];\n}\nexports.default = useDebouncedCallback;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar cache_1 = require(\"./cache\");\nexports.useDebounce = cache_1.default;\nvar callback_1 = require(\"./callback\");\nexports.useDebouncedCallback = callback_1.default;\n","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]], '-',\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]],\n bth[buf[i++]], bth[buf[i++]]\n ]).join('');\n}\n\nmodule.exports = bytesToUuid;\n","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/uuidjs/uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n","'use strict'\n\nvar stringify = require('unist-util-stringify-position')\n\nmodule.exports = VMessage\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype\nVMessage.prototype = new VMessagePrototype()\n\n// Message properties.\nvar proto = VMessage.prototype\n\nproto.file = ''\nproto.name = ''\nproto.reason = ''\nproto.message = ''\nproto.stack = ''\nproto.fatal = null\nproto.column = null\nproto.line = null\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n var parts\n var range\n var location\n\n if (typeof position === 'string') {\n origin = position\n position = null\n }\n\n parts = parseOrigin(origin)\n range = stringify(position) || '1:1'\n\n location = {\n start: {line: null, column: null},\n end: {line: null, column: null}\n }\n\n // Node.\n if (position && position.position) {\n position = position.position\n }\n\n if (position) {\n // Position.\n if (position.start) {\n location = position\n position = position.start\n } else {\n // Point.\n location.start = position\n }\n }\n\n if (reason.stack) {\n this.stack = reason.stack\n reason = reason.message\n }\n\n this.message = reason\n this.name = range\n this.reason = reason\n this.line = position ? position.line : null\n this.column = position ? position.column : null\n this.location = location\n this.source = parts[0]\n this.ruleId = parts[1]\n}\n\nfunction parseOrigin(origin) {\n var result = [null, null]\n var index\n\n if (typeof origin === 'string') {\n index = origin.indexOf(':')\n\n if (index === -1) {\n result[1] = origin\n } else {\n result[0] = origin.slice(0, index)\n result[1] = origin.slice(index + 1)\n }\n }\n\n return result\n}\n","'use strict'\n\nmodule.exports = require('./lib')\n","'use strict'\n\nvar p = require('./minpath')\nvar proc = require('./minproc')\nvar buffer = require('is-buffer')\n\nmodule.exports = VFile\n\nvar own = {}.hasOwnProperty\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.\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nVFile.prototype.toString = toString\n\n// Access full path (`~/index.min.js`).\nObject.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath})\n\n// Access parent path (`~`).\nObject.defineProperty(VFile.prototype, 'dirname', {\n get: getDirname,\n set: setDirname\n})\n\n// Access basename (`index.min.js`).\nObject.defineProperty(VFile.prototype, 'basename', {\n get: getBasename,\n set: setBasename\n})\n\n// Access extname (`.js`).\nObject.defineProperty(VFile.prototype, 'extname', {\n get: getExtname,\n set: setExtname\n})\n\n// Access stem (`index.min`).\nObject.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem})\n\n// Construct a new file.\nfunction VFile(options) {\n var prop\n var index\n\n if (!options) {\n options = {}\n } else if (typeof options === 'string' || buffer(options)) {\n options = {contents: options}\n } else if ('message' in options && 'messages' in options) {\n return options\n }\n\n if (!(this instanceof VFile)) {\n return new VFile(options)\n }\n\n this.data = {}\n this.messages = []\n this.history = []\n this.cwd = proc.cwd()\n\n // Set path related properties in the correct order.\n index = -1\n\n while (++index < order.length) {\n prop = order[index]\n\n if (own.call(options, prop)) {\n this[prop] = options[prop]\n }\n }\n\n // Set non-path related properties.\n for (prop in options) {\n if (order.indexOf(prop) < 0) {\n this[prop] = options[prop]\n }\n }\n}\n\nfunction getPath() {\n return this.history[this.history.length - 1]\n}\n\nfunction setPath(path) {\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n}\n\nfunction getDirname() {\n return typeof this.path === 'string' ? p.dirname(this.path) : undefined\n}\n\nfunction setDirname(dirname) {\n assertPath(this.path, 'dirname')\n this.path = p.join(dirname || '', this.basename)\n}\n\nfunction getBasename() {\n return typeof this.path === 'string' ? p.basename(this.path) : undefined\n}\n\nfunction setBasename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = p.join(this.dirname || '', basename)\n}\n\nfunction getExtname() {\n return typeof this.path === 'string' ? p.extname(this.path) : undefined\n}\n\nfunction setExtname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.path, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.indexOf('.', 1) > -1) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = p.join(this.dirname, this.stem + (extname || ''))\n}\n\nfunction getStem() {\n return typeof this.path === 'string'\n ? p.basename(this.path, this.extname)\n : undefined\n}\n\nfunction setStem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = p.join(this.dirname || '', stem + (this.extname || ''))\n}\n\n// Get the value of the file.\nfunction toString(encoding) {\n return (this.contents || '').toString(encoding)\n}\n\n// Assert that `part` is not a path (i.e., does not contain `p.sep`).\nfunction assertPart(part, name) {\n if (part && part.indexOf(p.sep) > -1) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + p.sep + '`'\n )\n }\n}\n\n// Assert that `part` is not empty.\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n// Assert `path` exists.\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n","'use strict'\n\nvar VMessage = require('vfile-message')\nvar VFile = require('./core.js')\n\nmodule.exports = VFile\n\nVFile.prototype.message = message\nVFile.prototype.info = info\nVFile.prototype.fail = fail\n\n// Create a message with `reason` at `position`.\n// When an error is passed in as `reason`, copies the stack.\nfunction message(reason, position, origin) {\n var message = new VMessage(reason, position, 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// Fail: creates a vmessage, associates it with the file, and throws it.\nfunction fail() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = true\n\n throw message\n}\n\n// Info: creates a vmessage, associates it with the file, and marks the fatality\n// as null.\nfunction info() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = null\n\n return message\n}\n","'use strict'\n\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\nexports.basename = basename\nexports.dirname = dirname\nexports.extname = extname\nexports.join = join\nexports.sep = '/'\n\nfunction basename(path, ext) {\n var start = 0\n var end = -1\n var index\n var firstNonSlashEnd\n var seenNonSlash\n var extIndex\n\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n index = path.length\n\n if (ext === undefined || !ext.length || 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 firstNonSlashEnd = -1\n 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\nfunction dirname(path) {\n var end\n var unmatchedSlash\n var index\n\n assertPath(path)\n\n if (!path.length) {\n return '.'\n }\n\n end = -1\n index = path.length\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\nfunction extname(path) {\n var startDot = -1\n var startPart = 0\n var end = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n var preDotState = 0\n var unmatchedSlash\n var code\n var index\n\n assertPath(path)\n\n index = path.length\n\n while (index--) {\n 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\nfunction join() {\n var index = -1\n var joined\n\n while (++index < arguments.length) {\n assertPath(arguments[index])\n\n if (arguments[index]) {\n joined =\n joined === undefined\n ? arguments[index]\n : joined + '/' + arguments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n var absolute\n var value\n\n assertPath(path)\n\n absolute = path.charCodeAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n value = normalizeString(path, !absolute)\n\n if (!value.length && !absolute) {\n value = '.'\n }\n\n if (value.length && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n// Resolve `.` and `..` elements in a path with directory names.\nfunction normalizeString(path, allowAboveRoot) {\n var result = ''\n var lastSegmentLength = 0\n var lastSlash = -1\n var dots = 0\n var index = -1\n var code\n var 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 /* istanbul ignore else - No clue how to cover it. */\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) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length) {\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\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","'use strict'\n\n// Somewhat based on:\n// .\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexports.cwd = cwd\n\nfunction cwd() {\n return '/'\n}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","/**\n * @module ol/AssertionError\n */\n\n/** @type {Object} */\nconst messages = {\n 1: 'The view center is not defined',\n 2: 'The view resolution is not defined',\n 3: 'The view rotation is not defined',\n 4: '`image` and `src` cannot be provided at the same time',\n 5: '`imgSize` must be set when `image` is provided',\n 7: '`format` must be set when `url` is set',\n 8: 'Unknown `serverType` configured',\n 9: '`url` must be configured or set using `#setUrl()`',\n 10: 'The default `geometryFunction` can only handle `Point` geometries',\n 11: '`options.featureTypes` must be an Array',\n 12: '`options.geometryName` must also be provided when `options.bbox` is set',\n 13: 'Invalid corner',\n 14: 'Invalid color',\n 15: 'Tried to get a value for a key that does not exist in the cache',\n 16: 'Tried to set a value for a key that is used already',\n 17: '`resolutions` must be sorted in descending order',\n 18: 'Either `origin` or `origins` must be configured, never both',\n 19: 'Number of `tileSizes` and `resolutions` must be equal',\n 20: 'Number of `origins` and `resolutions` must be equal',\n 22: 'Either `tileSize` or `tileSizes` must be configured, never both',\n 24: 'Invalid extent or geometry provided as `geometry`',\n 25: 'Cannot fit empty extent provided as `geometry`',\n 26: 'Features must have an id set',\n 27: 'Features must have an id set',\n 28: '`renderMode` must be `\"hybrid\"` or `\"vector\"`',\n 30: 'The passed `feature` was already added to the source',\n 31: 'Tried to enqueue an `element` that was already added to the queue',\n 32: 'Transformation matrix cannot be inverted',\n 33: 'Invalid units',\n 34: 'Invalid geometry layout',\n 36: 'Unknown SRS type',\n 37: 'Unknown geometry type found',\n 38: '`styleMapValue` has an unknown type',\n 39: 'Unknown geometry type',\n 40: 'Expected `feature` to have a geometry',\n 41: 'Expected an `ol/style/Style` or an array of `ol/style/Style.js`',\n 42: 'Question unknown, the answer is 42',\n 43: 'Expected `layers` to be an array or a `Collection`',\n 47: 'Expected `controls` to be an array or an `ol/Collection`',\n 48: 'Expected `interactions` to be an array or an `ol/Collection`',\n 49: 'Expected `overlays` to be an array or an `ol/Collection`',\n 50: '`options.featureTypes` should be an Array',\n 51: 'Either `url` or `tileJSON` options must be provided',\n 52: 'Unknown `serverType` configured',\n 53: 'Unknown `tierSizeCalculation` configured',\n 55: 'The {-y} placeholder requires a tile grid with extent',\n 56: 'mapBrowserEvent must originate from a pointer event',\n 57: 'At least 2 conditions are required',\n 59: 'Invalid command found in the PBF',\n 60: 'Missing or invalid `size`',\n 61: 'Cannot determine IIIF Image API version from provided image information JSON',\n 62: 'A `WebGLArrayBuffer` must either be of type `ELEMENT_ARRAY_BUFFER` or `ARRAY_BUFFER`',\n 64: 'Layer opacity must be a number',\n 66: '`forEachFeatureAtCoordinate` cannot be used on a WebGL layer if the hit detection logic has not been enabled. This is done by providing adequate shaders using the `hitVertexShader` and `hitFragmentShader` properties of `WebGLPointsLayerRenderer`',\n 67: 'A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both',\n 68: 'A VectorTile source can only be rendered if it has a projection compatible with the view projection',\n 69: '`width` or `height` cannot be provided together with `scale`',\n};\n\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nclass AssertionError extends Error {\n /**\n * @param {number} code Error code.\n */\n constructor(code) {\n const message = messages[code];\n\n super(message);\n\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @deprecated ol/AssertionError and error codes will be removed in v8.0\n * @api\n */\n this.code = code;\n\n /**\n * @type {string}\n */\n this.name = 'AssertionError';\n\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n this.message = message;\n }\n}\n\nexport default AssertionError;\n","/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LENGTH: 'length',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n * @template T\n */\nexport class CollectionEvent extends Event {\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {T} element Element.\n * @param {number} index The index of the added or removed element.\n */\n constructor(type, element, index) {\n super(type);\n\n /**\n * The element that is added to or removed from the collection.\n * @type {T}\n * @api\n */\n this.element = element;\n\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n this.index = index;\n }\n}\n\n/***\n * @template T\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature} CollectionOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nclass Collection extends BaseObject {\n /**\n * @param {Array} [array] Array.\n * @param {Options} [options] Collection options.\n */\n constructor(array, options) {\n super();\n\n /***\n * @type {CollectionOnSignature}\n */\n this.on;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.once;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.un;\n\n options = options || {};\n\n /**\n * @private\n * @type {boolean}\n */\n this.unique_ = !!options.unique;\n\n /**\n * @private\n * @type {!Array}\n */\n this.array_ = array ? array : [];\n\n if (this.unique_) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n this.assertUnique_(this.array_[i], i);\n }\n }\n\n this.updateLength_();\n }\n\n /**\n * Remove all elements from the collection.\n * @api\n */\n clear() {\n while (this.getLength() > 0) {\n this.pop();\n }\n }\n\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n extend(arr) {\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n }\n\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n forEach(f) {\n const array = this.array_;\n for (let i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n }\n\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n getArray() {\n return this.array_;\n }\n\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n item(index) {\n return this.array_[index];\n }\n\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n getLength() {\n return this.get(Property.LENGTH);\n }\n\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n insertAt(index, elem) {\n if (index < 0 || index > this.getLength()) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n );\n }\n\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n pop() {\n return this.removeAt(this.getLength() - 1);\n }\n\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n push(elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n const n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n }\n\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n remove(elem) {\n const arr = this.array_;\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n }\n\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n removeAt(index) {\n if (index < 0 || index >= this.getLength()) {\n return undefined;\n }\n const prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n return prev;\n }\n\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n setAt(index, elem) {\n const n = this.getLength();\n if (index >= n) {\n this.insertAt(index, elem);\n return;\n }\n if (index < 0) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n const prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n )\n );\n }\n\n /**\n * @private\n */\n updateLength_() {\n this.set(Property.LENGTH, this.array_.length);\n }\n\n /**\n * @private\n * @param {T} elem Element.\n * @param {number} [except] Optional index to ignore.\n */\n assertUnique_(elem, except) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== except) {\n throw new AssertionError(58);\n }\n }\n }\n}\n\nexport default Collection;\n","/**\n * @module ol/CollectionEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n constructor() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n\n /**\n * Clean up.\n */\n dispose() {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n }\n\n /**\n * Extension point for disposable objects.\n * @protected\n */\n disposeInternal() {}\n}\n\nexport default Disposable;\n","/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport {assert} from './asserts.js';\nimport {listen, unlistenByKey} from './events.js';\n\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} FeatureOnSignature\n */\n\n/***\n * @template Geometry\n * @typedef {Object & { geometry?: Geometry }} ObjectWithGeometry\n */\n\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object~BaseObject} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature.js';\n * import Polygon from 'ol/geom/Polygon.js';\n * import Point from 'ol/geom/Point.js';\n *\n * const feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon',\n * });\n *\n * // get the polygon geometry\n * const poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * const point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n */\nclass Feature extends BaseObject {\n /**\n * @param {Geometry|ObjectWithGeometry} [geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n constructor(geometryOrProperties) {\n super();\n\n /***\n * @type {FeatureOnSignature}\n */\n this.on;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.once;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {number|string|undefined}\n */\n this.id_ = undefined;\n\n /**\n * @type {string}\n * @private\n */\n this.geometryName_ = 'geometry';\n\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n this.style_ = null;\n\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n this.styleFunction_ = undefined;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.geometryChangeKey_ = null;\n\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n\n if (geometryOrProperties) {\n if (\n typeof (\n /** @type {?} */ (geometryOrProperties).getSimplifiedGeometry\n ) === 'function'\n ) {\n const geometry = /** @type {Geometry} */ (geometryOrProperties);\n this.setGeometry(geometry);\n } else {\n /** @type {Object} */\n const properties = geometryOrProperties;\n this.setProperties(properties);\n }\n }\n }\n\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n clone() {\n const clone = /** @type {Feature} */ (\n new Feature(this.hasProperties() ? this.getProperties() : null)\n );\n clone.setGeometryName(this.getGeometryName());\n const geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n }\n const style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n }\n\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n getGeometry() {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n }\n\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id_;\n }\n\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n getGeometryName() {\n return this.geometryName_;\n }\n\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @private\n */\n handleGeometryChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleGeometryChanged_() {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n const geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(\n geometry,\n EventType.CHANGE,\n this.handleGeometryChange_,\n this\n );\n }\n this.changed();\n }\n\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n setGeometry(geometry) {\n this.set(this.geometryName_, geometry);\n }\n\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setStyle(style) {\n this.style_ = style;\n this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n this.changed();\n }\n\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setId(id) {\n this.id_ = id;\n this.changed();\n }\n\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n setGeometryName(name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n }\n}\n\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n /**\n * @type {Array}\n */\n let styles;\n if (Array.isArray(obj)) {\n styles = obj;\n } else {\n assert(typeof (/** @type {?} */ (obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles = [style];\n }\n return function () {\n return styles;\n };\n}\nexport default Feature;\n","/**\n * @module ol/Geolocation\n */\nimport BaseEvent from './events/Event.js';\nimport BaseObject from './Object.js';\nimport {circular as circularPolygon} from './geom/Polygon.js';\nimport {\n get as getProjection,\n getTransformFromProjections,\n identityTransform,\n} from './proj.js';\nimport {toRadians} from './math.js';\n\n/**\n * @enum {string}\n */\nconst Property = {\n ACCURACY: 'accuracy',\n ACCURACY_GEOMETRY: 'accuracyGeometry',\n ALTITUDE: 'altitude',\n ALTITUDE_ACCURACY: 'altitudeAccuracy',\n HEADING: 'heading',\n POSITION: 'position',\n PROJECTION: 'projection',\n SPEED: 'speed',\n TRACKING: 'tracking',\n TRACKING_OPTIONS: 'trackingOptions',\n};\n\n/**\n * @enum string\n */\nconst GeolocationErrorType = {\n /**\n * Triggered when a `GeolocationPositionError` occurs.\n * @event module:ol/Geolocation.GeolocationError#error\n * @api\n */\n ERROR: 'error',\n};\n\n/**\n * @classdesc\n * Events emitted on [GeolocationPositionError](https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPositionError).\n */\nexport class GeolocationError extends BaseEvent {\n /**\n * @param {GeolocationPositionError} error error object.\n */\n constructor(error) {\n super(GeolocationErrorType.ERROR);\n\n /**\n * Code of the underlying `GeolocationPositionError`.\n * @type {number}\n * @api\n */\n this.code = error.code;\n\n /**\n * Message of the underlying `GeolocationPositionError`.\n * @type {string}\n * @api\n */\n this.message = error.message;\n }\n}\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [tracking=false] Start Tracking right after\n * instantiation.\n * @property {PositionOptions} [trackingOptions] Tracking options.\n * See https://www.w3.org/TR/geolocation-API/#position_options_interface.\n * @property {import(\"./proj.js\").ProjectionLike} [projection] The projection the position\n * is reported in.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:accuracy'|'change:accuracyGeometry'|'change:altitude'|\n * 'change:altitudeAccuracy'|'change:heading'|'change:position'|'change:projection'|'change:speed'|'change:tracking'|\n * 'change:trackingOptions'} GeolocationObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'error', GeolocationError, Return> &\n * import(\"./Observable\").CombinedOnSignature &\n * import(\"./Observable\").OnSignature} GeolocationOnSignature\n */\n\n/**\n * @classdesc\n * Helper class for providing HTML5 Geolocation capabilities.\n * The [Geolocation API](https://www.w3.org/TR/geolocation-API/)\n * is used to locate a user's position.\n *\n * To get notified of position changes and errors, register listeners for the generic\n * `change` event and the `error` event on your instance of {@link module:ol/Geolocation~Geolocation}.\n *\n * Example:\n *\n * const geolocation = new Geolocation({\n * // take the projection to use from the map's view\n * projection: view.getProjection()\n * });\n * // listen to changes in position\n * geolocation.on('change', function(evt) {\n * console.log(geolocation.getPosition());\n * });\n * // listen to error\n * geolocation.on('error', function(evt) {\n * window.console.log(evt.message);\n * });\n *\n * @fires GeolocationError\n * @api\n */\nclass Geolocation extends BaseObject {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {GeolocationOnSignature}\n */\n this.on;\n\n /***\n * @type {GeolocationOnSignature}\n */\n this.once;\n\n /***\n * @type {GeolocationOnSignature}\n */\n this.un;\n\n options = options || {};\n\n /**\n * The unprojected (EPSG:4326) device position.\n * @private\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n this.position_ = null;\n\n /**\n * @private\n * @type {import(\"./proj.js\").TransformFunction}\n */\n this.transform_ = identityTransform;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.watchId_ = undefined;\n\n this.addChangeListener(Property.PROJECTION, this.handleProjectionChanged_);\n this.addChangeListener(Property.TRACKING, this.handleTrackingChanged_);\n\n if (options.projection !== undefined) {\n this.setProjection(options.projection);\n }\n if (options.trackingOptions !== undefined) {\n this.setTrackingOptions(options.trackingOptions);\n }\n\n this.setTracking(options.tracking !== undefined ? options.tracking : false);\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.setTracking(false);\n super.disposeInternal();\n }\n\n /**\n * @private\n */\n handleProjectionChanged_() {\n const projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(\n getProjection('EPSG:4326'),\n projection\n );\n if (this.position_) {\n this.set(Property.POSITION, this.transform_(this.position_));\n }\n }\n }\n\n /**\n * @private\n */\n handleTrackingChanged_() {\n if ('geolocation' in navigator) {\n const tracking = this.getTracking();\n if (tracking && this.watchId_ === undefined) {\n this.watchId_ = navigator.geolocation.watchPosition(\n this.positionChange_.bind(this),\n this.positionError_.bind(this),\n this.getTrackingOptions()\n );\n } else if (!tracking && this.watchId_ !== undefined) {\n navigator.geolocation.clearWatch(this.watchId_);\n this.watchId_ = undefined;\n }\n }\n }\n\n /**\n * @private\n * @param {GeolocationPosition} position position event.\n */\n positionChange_(position) {\n const coords = position.coords;\n this.set(Property.ACCURACY, coords.accuracy);\n this.set(\n Property.ALTITUDE,\n coords.altitude === null ? undefined : coords.altitude\n );\n this.set(\n Property.ALTITUDE_ACCURACY,\n coords.altitudeAccuracy === null ? undefined : coords.altitudeAccuracy\n );\n this.set(\n Property.HEADING,\n coords.heading === null ? undefined : toRadians(coords.heading)\n );\n if (!this.position_) {\n this.position_ = [coords.longitude, coords.latitude];\n } else {\n this.position_[0] = coords.longitude;\n this.position_[1] = coords.latitude;\n }\n const projectedPosition = this.transform_(this.position_);\n this.set(Property.POSITION, projectedPosition.slice());\n this.set(Property.SPEED, coords.speed === null ? undefined : coords.speed);\n const geometry = circularPolygon(this.position_, coords.accuracy);\n geometry.applyTransform(this.transform_);\n this.set(Property.ACCURACY_GEOMETRY, geometry);\n this.changed();\n }\n\n /**\n * @private\n * @param {GeolocationPositionError} error error object.\n */\n positionError_(error) {\n this.dispatchEvent(new GeolocationError(error));\n }\n\n /**\n * Get the accuracy of the position in meters.\n * @return {number|undefined} The accuracy of the position measurement in\n * meters.\n * @observable\n * @api\n */\n getAccuracy() {\n return /** @type {number|undefined} */ (this.get(Property.ACCURACY));\n }\n\n /**\n * Get a geometry of the position accuracy.\n * @return {?import(\"./geom/Polygon.js\").default} A geometry of the position accuracy.\n * @observable\n * @api\n */\n getAccuracyGeometry() {\n return /** @type {?import(\"./geom/Polygon.js\").default} */ (\n this.get(Property.ACCURACY_GEOMETRY) || null\n );\n }\n\n /**\n * Get the altitude associated with the position.\n * @return {number|undefined} The altitude of the position in meters above mean\n * sea level.\n * @observable\n * @api\n */\n getAltitude() {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));\n }\n\n /**\n * Get the altitude accuracy of the position.\n * @return {number|undefined} The accuracy of the altitude measurement in\n * meters.\n * @observable\n * @api\n */\n getAltitudeAccuracy() {\n return /** @type {number|undefined} */ (\n this.get(Property.ALTITUDE_ACCURACY)\n );\n }\n\n /**\n * Get the heading as radians clockwise from North.\n * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`\n * is set to `true` in the tracking options.\n * @return {number|undefined} The heading of the device in radians from north.\n * @observable\n * @api\n */\n getHeading() {\n return /** @type {number|undefined} */ (this.get(Property.HEADING));\n }\n\n /**\n * Get the position of the device.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The current position of the device reported\n * in the current projection.\n * @observable\n * @api\n */\n getPosition() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(Property.POSITION)\n );\n }\n\n /**\n * Get the projection associated with the position.\n * @return {import(\"./proj/Projection.js\").default|undefined} The projection the position is\n * reported in.\n * @observable\n * @api\n */\n getProjection() {\n return /** @type {import(\"./proj/Projection.js\").default|undefined} */ (\n this.get(Property.PROJECTION)\n );\n }\n\n /**\n * Get the speed in meters per second.\n * @return {number|undefined} The instantaneous speed of the device in meters\n * per second.\n * @observable\n * @api\n */\n getSpeed() {\n return /** @type {number|undefined} */ (this.get(Property.SPEED));\n }\n\n /**\n * Determine if the device location is being tracked.\n * @return {boolean} The device location is being tracked.\n * @observable\n * @api\n */\n getTracking() {\n return /** @type {boolean} */ (this.get(Property.TRACKING));\n }\n\n /**\n * Get the tracking options.\n * See https://www.w3.org/TR/geolocation-API/#position-options.\n * @return {PositionOptions|undefined} PositionOptions as defined by\n * the [HTML5 Geolocation spec\n * ](https://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n getTrackingOptions() {\n return /** @type {PositionOptions|undefined} */ (\n this.get(Property.TRACKING_OPTIONS)\n );\n }\n\n /**\n * Set the projection to use for transforming the coordinates.\n * @param {import(\"./proj.js\").ProjectionLike} projection The projection the position is\n * reported in.\n * @observable\n * @api\n */\n setProjection(projection) {\n this.set(Property.PROJECTION, getProjection(projection));\n }\n\n /**\n * Enable or disable tracking.\n * @param {boolean} tracking Enable tracking.\n * @observable\n * @api\n */\n setTracking(tracking) {\n this.set(Property.TRACKING, tracking);\n }\n\n /**\n * Set the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @param {PositionOptions} options PositionOptions as defined by the\n * [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n setTrackingOptions(options) {\n this.set(Property.TRACKING_OPTIONS, options);\n }\n}\n\nexport default Geolocation;\n","/**\n * @module ol/Image\n */\nimport EventType from './events/EventType.js';\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport {IMAGE_DECODE} from './has.js';\nimport {getHeight} from './extent.js';\nimport {listenOnce, unlistenByKey} from './events.js';\n\n/**\n * A function that takes an {@link module:ol/Image~ImageWrapper} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~ImageWrapper#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\n\nclass ImageWrapper extends ImageBase {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n * @param {CanvasRenderingContext2D} [context] Canvas context. When provided, the image will be\n * drawn into the context's canvas, and `getImage()` will return the canvas once the image\n * has finished loading.\n */\n constructor(\n extent,\n resolution,\n pixelRatio,\n src,\n crossOrigin,\n imageLoadFunction,\n context\n ) {\n super(extent, resolution, pixelRatio, ImageState.IDLE);\n\n /**\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {CanvasRenderingContext2D}\n */\n this.context_ = context;\n\n /**\n * @private\n * @type {?function():void}\n */\n this.unlisten_ = null;\n\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n this.state = ImageState.IDLE;\n\n /**\n * @private\n * @type {LoadFunction}\n */\n this.imageLoadFunction_ = imageLoadFunction;\n }\n\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n if (\n this.state == ImageState.LOADED &&\n this.context_ &&\n !(this.image_ instanceof HTMLCanvasElement)\n ) {\n const canvas = this.context_.canvas;\n canvas.width = this.image_.width;\n canvas.height = this.image_.height;\n this.context_.drawImage(this.image_, 0, 0);\n this.image_ = this.context_.canvas;\n }\n return this.image_;\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @api\n */\n load() {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(\n this.image_,\n this.handleImageLoad_.bind(this),\n this.handleImageError_.bind(this)\n );\n }\n }\n\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n setImage(image) {\n this.image_ = image;\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n }\n}\n\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n const img = /** @type {HTMLImageElement} */ (image);\n let listening = true;\n let decoding = false;\n let loaded = false;\n\n const listenerKeys = [\n listenOnce(img, EventType.LOAD, function () {\n loaded = true;\n if (!decoding) {\n loadHandler();\n }\n }),\n ];\n\n if (img.src && IMAGE_DECODE) {\n decoding = true;\n img\n .decode()\n .then(function () {\n if (listening) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening) {\n if (loaded) {\n loadHandler();\n } else {\n errorHandler();\n }\n }\n });\n } else {\n listenerKeys.push(listenOnce(img, EventType.ERROR, errorHandler));\n }\n\n return function unlisten() {\n listening = false;\n listenerKeys.forEach(unlistenByKey);\n };\n}\n\nexport default ImageWrapper;\n","/**\n * @module ol/ImageState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n","/**\n * @module ol/ImageTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\nimport {listenImage} from './Image.js';\n\nclass ImageTile extends Tile {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options} [options] Tile options.\n */\n constructor(tileCoord, state, src, crossOrigin, tileLoadFunction, options) {\n super(tileCoord, state, options);\n\n /**\n * @private\n * @type {?string}\n */\n this.crossOrigin_ = crossOrigin;\n\n /**\n * Image URI\n *\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n this.key = src;\n\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {?function():void}\n */\n this.unlisten_ = null;\n\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n this.tileLoadFunction_ = tileLoadFunction;\n }\n\n /**\n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n return this.image_;\n }\n\n /**\n * Sets an HTML image element for this tile (may be a Canvas or preloaded Image).\n * @param {HTMLCanvasElement|HTMLImageElement} element Element.\n */\n setImage(element) {\n this.image_ = element;\n this.state = TileState.LOADED;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = TileState.ERROR;\n this.unlistenImage_();\n this.image_ = getBlankImage();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n const image = /** @type {HTMLImageElement} */ (this.image_);\n if (image.naturalWidth && image.naturalHeight) {\n this.state = TileState.LOADED;\n } else {\n this.state = TileState.EMPTY;\n }\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n *\n * To retry loading tiles on failed requests, use a custom `tileLoadFunction`\n * that checks for error status codes and reloads only when the status code is\n * 408, 429, 500, 502, 503 and 504, and only when not too many retries have been\n * made already:\n *\n * ```js\n * const retryCodes = [408, 429, 500, 502, 503, 504];\n * const retries = {};\n * source.setTileLoadFunction((tile, src) => {\n * const image = tile.getImage();\n * fetch(src)\n * .then((response) => {\n * if (retryCodes.includes(response.status)) {\n * retries[src] = (retries[src] || 0) + 1;\n * if (retries[src] <= 3) {\n * setTimeout(() => tile.load(), retries[src] * 1000);\n * }\n * return Promise.reject();\n * }\n * return response.blob();\n * })\n * .then((blob) => {\n * const imageUrl = URL.createObjectURL(blob);\n * image.src = imageUrl;\n * setTimeout(() => URL.revokeObjectURL(imageUrl), 5000);\n * })\n * .catch(() => tile.setState(3)); // error\n * });\n * ```\n *\n * @api\n */\n load() {\n if (this.state == TileState.ERROR) {\n this.state = TileState.IDLE;\n this.image_ = new Image();\n if (this.crossOrigin_ !== null) {\n this.image_.crossOrigin = this.crossOrigin_;\n }\n }\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n this.tileLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(\n this.image_,\n this.handleImageLoad_.bind(this),\n this.handleImageError_.bind(this)\n );\n }\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n }\n}\n\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n const ctx = createCanvasContext2D(1, 1);\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return ctx.canvas;\n}\n\nexport default ImageTile;\n","/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport {TRUE} from '../functions.js';\nimport {abstract} from '../util.js';\nimport {compose as composeTransform, makeInverse} from '../transform.js';\nimport {getWidth} from '../extent.js';\nimport {shared as iconImageCache} from '../style/IconImageCache.js';\nimport {inView} from '../layer/Layer.js';\nimport {wrapX} from '../coordinate.js';\n\n/**\n * @template T\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @property {import(\"../layer/Layer.js\").default} layer Layer.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} distanceSq Squared distance.\n * @property {import(\"./vector.js\").FeatureCallback} callback Callback.\n */\n\n/**\n * @abstract\n */\nclass MapRenderer extends Disposable {\n /**\n * @param {import(\"../Map.js\").default} map Map.\n */\n constructor(map) {\n super();\n\n /**\n * @private\n * @type {import(\"../Map.js\").default}\n */\n this.map_ = map;\n }\n\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @protected\n */\n calculateMatrices2D(frameState) {\n const viewState = frameState.viewState;\n const coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n const pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n\n composeTransform(\n coordinateToPixelTransform,\n frameState.size[0] / 2,\n frameState.size[1] / 2,\n 1 / viewState.resolution,\n -1 / viewState.resolution,\n -viewState.rotation,\n -viewState.center[0],\n -viewState.center[1]\n );\n\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {import(\"./vector.js\").FeatureCallback} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n callback,\n thisArg,\n layerFilter,\n thisArg2\n ) {\n let result;\n const viewState = frameState.viewState;\n\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @return {T|undefined} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n return callback.call(thisArg, feature, managed ? layer : null, geometry);\n }\n\n const projection = viewState.projection;\n\n const translatedCoordinate = wrapX(coordinate.slice(), projection);\n const offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n const projectionExtent = projection.getExtent();\n const worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n\n const layerStates = frameState.layerStatesArray;\n const numLayers = layerStates.length;\n\n const matches = /** @type {Array>} */ ([]);\n const tmpCoord = [];\n for (let i = 0; i < offsets.length; i++) {\n for (let j = numLayers - 1; j >= 0; --j) {\n const layerState = layerStates[j];\n const layer = layerState.layer;\n if (\n layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)\n ) {\n const layerRenderer = layer.getRenderer();\n const source = layer.getSource();\n if (layerRenderer && source) {\n const coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n const callback = forEachFeatureAtCoordinate.bind(\n null,\n layerState.managed\n );\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(\n tmpCoord,\n frameState,\n hitTolerance,\n callback,\n matches\n );\n }\n if (result) {\n return result;\n }\n }\n }\n }\n if (matches.length === 0) {\n return undefined;\n }\n const order = 1 / matches.length;\n matches.forEach((m, i) => (m.distanceSq += i * order));\n matches.sort((a, b) => a.distanceSq - b.distanceSq);\n matches.some((m) => {\n return (result = m.callback(m.feature, m.layer, m.geometry));\n });\n return result;\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n hasFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n layerFilter,\n thisArg\n ) {\n const hasFeature = this.forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n TRUE,\n this,\n layerFilter,\n thisArg\n );\n\n return hasFeature !== undefined;\n }\n\n /**\n * @return {import(\"../Map.js\").default} Map.\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Render.\n * @abstract\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n flushDeclutterItems(frameState) {}\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n * @protected\n */\n scheduleExpireIconCache(frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n }\n}\n\n/**\n * @param {import(\"../Map.js\").default} map Map.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\n\nexport default MapRenderer;\n","/**\n * @module ol/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {checkedFonts} from '../render/canvas.js';\nimport {inView} from '../layer/Layer.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {replaceChildren} from '../dom.js';\n\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nclass CompositeMapRenderer extends MapRenderer {\n /**\n * @param {import(\"../Map.js\").default} map Map.\n */\n constructor(map) {\n super(map);\n\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n this.fontChangeListenerKey_ = listen(\n checkedFonts,\n ObjectEventType.PROPERTYCHANGE,\n map.redrawText.bind(map)\n );\n\n /**\n * @private\n * @type {HTMLDivElement}\n */\n this.element_ = document.createElement('div');\n const style = this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n\n this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n\n const container = map.getViewport();\n container.insertBefore(this.element_, container.firstChild || null);\n\n /**\n * @private\n * @type {Array}\n */\n this.children_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n\n /**\n * @type {Array}\n */\n this.declutterLayers_ = [];\n }\n\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n const map = this.getMap();\n if (map.hasListener(type)) {\n const event = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event);\n }\n }\n\n disposeInternal() {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n super.disposeInternal();\n }\n\n /**\n * Render.\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n\n const layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n const viewState = frameState.viewState;\n\n this.children_.length = 0;\n\n const declutterLayers = this.declutterLayers_;\n declutterLayers.length = 0;\n\n let previousElement = null;\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n\n const layer = layerState.layer;\n const sourceState = layer.getSourceState();\n if (\n !inView(layerState, viewState) ||\n (sourceState != 'ready' && sourceState != 'undefined')\n ) {\n layer.unrender();\n continue;\n }\n\n const element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n if ('getDeclutter' in layer) {\n declutterLayers.push(\n /** @type {import(\"../layer/BaseVector.js\").default} */ (layer)\n );\n }\n }\n this.flushDeclutterItems(frameState);\n\n replaceChildren(this.element_, this.children_);\n\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n\n this.scheduleExpireIconCache(frameState);\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n flushDeclutterItems(frameState) {\n const layers = this.declutterLayers_;\n for (let i = layers.length - 1; i >= 0; --i) {\n layers[i].renderDeclutter(frameState);\n }\n layers.length = 0;\n }\n}\n\nexport default CompositeMapRenderer;\n","/**\n * @module ol/layer/Group\n */\nimport BaseLayer from './Base.js';\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport Event from '../events/Event.js';\nimport EventType from '../events/EventType.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\nimport {getIntersection} from '../extent.js';\nimport {getUid} from '../util.js';\nimport {listen, unlistenByKey} from '../events.js';\n\n/**\n * @typedef {'addlayer'|'removelayer'} EventType\n */\n\n/**\n * @classdesc\n * A layer group triggers 'addlayer' and 'removelayer' events when layers are added to or removed from\n * the group or one of its child groups. When a layer group is added to or removed from another layer group,\n * a single event will be triggered (instead of one per layer in the group added or removed).\n */\nexport class GroupEvent extends Event {\n /**\n * @param {EventType} type The event type.\n * @param {BaseLayer} layer The layer.\n */\n constructor(type, layer) {\n super(type);\n\n /**\n * The added or removed layer.\n * @type {BaseLayer}\n * @api\n */\n this.layer = layer;\n }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} GroupOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {Array|Collection} [layers] Child layers.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LAYERS: 'layers',\n};\n\n/**\n * @classdesc\n * A {@link module:ol/Collection~Collection} of layers that are handled together.\n *\n * A generic `change` event is triggered when the group/Collection changes.\n *\n * @api\n */\nclass LayerGroup extends BaseLayer {\n /**\n * @param {Options} [options] Layer options.\n */\n constructor(options) {\n options = options || {};\n const baseOptions = /** @type {Options} */ (Object.assign({}, options));\n delete baseOptions.layers;\n\n let layers = options.layers;\n\n super(baseOptions);\n\n /***\n * @type {GroupOnSignature}\n */\n this.on;\n\n /***\n * @type {GroupOnSignature}\n */\n this.once;\n\n /***\n * @type {GroupOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {Array}\n */\n this.layersListenerKeys_ = [];\n\n /**\n * @private\n * @type {Object>}\n */\n this.listenerKeys_ = {};\n\n this.addChangeListener(Property.LAYERS, this.handleLayersChanged_);\n\n if (layers) {\n if (Array.isArray(layers)) {\n layers = new Collection(layers.slice(), {unique: true});\n } else {\n assert(typeof (/** @type {?} */ (layers).getArray) === 'function', 43); // Expected `layers` to be an array or a `Collection`\n }\n } else {\n layers = new Collection(undefined, {unique: true});\n }\n\n this.setLayers(layers);\n }\n\n /**\n * @private\n */\n handleLayerChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleLayersChanged_() {\n this.layersListenerKeys_.forEach(unlistenByKey);\n this.layersListenerKeys_.length = 0;\n\n const layers = this.getLayers();\n this.layersListenerKeys_.push(\n listen(layers, CollectionEventType.ADD, this.handleLayersAdd_, this),\n listen(layers, CollectionEventType.REMOVE, this.handleLayersRemove_, this)\n );\n\n for (const id in this.listenerKeys_) {\n this.listenerKeys_[id].forEach(unlistenByKey);\n }\n clear(this.listenerKeys_);\n\n const layersArray = layers.getArray();\n for (let i = 0, ii = layersArray.length; i < ii; i++) {\n const layer = layersArray[i];\n this.registerLayerListeners_(layer);\n this.dispatchEvent(new GroupEvent('addlayer', layer));\n }\n this.changed();\n }\n\n /**\n * @param {BaseLayer} layer The layer.\n */\n registerLayerListeners_(layer) {\n const listenerKeys = [\n listen(\n layer,\n ObjectEventType.PROPERTYCHANGE,\n this.handleLayerChange_,\n this\n ),\n listen(layer, EventType.CHANGE, this.handleLayerChange_, this),\n ];\n\n if (layer instanceof LayerGroup) {\n listenerKeys.push(\n listen(layer, 'addlayer', this.handleLayerGroupAdd_, this),\n listen(layer, 'removelayer', this.handleLayerGroupRemove_, this)\n );\n }\n\n this.listenerKeys_[getUid(layer)] = listenerKeys;\n }\n\n /**\n * @param {GroupEvent} event The layer group event.\n */\n handleLayerGroupAdd_(event) {\n this.dispatchEvent(new GroupEvent('addlayer', event.layer));\n }\n\n /**\n * @param {GroupEvent} event The layer group event.\n */\n handleLayerGroupRemove_(event) {\n this.dispatchEvent(new GroupEvent('removelayer', event.layer));\n }\n\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n handleLayersAdd_(collectionEvent) {\n const layer = collectionEvent.element;\n this.registerLayerListeners_(layer);\n this.dispatchEvent(new GroupEvent('addlayer', layer));\n this.changed();\n }\n\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} collectionEvent CollectionEvent.\n * @private\n */\n handleLayersRemove_(collectionEvent) {\n const layer = collectionEvent.element;\n const key = getUid(layer);\n this.listenerKeys_[key].forEach(unlistenByKey);\n delete this.listenerKeys_[key];\n this.dispatchEvent(new GroupEvent('removelayer', layer));\n this.changed();\n }\n\n /**\n * Returns the {@link module:ol/Collection~Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @return {!Collection} Collection of\n * {@link module:ol/layer/Base~BaseLayer layers} that are part of this group.\n * @observable\n * @api\n */\n getLayers() {\n return /** @type {!Collection} */ (\n this.get(Property.LAYERS)\n );\n }\n\n /**\n * Set the {@link module:ol/Collection~Collection collection} of {@link module:ol/layer/Layer~Layer layers}\n * in this group.\n * @param {!Collection} layers Collection of\n * {@link module:ol/layer/Base~BaseLayer layers} that are part of this group.\n * @observable\n * @api\n */\n setLayers(layers) {\n const collection = this.getLayers();\n if (collection) {\n const currentLayers = collection.getArray();\n for (let i = 0, ii = currentLayers.length; i < ii; ++i) {\n this.dispatchEvent(new GroupEvent('removelayer', currentLayers[i]));\n }\n }\n\n this.set(Property.LAYERS, layers);\n }\n\n /**\n * @param {Array} [array] Array of layers (to be modified in place).\n * @return {Array} Array of layers.\n */\n getLayersArray(array) {\n array = array !== undefined ? array : [];\n this.getLayers().forEach(function (layer) {\n layer.getLayersArray(array);\n });\n return array;\n }\n\n /**\n * Get the layer states list and use this groups z-index as the default\n * for all layers in this and nested groups, if it is unset at this point.\n * If dest is not provided and this group's z-index is undefined\n * 0 is used a the default z-index.\n * @param {Array} [dest] Optional list\n * of layer states (to be modified in place).\n * @return {Array} List of layer states.\n */\n getLayerStatesArray(dest) {\n const states = dest !== undefined ? dest : [];\n const pos = states.length;\n\n this.getLayers().forEach(function (layer) {\n layer.getLayerStatesArray(states);\n });\n\n const ownLayerState = this.getLayerState();\n let defaultZIndex = ownLayerState.zIndex;\n if (!dest && ownLayerState.zIndex === undefined) {\n defaultZIndex = 0;\n }\n for (let i = pos, ii = states.length; i < ii; i++) {\n const layerState = states[i];\n layerState.opacity *= ownLayerState.opacity;\n layerState.visible = layerState.visible && ownLayerState.visible;\n layerState.maxResolution = Math.min(\n layerState.maxResolution,\n ownLayerState.maxResolution\n );\n layerState.minResolution = Math.max(\n layerState.minResolution,\n ownLayerState.minResolution\n );\n layerState.minZoom = Math.max(layerState.minZoom, ownLayerState.minZoom);\n layerState.maxZoom = Math.min(layerState.maxZoom, ownLayerState.maxZoom);\n if (ownLayerState.extent !== undefined) {\n if (layerState.extent !== undefined) {\n layerState.extent = getIntersection(\n layerState.extent,\n ownLayerState.extent\n );\n } else {\n layerState.extent = ownLayerState.extent;\n }\n }\n if (layerState.zIndex === undefined) {\n layerState.zIndex = defaultZIndex;\n }\n }\n\n return states;\n }\n\n /**\n * @return {import(\"../source/Source.js\").State} Source state.\n */\n getSourceState() {\n return 'ready';\n }\n}\n\nexport default LayerGroup;\n","/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map event.\n */\nclass MapEvent extends Event {\n /**\n * @param {string} type Event type.\n * @param {import(\"./Map.js\").default} map Map.\n * @param {?import(\"./Map.js\").FrameState} [frameState] Frame state.\n */\n constructor(type, map, frameState) {\n super(type);\n\n /**\n * The map where the event occurred.\n * @type {import(\"./Map.js\").default}\n * @api\n */\n this.map = map;\n\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./Map.js\").FrameState}\n * @api\n */\n this.frameState = frameState !== undefined ? frameState : null;\n }\n}\n\nexport default MapEvent;\n","/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nclass MapBrowserEvent extends MapEvent {\n /**\n * @param {string} type Event type.\n * @param {import(\"./Map.js\").default} map Map.\n * @param {EVENT} originalEvent Original event.\n * @param {boolean} [dragging] Is the map currently being dragged?\n * @param {import(\"./Map.js\").FrameState} [frameState] Frame state.\n * @param {Array} [activePointers] Active pointers.\n */\n constructor(type, map, originalEvent, dragging, frameState, activePointers) {\n super(type, map, frameState);\n\n /**\n * The original browser event.\n * @const\n * @type {EVENT}\n * @api\n */\n this.originalEvent = originalEvent;\n\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n this.pixel_ = null;\n\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n this.coordinate_ = null;\n\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n this.dragging = dragging !== undefined ? dragging : false;\n\n /**\n * @type {Array|undefined}\n */\n this.activePointers = activePointers;\n }\n\n /**\n * The map pixel relative to the viewport corresponding to the original event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get pixel() {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n }\n set pixel(pixel) {\n this.pixel_ = pixel;\n }\n\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get coordinate() {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n }\n set coordinate(coordinate) {\n this.coordinate_ = coordinate;\n }\n\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @api\n */\n preventDefault() {\n super.preventDefault();\n if ('preventDefault' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).preventDefault();\n }\n }\n\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n stopPropagation() {\n super.stopPropagation();\n if ('stopPropagation' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).stopPropagation();\n }\n }\n}\n\nexport default MapBrowserEvent;\n","/**\n * @module ol/pointer/EventType\n */\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n","/**\n * @module ol/MapBrowserEventHandler\n */\n\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport Target from './events/Target.js';\nimport {PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {listen, unlistenByKey} from './events.js';\n\nclass MapBrowserEventHandler extends Target {\n /**\n * @param {import(\"./Map.js\").default} map The map with the viewport to listen to events on.\n * @param {number} [moveTolerance] The minimal distance the pointer must travel to trigger a move.\n */\n constructor(map, moveTolerance) {\n super(map);\n\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./Map.js\").default}\n * @private\n */\n this.map_ = map;\n\n /**\n * @type {ReturnType}\n * @private\n */\n this.clickTimeoutId_;\n\n /**\n * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n * @type {boolean}\n */\n this.emulateClicks_ = false;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_ = false;\n\n /**\n * @type {!Array}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * @type {number}\n * @private\n */\n this.moveTolerance_ = moveTolerance === undefined ? 1 : moveTolerance;\n\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent|null}\n * @private\n */\n this.down_ = null;\n\n const element = this.map_.getViewport();\n\n /**\n * @type {Array}\n * @private\n */\n this.activePointers_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.trackedTouches_ = {};\n\n this.element_ = element;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.pointerdownListenerKey_ = listen(\n element,\n PointerEventType.POINTERDOWN,\n this.handlePointerDown_,\n this\n );\n\n /**\n * @type {PointerEvent}\n * @private\n */\n this.originalPointerMoveEvent_;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.relayedListenerKey_ = listen(\n element,\n PointerEventType.POINTERMOVE,\n this.relayMoveEvent_,\n this\n );\n\n /**\n * @private\n */\n this.boundHandleTouchMove_ = this.handleTouchMove_.bind(this);\n\n this.element_.addEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n emulateClick_(pointerEvent) {\n let newEvent = new MapBrowserEvent(\n MapBrowserEventType.CLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserEvent(\n MapBrowserEventType.DBLCLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n } else {\n // click\n this.clickTimeoutId_ = setTimeout(() => {\n this.clickTimeoutId_ = undefined;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.SINGLECLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n }, 250);\n }\n }\n\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n updateActivePointers_(pointerEvent) {\n const event = pointerEvent;\n const id = event.pointerId;\n\n if (\n event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL\n ) {\n delete this.trackedTouches_[id];\n for (const pointerId in this.trackedTouches_) {\n if (this.trackedTouches_[pointerId].target !== event.target) {\n // Some platforms assign a new pointerId when the target changes.\n // If this happens, delete one tracked pointer. If there is more\n // than one tracked pointer for the old target, it will be cleared\n // by subsequent POINTERUP events from other pointers.\n delete this.trackedTouches_[pointerId];\n break;\n }\n }\n } else if (\n event.type == MapBrowserEventType.POINTERDOWN ||\n event.type == MapBrowserEventType.POINTERMOVE\n ) {\n this.trackedTouches_[id] = event;\n }\n this.activePointers_ = Object.values(this.trackedTouches_);\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerUp_(pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERUP,\n this.map_,\n pointerEvent,\n undefined,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.preventDefault().\n if (\n this.emulateClicks_ &&\n !newEvent.defaultPrevented &&\n !this.dragging_ &&\n this.isMouseActionButton_(pointerEvent)\n ) {\n this.emulateClick_(this.down_);\n }\n\n if (this.activePointers_.length === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n isMouseActionButton_(pointerEvent) {\n return pointerEvent.button === 0;\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerDown_(pointerEvent) {\n this.emulateClicks_ = this.activePointers_.length === 0;\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDOWN,\n this.map_,\n pointerEvent,\n undefined,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n\n this.down_ = new PointerEvent(pointerEvent.type, pointerEvent);\n Object.defineProperty(this.down_, 'target', {\n writable: false,\n value: pointerEvent.target,\n });\n\n if (this.dragListenerKeys_.length === 0) {\n const doc = this.map_.getOwnerDocument();\n this.dragListenerKeys_.push(\n listen(\n doc,\n MapBrowserEventType.POINTERMOVE,\n this.handlePointerMove_,\n this\n ),\n listen(doc, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this),\n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(\n this.element_,\n MapBrowserEventType.POINTERCANCEL,\n this.handlePointerUp_,\n this\n )\n );\n if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n this.dragListenerKeys_.push(\n listen(\n this.element_.getRootNode(),\n MapBrowserEventType.POINTERUP,\n this.handlePointerUp_,\n this\n )\n );\n }\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerMove_(pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.updateActivePointers_(pointerEvent);\n this.dragging_ = true;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDRAG,\n this.map_,\n pointerEvent,\n this.dragging_,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n }\n }\n\n /**\n * Wrap and relay a pointermove event.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n relayMoveEvent_(pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n const dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(\n new MapBrowserEvent(\n MapBrowserEventType.POINTERMOVE,\n this.map_,\n pointerEvent,\n dragging\n )\n );\n }\n\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n handleTouchMove_(event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events,\n // when elm-pep is used as pointer events polyfill.\n const originalEvent = this.originalPointerMoveEvent_;\n if (\n (!originalEvent || originalEvent.defaultPrevented) &&\n (typeof event.cancelable !== 'boolean' || event.cancelable === true)\n ) {\n event.preventDefault();\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n isMoving_(pointerEvent) {\n return (\n this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_\n );\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_\n );\n\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n\n this.element_ = null;\n super.disposeInternal();\n }\n}\n\nexport default MapBrowserEventHandler;\n","/**\n * @module ol/MapProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view',\n};\n","/**\n * @module ol/structs/PriorityQueue\n */\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\n\n/**\n * @type {number}\n */\nexport const DROP = Infinity;\n\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js\n * and https://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nclass PriorityQueue {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n constructor(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n }\n\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n dequeue() {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n } else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n const elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n }\n\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n const priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n }\n\n /**\n * @return {number} Count.\n */\n getCount() {\n return this.elements_.length;\n }\n\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n getLeftChildIndex_(index) {\n return index * 2 + 1;\n }\n\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n getRightChildIndex_(index) {\n return index * 2 + 2;\n }\n\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n getParentIndex_(index) {\n return (index - 1) >> 1;\n }\n\n /**\n * Make this a heap. O(N).\n * @private\n */\n heapify_() {\n let i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n }\n\n /**\n * @return {boolean} Is empty.\n */\n isEmpty() {\n return this.elements_.length === 0;\n }\n\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n isKeyQueued(key) {\n return key in this.queuedElements_;\n }\n\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n isQueued(element) {\n return this.isKeyQueued(this.keyFunction_(element));\n }\n\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n siftUp_(index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const count = elements.length;\n const element = elements[index];\n const priority = priorities[index];\n const startIndex = index;\n\n while (index < count >> 1) {\n const lIndex = this.getLeftChildIndex_(index);\n const rIndex = this.getRightChildIndex_(index);\n\n const smallerChildIndex =\n rIndex < count && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : lIndex;\n\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n }\n\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n siftDown_(startIndex, index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[index];\n const priority = priorities[index];\n\n while (index > startIndex) {\n const parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n } else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n reprioritize() {\n const priorityFunction = this.priorityFunction_;\n const elements = this.elements_;\n const priorities = this.priorities_;\n let index = 0;\n const n = elements.length;\n let element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n } else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n }\n}\n\nexport default PriorityQueue;\n","/**\n * @module ol/TileQueue\n */\nimport EventType from './events/EventType.js';\nimport PriorityQueue, {DROP} from './structs/PriorityQueue.js';\nimport TileState from './TileState.js';\n\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\n\nclass TileQueue extends PriorityQueue {\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n constructor(tilePriorityFunction, tileChangeCallback) {\n super(\n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n },\n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return /** @type {import(\"./Tile.js\").default} */ (element[0]).getKey();\n }\n );\n\n /** @private */\n this.boundHandleTileChange_ = this.handleTileChange.bind(this);\n\n /**\n * @private\n * @type {function(): ?}\n */\n this.tileChangeCallback_ = tileChangeCallback;\n\n /**\n * @private\n * @type {number}\n */\n this.tilesLoading_ = 0;\n\n /**\n * @private\n * @type {!Object}\n */\n this.tilesLoadingKeys_ = {};\n }\n\n /**\n * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n const added = super.enqueue(element);\n if (added) {\n const tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n }\n\n /**\n * @return {number} Number of tiles loading.\n */\n getTilesLoading() {\n return this.tilesLoading_;\n }\n\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n handleTileChange(event) {\n const tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n const state = tile.getState();\n if (\n state === TileState.LOADED ||\n state === TileState.ERROR ||\n state === TileState.EMPTY\n ) {\n if (state !== TileState.ERROR) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n const tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n }\n\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n loadMoreTiles(maxTotalLoading, maxNewLoads) {\n let newLoads = 0;\n let state, tile, tileKey;\n while (\n this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0\n ) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n }\n}\n\nexport default TileQueue;\n\n/**\n * @param {import('./Map.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(\n frameState,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n const center = frameState.viewState.center;\n const deltaX = tileCenter[0] - center[0];\n const deltaY = tileCenter[1] - center[1];\n return (\n 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution\n );\n}\n","/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport Interaction, {zoomByDelta} from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nclass DoubleClickZoom extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @private\n * @type {number}\n */\n this.delta_ = options.delta ? options.delta : 1;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n let stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n const browserEvent = /** @type {MouseEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const map = mapBrowserEvent.map;\n const anchor = mapBrowserEvent.coordinate;\n const delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n const view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n browserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n }\n}\n\nexport default DoubleClickZoom;\n","/**\n * @module ol/interaction/Pointer\n */\nimport Interaction from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\n\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleEvent]\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n * Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nclass PointerInteraction extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super(\n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)\n );\n\n if (options.handleDownEvent) {\n this.handleDownEvent = options.handleDownEvent;\n }\n\n if (options.handleDragEvent) {\n this.handleDragEvent = options.handleDragEvent;\n }\n\n if (options.handleMoveEvent) {\n this.handleMoveEvent = options.handleMoveEvent;\n }\n\n if (options.handleUpEvent) {\n this.handleUpEvent = options.handleUpEvent;\n }\n\n if (options.stopDown) {\n this.stopDown = options.stopDown;\n }\n\n /**\n * @type {boolean}\n * @protected\n */\n this.handlingDownUpSequence = false;\n\n /**\n * @type {Array}\n * @protected\n */\n this.targetPointers = [];\n }\n\n /**\n * Returns the current number of pointers involved in the interaction,\n * e.g. `2` when two fingers are used.\n * @return {number} The number of pointers.\n * @api\n */\n getPointerCount() {\n return this.targetPointers.length;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n handleDownEvent(mapBrowserEvent) {\n return false;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n handleDragEvent(mapBrowserEvent) {}\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may call into\n * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n * detected.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n handleEvent(mapBrowserEvent) {\n if (!mapBrowserEvent.originalEvent) {\n return true;\n }\n\n let stopEvent = false;\n this.updateTrackedPointers_(mapBrowserEvent);\n if (this.handlingDownUpSequence) {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n this.handleDragEvent(mapBrowserEvent);\n // prevent page scrolling during dragging\n mapBrowserEvent.originalEvent.preventDefault();\n } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n const handledUp = this.handleUpEvent(mapBrowserEvent);\n this.handlingDownUpSequence =\n handledUp && this.targetPointers.length > 0;\n }\n } else {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n const handled = this.handleDownEvent(mapBrowserEvent);\n this.handlingDownUpSequence = handled;\n stopEvent = this.stopDown(handled);\n } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n this.handleMoveEvent(mapBrowserEvent);\n }\n }\n return !stopEvent;\n }\n\n /**\n * Handle pointer move events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n handleMoveEvent(mapBrowserEvent) {}\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n handleUpEvent(mapBrowserEvent) {\n return false;\n }\n\n /**\n * This function is used to determine if \"down\" events should be propagated\n * to other interactions or should be stopped.\n * @param {boolean} handled Was the event handled by the interaction?\n * @return {boolean} Should the `down` event be stopped?\n */\n stopDown(handled) {\n return handled;\n }\n\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @private\n */\n updateTrackedPointers_(mapBrowserEvent) {\n if (mapBrowserEvent.activePointers) {\n this.targetPointers = mapBrowserEvent.activePointers;\n }\n }\n}\n\n/**\n * @param {Array} pointerEvents List of events.\n * @return {{clientX: number, clientY: number}} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n const length = pointerEvents.length;\n let clientX = 0;\n let clientY = 0;\n for (let i = 0; i < length; i++) {\n clientX += pointerEvents[i].clientX;\n clientY += pointerEvents[i].clientY;\n }\n return {clientX: clientX / length, clientY: clientY / length};\n}\n\nexport default PointerInteraction;\n","/**\n * @module ol/interaction/DragPan\n */\nimport PointerInteraction, {\n centroid as centroidFromPointers,\n} from './Pointer.js';\nimport {FALSE} from '../functions.js';\nimport {\n all,\n focusWithTabindex,\n noModifierKeys,\n primaryAction,\n} from '../events/condition.js';\nimport {easeOut} from '../easing.js';\nimport {\n rotate as rotateCoordinate,\n scale as scaleCoordinate,\n} from '../coordinate.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.noModifierKeys} and {@link module:ol/events/condition.primaryAction}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {import(\"../Kinetic.js\").default} [kinetic] Kinetic inertia to apply to the pan.\n */\n\n/**\n * @classdesc\n * Allows the user to pan the map by dragging the map.\n * @api\n */\nclass DragPan extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super({\n stopDown: FALSE,\n });\n\n options = options ? options : {};\n\n /**\n * @private\n * @type {import(\"../Kinetic.js\").default|undefined}\n */\n this.kinetic_ = options.kinetic;\n\n /**\n * @type {import(\"../pixel.js\").Pixel}\n */\n this.lastCentroid = null;\n\n /**\n * @type {number}\n */\n this.lastPointersCount_;\n\n /**\n * @type {boolean}\n */\n this.panning_ = false;\n\n const condition = options.condition\n ? options.condition\n : all(noModifierKeys, primaryAction);\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.onFocusOnly\n ? all(focusWithTabindex, condition)\n : condition;\n\n /**\n * @private\n * @type {boolean}\n */\n this.noKinetic_ = false;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n const map = mapBrowserEvent.map;\n if (!this.panning_) {\n this.panning_ = true;\n map.getView().beginInteraction();\n }\n const targetPointers = this.targetPointers;\n const centroid = map.getEventPixel(centroidFromPointers(targetPointers));\n if (targetPointers.length == this.lastPointersCount_) {\n if (this.kinetic_) {\n this.kinetic_.update(centroid[0], centroid[1]);\n }\n if (this.lastCentroid) {\n const delta = [\n this.lastCentroid[0] - centroid[0],\n centroid[1] - this.lastCentroid[1],\n ];\n const map = mapBrowserEvent.map;\n const view = map.getView();\n scaleCoordinate(delta, view.getResolution());\n rotateCoordinate(delta, view.getRotation());\n view.adjustCenterInternal(delta);\n }\n } else if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger down, tiny drag, second finger down\n this.kinetic_.begin();\n }\n this.lastCentroid = centroid;\n this.lastPointersCount_ = targetPointers.length;\n mapBrowserEvent.originalEvent.preventDefault();\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n if (this.targetPointers.length === 0) {\n if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) {\n const distance = this.kinetic_.getDistance();\n const angle = this.kinetic_.getAngle();\n const center = view.getCenterInternal();\n const centerpx = map.getPixelFromCoordinateInternal(center);\n const dest = map.getCoordinateFromPixelInternal([\n centerpx[0] - distance * Math.cos(angle),\n centerpx[1] - distance * Math.sin(angle),\n ]);\n view.animateInternal({\n center: view.getConstrainedCenter(dest),\n duration: 500,\n easing: easeOut,\n });\n }\n if (this.panning_) {\n this.panning_ = false;\n view.endInteraction();\n }\n return false;\n }\n if (this.kinetic_) {\n // reset so we don't overestimate the kinetic energy after\n // after one finger up, tiny drag, second finger up\n this.kinetic_.begin();\n }\n this.lastCentroid = null;\n return true;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (this.targetPointers.length > 0 && this.condition_(mapBrowserEvent)) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n this.lastCentroid = null;\n // stop any current animation\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n if (this.kinetic_) {\n this.kinetic_.begin();\n }\n // No kinetic as soon as more than one pointer on the screen is\n // detected. This is to prevent nasty pans after pinch.\n this.noKinetic_ = this.targetPointers.length > 1;\n return true;\n }\n return false;\n }\n}\n\nexport default DragPan;\n","/**\n * @module ol/interaction/DragRotate\n */\nimport PointerInteraction from './Pointer.js';\nimport {FALSE} from '../functions.js';\nimport {\n altShiftKeysOnly,\n mouseActionButton,\n mouseOnly,\n} from '../events/condition.js';\nimport {disable} from '../rotationconstraint.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an\n * {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.altShiftKeysOnly}.\n * @property {number} [duration=250] Animation duration in milliseconds.\n */\n\n/**\n * @classdesc\n * Allows the user to rotate the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the alt and shift keys are held down.\n *\n * This interaction is only supported for mouse devices.\n * @api\n */\nclass DragRotate extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n stopDown: FALSE,\n });\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.condition ? options.condition : altShiftKeysOnly;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.lastAngle_ = undefined;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return;\n }\n\n const map = mapBrowserEvent.map;\n const view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n const size = map.getSize();\n const offset = mapBrowserEvent.pixel;\n const theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2);\n if (this.lastAngle_ !== undefined) {\n const delta = theta - this.lastAngle_;\n view.adjustRotationInternal(-delta);\n }\n this.lastAngle_ = theta;\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return true;\n }\n\n const map = mapBrowserEvent.map;\n const view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (!mouseOnly(mapBrowserEvent)) {\n return false;\n }\n\n if (\n mouseActionButton(mapBrowserEvent) &&\n this.condition_(mapBrowserEvent)\n ) {\n const map = mapBrowserEvent.map;\n map.getView().beginInteraction();\n this.lastAngle_ = undefined;\n return true;\n }\n return false;\n }\n}\n\nexport default DragRotate;\n","/**\n * @module ol/render/Box\n */\n\nimport Disposable from '../Disposable.js';\nimport Polygon from '../geom/Polygon.js';\n\nclass RenderBox extends Disposable {\n /**\n * @param {string} className CSS class name.\n */\n constructor(className) {\n super();\n\n /**\n * @type {import(\"../geom/Polygon.js\").default}\n * @private\n */\n this.geometry_ = null;\n\n /**\n * @type {HTMLDivElement}\n * @private\n */\n this.element_ = document.createElement('div');\n this.element_.style.position = 'absolute';\n this.element_.style.pointerEvents = 'auto';\n this.element_.className = 'ol-box ' + className;\n\n /**\n * @private\n * @type {import(\"../Map.js\").default|null}\n */\n this.map_ = null;\n\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n this.startPixel_ = null;\n\n /**\n * @private\n * @type {import(\"../pixel.js\").Pixel}\n */\n this.endPixel_ = null;\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.setMap(null);\n }\n\n /**\n * @private\n */\n render_() {\n const startPixel = this.startPixel_;\n const endPixel = this.endPixel_;\n const px = 'px';\n const style = this.element_.style;\n style.left = Math.min(startPixel[0], endPixel[0]) + px;\n style.top = Math.min(startPixel[1], endPixel[1]) + px;\n style.width = Math.abs(endPixel[0] - startPixel[0]) + px;\n style.height = Math.abs(endPixel[1] - startPixel[1]) + px;\n }\n\n /**\n * @param {import(\"../Map.js\").default|null} map Map.\n */\n setMap(map) {\n if (this.map_) {\n this.map_.getOverlayContainer().removeChild(this.element_);\n const style = this.element_.style;\n style.left = 'inherit';\n style.top = 'inherit';\n style.width = 'inherit';\n style.height = 'inherit';\n }\n this.map_ = map;\n if (this.map_) {\n this.map_.getOverlayContainer().appendChild(this.element_);\n }\n }\n\n /**\n * @param {import(\"../pixel.js\").Pixel} startPixel Start pixel.\n * @param {import(\"../pixel.js\").Pixel} endPixel End pixel.\n */\n setPixels(startPixel, endPixel) {\n this.startPixel_ = startPixel;\n this.endPixel_ = endPixel;\n this.createOrUpdateGeometry();\n this.render_();\n }\n\n /**\n * Creates or updates the cached geometry.\n */\n createOrUpdateGeometry() {\n const startPixel = this.startPixel_;\n const endPixel = this.endPixel_;\n const pixels = [\n startPixel,\n [startPixel[0], endPixel[1]],\n endPixel,\n [endPixel[0], startPixel[1]],\n ];\n const coordinates = pixels.map(\n this.map_.getCoordinateFromPixelInternal,\n this.map_\n );\n // close the polygon\n coordinates[4] = coordinates[0].slice();\n if (!this.geometry_) {\n this.geometry_ = new Polygon([coordinates]);\n } else {\n this.geometry_.setCoordinates([coordinates]);\n }\n }\n\n /**\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n */\n getGeometry() {\n return this.geometry_;\n }\n}\n\nexport default RenderBox;\n","/**\n * @module ol/interaction/DragBox\n */\n// FIXME draw drag box\nimport Event from '../events/Event.js';\nimport PointerInteraction from './Pointer.js';\nimport RenderBox from '../render/Box.js';\nimport {mouseActionButton} from '../events/condition.js';\n\n/**\n * A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s and returns a `{boolean}`. If the condition is met,\n * true should be returned.\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default, import(\"../pixel.js\").Pixel, import(\"../pixel.js\").Pixel):boolean} EndCondition\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragbox'] CSS class name for styling the box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a boolean\n * to indicate whether that event should be handled.\n * Default is {@link ol/events/condition~mouseActionButton}.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the default\n * `boxEndCondition` function.\n * @property {EndCondition} [boxEndCondition] A function that takes a {@link module:ol/MapBrowserEvent~MapBrowserEvent} and two\n * {@link module:ol/pixel~Pixel}s to indicate whether a `boxend` event should be fired.\n * Default is `true` if the area of the box is bigger than the `minArea` option.\n * @property {function(this:DragBox, import(\"../MapBrowserEvent.js\").default):void} [onBoxEnd] Code to execute just\n * before `boxend` is fired.\n */\n\n/**\n * @enum {string}\n */\nconst DragBoxEventType = {\n /**\n * Triggered upon drag box start.\n * @event DragBoxEvent#boxstart\n * @api\n */\n BOXSTART: 'boxstart',\n\n /**\n * Triggered on drag when box is active.\n * @event DragBoxEvent#boxdrag\n * @api\n */\n BOXDRAG: 'boxdrag',\n\n /**\n * Triggered upon drag box end.\n * @event DragBoxEvent#boxend\n * @api\n */\n BOXEND: 'boxend',\n\n /**\n * Triggered upon drag box canceled.\n * @event DragBoxEvent#boxcancel\n * @api\n */\n BOXCANCEL: 'boxcancel',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/DragBox~DragBox} instances are instances of\n * this type.\n */\nexport class DragBoxEvent extends Event {\n /**\n * @param {string} type The event type.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate The event coordinate.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Originating event.\n */\n constructor(type, coordinate, mapBrowserEvent) {\n super(type);\n\n /**\n * The coordinate of the drag event.\n * @const\n * @type {import(\"../coordinate.js\").Coordinate}\n * @api\n */\n this.coordinate = coordinate;\n\n /**\n * @const\n * @type {import(\"../MapBrowserEvent.js\").default}\n * @api\n */\n this.mapBrowserEvent = mapBrowserEvent;\n }\n}\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature<'boxcancel'|'boxdrag'|'boxend'|'boxstart', DragBoxEvent, Return> &\n * import(\"../Observable\").CombinedOnSignature} DragBoxOnSignature\n */\n\n/**\n * @classdesc\n * Allows the user to draw a vector box by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when the shift or other key is held down. This is used, for example,\n * for zooming to a specific area of the map\n * (see {@link module:ol/interaction/DragZoom~DragZoom} and\n * {@link module:ol/interaction/DragRotateAndZoom~DragRotateAndZoom}).\n *\n * @fires DragBoxEvent\n * @api\n */\nclass DragBox extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {DragBoxOnSignature}\n */\n this.on;\n\n /***\n * @type {DragBoxOnSignature}\n */\n this.once;\n\n /***\n * @type {DragBoxOnSignature}\n */\n this.un;\n\n options = options ? options : {};\n\n /**\n * @type {import(\"../render/Box.js\").default}\n * @private\n */\n this.box_ = new RenderBox(options.className || 'ol-dragbox');\n\n /**\n * @type {number}\n * @private\n */\n this.minArea_ = options.minArea !== undefined ? options.minArea : 64;\n\n if (options.onBoxEnd) {\n this.onBoxEnd = options.onBoxEnd;\n }\n\n /**\n * @type {import(\"../pixel.js\").Pixel}\n * @private\n */\n this.startPixel_ = null;\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.condition ? options.condition : mouseActionButton;\n\n /**\n * @private\n * @type {EndCondition}\n */\n this.boxEndCondition_ = options.boxEndCondition\n ? options.boxEndCondition\n : this.defaultBoxEndCondition;\n }\n\n /**\n * The default condition for determining whether the boxend event\n * should fire.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent The originating MapBrowserEvent\n * leading to the box end.\n * @param {import(\"../pixel.js\").Pixel} startPixel The starting pixel of the box.\n * @param {import(\"../pixel.js\").Pixel} endPixel The end pixel of the box.\n * @return {boolean} Whether or not the boxend condition should be fired.\n */\n defaultBoxEndCondition(mapBrowserEvent, startPixel, endPixel) {\n const width = endPixel[0] - startPixel[0];\n const height = endPixel[1] - startPixel[1];\n return width * width + height * height >= this.minArea_;\n }\n\n /**\n * Returns geometry of last drawn box.\n * @return {import(\"../geom/Polygon.js\").default} Geometry.\n * @api\n */\n getGeometry() {\n return this.box_.getGeometry();\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel);\n\n this.dispatchEvent(\n new DragBoxEvent(\n DragBoxEventType.BOXDRAG,\n mapBrowserEvent.coordinate,\n mapBrowserEvent\n )\n );\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n this.box_.setMap(null);\n\n const completeBox = this.boxEndCondition_(\n mapBrowserEvent,\n this.startPixel_,\n mapBrowserEvent.pixel\n );\n if (completeBox) {\n this.onBoxEnd(mapBrowserEvent);\n }\n this.dispatchEvent(\n new DragBoxEvent(\n completeBox ? DragBoxEventType.BOXEND : DragBoxEventType.BOXCANCEL,\n mapBrowserEvent.coordinate,\n mapBrowserEvent\n )\n );\n return false;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (this.condition_(mapBrowserEvent)) {\n this.startPixel_ = mapBrowserEvent.pixel;\n this.box_.setMap(mapBrowserEvent.map);\n this.box_.setPixels(this.startPixel_, this.startPixel_);\n this.dispatchEvent(\n new DragBoxEvent(\n DragBoxEventType.BOXSTART,\n mapBrowserEvent.coordinate,\n mapBrowserEvent\n )\n );\n return true;\n }\n return false;\n }\n\n /**\n * Function to execute just before `onboxend` is fired\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n */\n onBoxEnd(event) {}\n}\n\nexport default DragBox;\n","/**\n * @module ol/interaction/DragZoom\n */\nimport DragBox from './DragBox.js';\nimport {easeOut} from '../easing.js';\nimport {shiftKeyOnly} from '../events/condition.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-dragzoom'] CSS class name for styling the\n * box.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * Default is {@link module:ol/events/condition.shiftKeyOnly}.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {boolean} [out=false] Use interaction for zooming out.\n * @property {number} [minArea=64] The minimum area of the box in pixel, this value is used by the parent default\n * `boxEndCondition` function.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by clicking and dragging on the map,\n * normally combined with an {@link module:ol/events/condition} that limits\n * it to when a key, shift by default, is held down.\n *\n * To change the style of the box, use CSS and the `.ol-dragzoom` selector, or\n * your custom one configured with `className`.\n * @api\n */\nclass DragZoom extends DragBox {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const condition = options.condition ? options.condition : shiftKeyOnly;\n\n super({\n condition: condition,\n className: options.className || 'ol-dragzoom',\n minArea: options.minArea,\n });\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 200;\n\n /**\n * @private\n * @type {boolean}\n */\n this.out_ = options.out !== undefined ? options.out : false;\n }\n\n /**\n * Function to execute just before `onboxend` is fired\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n */\n onBoxEnd(event) {\n const map = this.getMap();\n const view = /** @type {!import(\"../View.js\").default} */ (map.getView());\n let geometry = this.getGeometry();\n\n if (this.out_) {\n const rotatedExtent = view.rotatedExtentForGeometry(geometry);\n const resolution = view.getResolutionForExtentInternal(rotatedExtent);\n const factor = view.getResolution() / resolution;\n geometry = geometry.clone();\n geometry.scale(factor * factor);\n }\n\n view.fitInternal(geometry, {\n duration: this.duration_,\n easing: easeOut,\n });\n }\n}\n\nexport default DragZoom;\n","/**\n * @module ol/events/Key\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n LEFT: 'ArrowLeft',\n UP: 'ArrowUp',\n RIGHT: 'ArrowRight',\n DOWN: 'ArrowDown',\n};\n","/**\n * @module ol/interaction/KeyboardPan\n */\nimport EventType from '../events/EventType.js';\nimport Interaction, {pan} from './Interaction.js';\nimport Key from '../events/Key.js';\nimport {noModifierKeys, targetNotEditable} from '../events/condition.js';\nimport {rotate as rotateCoordinate} from '../coordinate.js';\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.noModifierKeys} and\n * {@link module:ol/events/condition.targetNotEditable}.\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {number} [pixelDelta=128] The amount of pixels to pan on each key\n * press.\n */\n\n/**\n * @classdesc\n * Allows the user to pan the map using keyboard arrows.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}.\n * @api\n */\nclass KeyboardPan extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options || {};\n\n /**\n * @private\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Browser event.\n * @return {boolean} Combined condition result.\n */\n this.defaultCondition_ = function (mapBrowserEvent) {\n return (\n noModifierKeys(mapBrowserEvent) && targetNotEditable(mapBrowserEvent)\n );\n };\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ =\n options.condition !== undefined\n ? options.condition\n : this.defaultCondition_;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 100;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelDelta_ =\n options.pixelDelta !== undefined ? options.pixelDelta : 128;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides the direction to pan to (if an arrow key was\n * pressed).\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n let stopEvent = false;\n if (mapBrowserEvent.type == EventType.KEYDOWN) {\n const keyEvent = /** @type {KeyboardEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const key = keyEvent.key;\n if (\n this.condition_(mapBrowserEvent) &&\n (key == Key.DOWN ||\n key == Key.LEFT ||\n key == Key.RIGHT ||\n key == Key.UP)\n ) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n const mapUnitsDelta = view.getResolution() * this.pixelDelta_;\n let deltaX = 0,\n deltaY = 0;\n if (key == Key.DOWN) {\n deltaY = -mapUnitsDelta;\n } else if (key == Key.LEFT) {\n deltaX = -mapUnitsDelta;\n } else if (key == Key.RIGHT) {\n deltaX = mapUnitsDelta;\n } else {\n deltaY = mapUnitsDelta;\n }\n const delta = [deltaX, deltaY];\n rotateCoordinate(delta, view.getRotation());\n pan(view, delta, this.duration_);\n keyEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n }\n}\n\nexport default KeyboardPan;\n","/**\n * @module ol/interaction/KeyboardZoom\n */\nimport EventType from '../events/EventType.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\nimport {platformModifierKey, targetNotEditable} from '../events/condition.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=100] Animation duration in milliseconds.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. The default condition is\n * that {@link module:ol/events/condition.targetNotEditable} is fulfilled and that\n * the platform modifier key isn't pressed\n * (!{@link module:ol/events/condition.platformModifierKey}).\n * @property {number} [delta=1] The zoom level delta on each key press.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map using keyboard + and -.\n * Note that, although this interaction is by default included in maps,\n * the keys can only be used when browser focus is on the element to which\n * the keyboard events are attached. By default, this is the map div,\n * though you can change this with the `keyboardEventTarget` in\n * {@link module:ol/Map~Map}. `document` never loses focus but, for any other\n * element, focus will have to be on, and returned to, this element if the keys\n * are to function.\n * See also {@link module:ol/interaction/KeyboardPan~KeyboardPan}.\n * @api\n */\nclass KeyboardZoom extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.condition\n ? options.condition\n : function (mapBrowserEvent) {\n return (\n !platformModifierKey(mapBrowserEvent) &&\n targetNotEditable(mapBrowserEvent)\n );\n };\n\n /**\n * @private\n * @type {number}\n */\n this.delta_ = options.delta ? options.delta : 1;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 100;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} if it was a\n * `KeyEvent`, and decides whether to zoom in or out (depending on whether the\n * key pressed was '+' or '-').\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n let stopEvent = false;\n if (\n mapBrowserEvent.type == EventType.KEYDOWN ||\n mapBrowserEvent.type == EventType.KEYPRESS\n ) {\n const keyEvent = /** @type {KeyboardEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const key = keyEvent.key;\n if (this.condition_(mapBrowserEvent) && (key === '+' || key === '-')) {\n const map = mapBrowserEvent.map;\n const delta = key === '+' ? this.delta_ : -this.delta_;\n const view = map.getView();\n zoomByDelta(view, delta, undefined, this.duration_);\n keyEvent.preventDefault();\n stopEvent = true;\n }\n }\n return !stopEvent;\n }\n}\n\nexport default KeyboardZoom;\n","/**\n * @module ol/Kinetic\n */\n\n/**\n * @classdesc\n * Implementation of inertial deceleration for map movement.\n *\n * @api\n */\nclass Kinetic {\n /**\n * @param {number} decay Rate of decay (must be negative).\n * @param {number} minVelocity Minimum velocity (pixels/millisecond).\n * @param {number} delay Delay to consider to calculate the kinetic\n * initial values (milliseconds).\n */\n constructor(decay, minVelocity, delay) {\n /**\n * @private\n * @type {number}\n */\n this.decay_ = decay;\n\n /**\n * @private\n * @type {number}\n */\n this.minVelocity_ = minVelocity;\n\n /**\n * @private\n * @type {number}\n */\n this.delay_ = delay;\n\n /**\n * @private\n * @type {Array}\n */\n this.points_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.angle_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.initialVelocity_ = 0;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n begin() {\n this.points_.length = 0;\n this.angle_ = 0;\n this.initialVelocity_ = 0;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n */\n update(x, y) {\n this.points_.push(x, y, Date.now());\n }\n\n /**\n * @return {boolean} Whether we should do kinetic animation.\n */\n end() {\n if (this.points_.length < 6) {\n // at least 2 points are required (i.e. there must be at least 6 elements\n // in the array)\n return false;\n }\n const delay = Date.now() - this.delay_;\n const lastIndex = this.points_.length - 3;\n if (this.points_[lastIndex + 2] < delay) {\n // the last tracked point is too old, which means that the user stopped\n // panning before releasing the map\n return false;\n }\n\n // get the first point which still falls into the delay time\n let firstIndex = lastIndex - 3;\n while (firstIndex > 0 && this.points_[firstIndex + 2] > delay) {\n firstIndex -= 3;\n }\n\n const duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2];\n // we don't want a duration of 0 (divide by zero)\n // we also make sure the user panned for a duration of at least one frame\n // (1/60s) to compute sane displacement values\n if (duration < 1000 / 60) {\n return false;\n }\n\n const dx = this.points_[lastIndex] - this.points_[firstIndex];\n const dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1];\n this.angle_ = Math.atan2(dy, dx);\n this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration;\n return this.initialVelocity_ > this.minVelocity_;\n }\n\n /**\n * @return {number} Total distance travelled (pixels).\n */\n getDistance() {\n return (this.minVelocity_ - this.initialVelocity_) / this.decay_;\n }\n\n /**\n * @return {number} Angle of the kinetic panning animation (radians).\n */\n getAngle() {\n return this.angle_;\n }\n}\n\nexport default Kinetic;\n","/**\n * @module ol/interaction/MouseWheelZoom\n */\nimport EventType from '../events/EventType.js';\nimport Interaction, {zoomByDelta} from './Interaction.js';\nimport {DEVICE_PIXEL_RATIO, FIREFOX} from '../has.js';\nimport {all, always, focusWithTabindex} from '../events/condition.js';\nimport {clamp} from '../math.js';\n\n/**\n * @typedef {'trackpad' | 'wheel'} Mode\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. Default is\n * {@link module:ol/events/condition.always}.\n * @property {boolean} [onFocusOnly=false] When the map's target has a `tabindex` attribute set,\n * the interaction will only handle events when the map has the focus.\n * @property {number} [maxDelta=1] Maximum mouse wheel delta.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [timeout=80] Mouse wheel timeout duration in milliseconds.\n * @property {boolean} [useAnchor=true] Enable zooming using the mouse's\n * location as the anchor. When set to `false`, zooming in and out will zoom to\n * the center of the screen instead of zooming on the mouse's location.\n * @property {boolean} [constrainResolution=false] If true, the mouse wheel zoom\n * event will always animate to the closest zoom level after an interaction;\n * false means intermediary zoom levels are allowed.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by scrolling the mouse wheel.\n * @api\n */\nclass MouseWheelZoom extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super(\n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)\n );\n\n /**\n * @private\n * @type {number}\n */\n this.totalDelta_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.lastDelta_ = 0;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = options.maxDelta !== undefined ? options.maxDelta : 1;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n /**\n * @private\n * @type {number}\n */\n this.timeout_ = options.timeout !== undefined ? options.timeout : 80;\n\n /**\n * @private\n * @type {boolean}\n */\n this.useAnchor_ =\n options.useAnchor !== undefined ? options.useAnchor : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.constrainResolution_ =\n options.constrainResolution !== undefined\n ? options.constrainResolution\n : false;\n\n const condition = options.condition ? options.condition : always;\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.onFocusOnly\n ? all(focusWithTabindex, condition)\n : condition;\n\n /**\n * @private\n * @type {?import(\"../coordinate.js\").Coordinate}\n */\n this.lastAnchor_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.startTime_ = undefined;\n\n /**\n * @private\n * @type {ReturnType}\n */\n this.timeoutId_;\n\n /**\n * @private\n * @type {Mode|undefined}\n */\n this.mode_ = undefined;\n\n /**\n * Trackpad events separated by this delay will be considered separate\n * interactions.\n * @private\n * @type {number}\n */\n this.trackpadEventGap_ = 400;\n\n /**\n * @private\n * @type {ReturnType}\n */\n this.trackpadTimeoutId_;\n\n /**\n * The number of delta values per zoom level\n * @private\n * @type {number}\n */\n this.deltaPerZoom_ = 300;\n }\n\n /**\n * @private\n */\n endInteraction_() {\n this.trackpadTimeoutId_ = undefined;\n const map = this.getMap();\n if (!map) {\n return;\n }\n const view = map.getView();\n view.endInteraction(\n undefined,\n this.lastDelta_ ? (this.lastDelta_ > 0 ? 1 : -1) : 0,\n this.lastAnchor_\n );\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} (if it was a mousewheel-event) and eventually\n * zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n if (!this.condition_(mapBrowserEvent)) {\n return true;\n }\n const type = mapBrowserEvent.type;\n if (type !== EventType.WHEEL) {\n return true;\n }\n\n const map = mapBrowserEvent.map;\n const wheelEvent = /** @type {WheelEvent} */ (\n mapBrowserEvent.originalEvent\n );\n wheelEvent.preventDefault();\n\n if (this.useAnchor_) {\n this.lastAnchor_ = mapBrowserEvent.coordinate;\n }\n\n // Delta normalisation inspired by\n // https://github.com/mapbox/mapbox-gl-js/blob/001c7b9/js/ui/handler/scroll_zoom.js\n let delta;\n if (mapBrowserEvent.type == EventType.WHEEL) {\n delta = wheelEvent.deltaY;\n if (FIREFOX && wheelEvent.deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\n delta /= DEVICE_PIXEL_RATIO;\n }\n if (wheelEvent.deltaMode === WheelEvent.DOM_DELTA_LINE) {\n delta *= 40;\n }\n }\n\n if (delta === 0) {\n return false;\n }\n this.lastDelta_ = delta;\n\n const now = Date.now();\n\n if (this.startTime_ === undefined) {\n this.startTime_ = now;\n }\n\n if (!this.mode_ || now - this.startTime_ > this.trackpadEventGap_) {\n this.mode_ = Math.abs(delta) < 4 ? 'trackpad' : 'wheel';\n }\n\n const view = map.getView();\n if (\n this.mode_ === 'trackpad' &&\n !(view.getConstrainResolution() || this.constrainResolution_)\n ) {\n if (this.trackpadTimeoutId_) {\n clearTimeout(this.trackpadTimeoutId_);\n } else {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.beginInteraction();\n }\n this.trackpadTimeoutId_ = setTimeout(\n this.endInteraction_.bind(this),\n this.timeout_\n );\n view.adjustZoom(-delta / this.deltaPerZoom_, this.lastAnchor_);\n this.startTime_ = now;\n return false;\n }\n\n this.totalDelta_ += delta;\n\n const timeLeft = Math.max(this.timeout_ - (now - this.startTime_), 0);\n\n clearTimeout(this.timeoutId_);\n this.timeoutId_ = setTimeout(\n this.handleWheelZoom_.bind(this, map),\n timeLeft\n );\n\n return false;\n }\n\n /**\n * @private\n * @param {import(\"../Map.js\").default} map Map.\n */\n handleWheelZoom_(map) {\n const view = map.getView();\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n let delta =\n -clamp(\n this.totalDelta_,\n -this.maxDelta_ * this.deltaPerZoom_,\n this.maxDelta_ * this.deltaPerZoom_\n ) / this.deltaPerZoom_;\n if (view.getConstrainResolution() || this.constrainResolution_) {\n // view has a zoom constraint, zoom by 1\n delta = delta ? (delta > 0 ? 1 : -1) : 0;\n }\n zoomByDelta(view, delta, this.lastAnchor_, this.duration_);\n\n this.mode_ = undefined;\n this.totalDelta_ = 0;\n this.lastAnchor_ = null;\n this.startTime_ = undefined;\n this.timeoutId_ = undefined;\n }\n\n /**\n * Enable or disable using the mouse's location as an anchor when zooming\n * @param {boolean} useAnchor true to zoom to the mouse's location, false\n * to zoom to the center of the map\n * @api\n */\n setMouseAnchor(useAnchor) {\n this.useAnchor_ = useAnchor;\n if (!useAnchor) {\n this.lastAnchor_ = null;\n }\n }\n}\n\nexport default MouseWheelZoom;\n","/**\n * @module ol/interaction/PinchRotate\n */\nimport PointerInteraction, {\n centroid as centroidFromPointers,\n} from './Pointer.js';\nimport {FALSE} from '../functions.js';\nimport {disable} from '../rotationconstraint.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] The duration of the animation in\n * milliseconds.\n * @property {number} [threshold=0.3] Minimal angle in radians to start a rotation.\n */\n\n/**\n * @classdesc\n * Allows the user to rotate the map by twisting with two fingers\n * on a touch screen.\n * @api\n */\nclass PinchRotate extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n options\n );\n\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n\n super(pointerOptions);\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.anchor_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.lastAngle_ = undefined;\n\n /**\n * @private\n * @type {boolean}\n */\n this.rotating_ = false;\n\n /**\n * @private\n * @type {number}\n */\n this.rotationDelta_ = 0.0;\n\n /**\n * @private\n * @type {number}\n */\n this.threshold_ = options.threshold !== undefined ? options.threshold : 0.3;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n let rotationDelta = 0.0;\n\n const touch0 = this.targetPointers[0];\n const touch1 = this.targetPointers[1];\n\n // angle between touches\n const angle = Math.atan2(\n touch1.clientY - touch0.clientY,\n touch1.clientX - touch0.clientX\n );\n\n if (this.lastAngle_ !== undefined) {\n const delta = angle - this.lastAngle_;\n this.rotationDelta_ += delta;\n if (!this.rotating_ && Math.abs(this.rotationDelta_) > this.threshold_) {\n this.rotating_ = true;\n }\n rotationDelta = delta;\n }\n this.lastAngle_ = angle;\n\n const map = mapBrowserEvent.map;\n const view = map.getView();\n if (view.getConstraints().rotation === disable) {\n return;\n }\n\n // rotate anchor point.\n // FIXME: should be the intersection point between the lines:\n // touch0,touch1 and previousTouch0,previousTouch1\n this.anchor_ = map.getCoordinateFromPixelInternal(\n map.getEventPixel(centroidFromPointers(this.targetPointers))\n );\n\n // rotate\n if (this.rotating_) {\n map.render();\n view.adjustRotationInternal(rotationDelta, this.anchor_);\n }\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n view.endInteraction(this.duration_);\n return false;\n }\n return true;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n const map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastAngle_ = undefined;\n this.rotating_ = false;\n this.rotationDelta_ = 0.0;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n return false;\n }\n}\n\nexport default PinchRotate;\n","/**\n * @module ol/interaction/PinchZoom\n */\nimport PointerInteraction, {\n centroid as centroidFromPointers,\n} from './Pointer.js';\nimport {FALSE} from '../functions.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=400] Animation duration in milliseconds.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom the map by pinching with two fingers\n * on a touch screen.\n * @api\n */\nclass PinchZoom extends PointerInteraction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const pointerOptions = /** @type {import(\"./Pointer.js\").Options} */ (\n options\n );\n\n if (!pointerOptions.stopDown) {\n pointerOptions.stopDown = FALSE;\n }\n\n super(pointerOptions);\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.anchor_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 400;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.lastDistance_ = undefined;\n\n /**\n * @private\n * @type {number}\n */\n this.lastScaleDelta_ = 1;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n */\n handleDragEvent(mapBrowserEvent) {\n let scaleDelta = 1.0;\n\n const touch0 = this.targetPointers[0];\n const touch1 = this.targetPointers[1];\n const dx = touch0.clientX - touch1.clientX;\n const dy = touch0.clientY - touch1.clientY;\n\n // distance between touches\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n if (this.lastDistance_ !== undefined) {\n scaleDelta = this.lastDistance_ / distance;\n }\n this.lastDistance_ = distance;\n\n const map = mapBrowserEvent.map;\n const view = map.getView();\n\n if (scaleDelta != 1.0) {\n this.lastScaleDelta_ = scaleDelta;\n }\n\n // scale anchor point.\n this.anchor_ = map.getCoordinateFromPixelInternal(\n map.getEventPixel(centroidFromPointers(this.targetPointers))\n );\n\n // scale, bypass the resolution constraint\n map.render();\n view.adjustResolutionInternal(scaleDelta, this.anchor_);\n }\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleUpEvent(mapBrowserEvent) {\n if (this.targetPointers.length < 2) {\n const map = mapBrowserEvent.map;\n const view = map.getView();\n const direction = this.lastScaleDelta_ > 1 ? 1 : -1;\n view.endInteraction(this.duration_, direction);\n return false;\n }\n return true;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n */\n handleDownEvent(mapBrowserEvent) {\n if (this.targetPointers.length >= 2) {\n const map = mapBrowserEvent.map;\n this.anchor_ = null;\n this.lastDistance_ = undefined;\n this.lastScaleDelta_ = 1;\n if (!this.handlingDownUpSequence) {\n map.getView().beginInteraction();\n }\n return true;\n }\n return false;\n }\n}\n\nexport default PinchZoom;\n","/**\n * @module ol/Map\n */\nimport BaseObject from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport CompositeMapRenderer from './renderer/Composite.js';\nimport EventType from './events/EventType.js';\nimport Layer from './layer/Layer.js';\nimport LayerGroup, {GroupEvent} from './layer/Group.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, {getTilePriority} from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport {DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {TRUE} from './functions.js';\nimport {\n apply as applyTransform,\n create as createTransform,\n} from './transform.js';\nimport {assert} from './asserts.js';\nimport {\n clone,\n createOrUpdateEmpty,\n equals as equalsExtent,\n getForViewAndSize,\n isEmpty,\n} from './extent.js';\nimport {defaults as defaultControls} from './control/defaults.js';\nimport {defaults as defaultInteractions} from './interaction/defaults.js';\nimport {equals} from './array.js';\nimport {fromUserCoordinate, toUserCoordinate} from './proj.js';\nimport {getUid} from './util.js';\nimport {hasArea} from './size.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {removeNode} from './dom.js';\nimport {warn} from './console.js';\n\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate Animate.\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform CoordinateToPixelTransform.\n * @property {import(\"rbush\").default} declutterTree DeclutterTree.\n * @property {null|import(\"./extent.js\").Extent} extent Extent (in view projection coordinates).\n * @property {import(\"./extent.js\").Extent} [nextExtent] Next extent during an animation series.\n * @property {number} index Index.\n * @property {Array} layerStatesArray LayerStatesArray.\n * @property {number} layerIndex LayerIndex.\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform PixelToCoordinateTransform.\n * @property {Array} postRenderFunctions PostRenderFunctions.\n * @property {import(\"./size.js\").Size} size Size.\n * @property {TileQueue} tileQueue TileQueue.\n * @property {!Object>} usedTiles UsedTiles.\n * @property {Array} viewHints ViewHints.\n * @property {!Object>} wantedTiles WantedTiles.\n * @property {string} mapId The id of the map.\n * @property {Object} renderTargets Identifiers of previously rendered elements.\n */\n\n/**\n * @typedef {function(Map, ?FrameState): any} PostRenderFunction\n */\n\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer~Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in css pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls] Controls.\n * @property {Collection} [interactions] Interactions.\n * @property {HTMLElement|Document} keyboardEventTarget KeyboardEventTarget.\n * @property {Collection} overlays Overlays.\n * @property {Object} values Values.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:layergroup'|'change:size'|'change:target'|'change:view'} MapObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} MapEventHandler\n */\n\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control/defaults.defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction/defaults.defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered. If passed by element, the container can be in a secondary document.\n * **Note:** CSS `transform` support for the target element is limited to `scale`.\n * @property {View|Promise} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n */\nfunction removeLayerMapProperty(layer) {\n if (layer instanceof Layer) {\n layer.setMapInternal(null);\n return;\n }\n if (layer instanceof LayerGroup) {\n layer.getLayers().forEach(removeLayerMapProperty);\n }\n}\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @param {Map} map Map.\n */\nfunction setLayerMapProperty(layer, map) {\n if (layer instanceof Layer) {\n layer.setMapInternal(map);\n return;\n }\n if (layer instanceof LayerGroup) {\n const layers = layer.getLayers().getArray();\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n setLayerMapProperty(layers[i], map);\n }\n }\n}\n\n/**\n * @classdesc\n * The map is the core component of OpenLayers. For a map to render, a view,\n * one or more layers, and a target container are needed:\n *\n * import Map from 'ol/Map.js';\n * import View from 'ol/View.js';\n * import TileLayer from 'ol/layer/Tile.js';\n * import OSM from 'ol/source/OSM.js';\n *\n * const map = new Map({\n * view: new View({\n * center: [0, 0],\n * zoom: 1,\n * }),\n * layers: [\n * new TileLayer({\n * source: new OSM(),\n * }),\n * ],\n * target: 'map',\n * });\n *\n * The above snippet creates a map using a {@link module:ol/layer/Tile~TileLayer} to\n * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOM\n * element with the id `map`.\n *\n * The constructor places a viewport container (with CSS class name\n * `ol-viewport`) in the target element (see `getViewport()`), and then two\n * further elements within the viewport: one with CSS class name\n * `ol-overlaycontainer-stopevent` for controls and some overlays, and one with\n * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`\n * option of {@link module:ol/Overlay~Overlay} for the difference). The map\n * itself is placed in a further element within the viewport.\n *\n * Layers are stored as a {@link module:ol/Collection~Collection} in\n * layerGroups. A top-level group is provided by the library. This is what is\n * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in the\n * options are added to this group, and `addLayer` and `removeLayer` change the\n * layer collection in the group. `getLayers` is a convenience function for\n * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~LayerGroup}\n * is a subclass of {@link module:ol/layer/Base~BaseLayer}, so layers entered in the\n * options or added with `addLayer` can be groups, which can contain further\n * groups, and so on.\n *\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nclass Map extends BaseObject {\n /**\n * @param {MapOptions} [options] Map options.\n */\n constructor(options) {\n super();\n\n options = options || {};\n\n /***\n * @type {MapEventHandler}\n */\n this.on;\n\n /***\n * @type {MapEventHandler}\n */\n this.once;\n\n /***\n * @type {MapEventHandler}\n */\n this.un;\n\n const optionsInternal = createOptionsInternal(options);\n\n /**\n * @private\n * @type {boolean|undefined}\n */\n this.renderComplete_;\n\n /**\n * @private\n * @type {boolean}\n */\n this.loaded_ = true;\n\n /** @private */\n this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this);\n\n /**\n * @type {number}\n * @private\n */\n this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : DEVICE_PIXEL_RATIO;\n\n /**\n * @private\n * @type {ReturnType}\n */\n this.postRenderTimeoutHandle_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.animationDelayKey_;\n\n /**\n * @private\n */\n this.animationDelay_ = this.animationDelay_.bind(this);\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.coordinateToPixelTransform_ = createTransform();\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.pixelToCoordinateTransform_ = createTransform();\n\n /**\n * @private\n * @type {number}\n */\n this.frameIndex_ = 0;\n\n /**\n * @private\n * @type {?FrameState}\n */\n this.frameState_ = null;\n\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n this.previousExtent_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewPropertyListenerKey_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewChangeListenerKey_ = null;\n\n /**\n * @private\n * @type {?Array}\n */\n this.layerGroupPropertyListenerKeys_ = null;\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.viewport_ = document.createElement('div');\n this.viewport_.className =\n 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n this.viewport_.style.position = 'relative';\n this.viewport_.style.overflow = 'hidden';\n this.viewport_.style.width = '100%';\n this.viewport_.style.height = '100%';\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainer_ = document.createElement('div');\n this.overlayContainer_.style.position = 'absolute';\n this.overlayContainer_.style.zIndex = '0';\n this.overlayContainer_.style.width = '100%';\n this.overlayContainer_.style.height = '100%';\n this.overlayContainer_.style.pointerEvents = 'none';\n this.overlayContainer_.className = 'ol-overlaycontainer';\n this.viewport_.appendChild(this.overlayContainer_);\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainerStopEvent_ = document.createElement('div');\n this.overlayContainerStopEvent_.style.position = 'absolute';\n this.overlayContainerStopEvent_.style.zIndex = '0';\n this.overlayContainerStopEvent_.style.width = '100%';\n this.overlayContainerStopEvent_.style.height = '100%';\n this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n this.viewport_.appendChild(this.overlayContainerStopEvent_);\n\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n this.mapBrowserEventHandler_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.moveTolerance_ = options.moveTolerance;\n\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n\n /**\n * @private\n * @type {?Array}\n */\n this.targetChangeHandlerKeys_ = null;\n\n /**\n * @private\n * @type {HTMLElement|null}\n */\n this.targetElement_ = null;\n\n /**\n * @type {ResizeObserver}\n */\n this.resizeObserver_ = new ResizeObserver(() => this.updateSize());\n\n /**\n * @type {Collection}\n * @protected\n */\n this.controls = optionsInternal.controls || defaultControls();\n\n /**\n * @type {Collection}\n * @protected\n */\n this.interactions =\n optionsInternal.interactions ||\n defaultInteractions({\n onFocusOnly: true,\n });\n\n /**\n * @type {Collection}\n * @private\n */\n this.overlays_ = optionsInternal.overlays;\n\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n this.overlayIdIndex_ = {};\n\n /**\n * @type {import(\"./renderer/Map.js\").default|null}\n * @private\n */\n this.renderer_ = null;\n\n /**\n * @private\n * @type {!Array}\n */\n this.postRenderFunctions_ = [];\n\n /**\n * @private\n * @type {TileQueue}\n */\n this.tileQueue_ = new TileQueue(\n this.getTilePriority.bind(this),\n this.handleTileChange_.bind(this)\n );\n\n this.addChangeListener(\n MapProperty.LAYERGROUP,\n this.handleLayerGroupChanged_\n );\n this.addChangeListener(MapProperty.VIEW, this.handleViewChanged_);\n this.addChangeListener(MapProperty.SIZE, this.handleSizeChanged_);\n this.addChangeListener(MapProperty.TARGET, this.handleTargetChanged_);\n\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n this.setProperties(optionsInternal.values);\n\n const map = this;\n if (options.view && !(options.view instanceof View)) {\n options.view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n this.controls.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent\n */\n (event) => {\n event.element.setMap(this);\n }\n );\n\n this.controls.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(null);\n }\n );\n\n this.interactions.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(this);\n }\n );\n\n this.interactions.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(null);\n }\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n this.addOverlayInternal_(event.element);\n }\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n const id = event.element.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }\n );\n\n this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n */\n (control) => {\n control.setMap(this);\n }\n );\n\n this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n */\n (interaction) => {\n interaction.setMap(this);\n }\n );\n\n this.overlays_.forEach(this.addOverlayInternal_.bind(this));\n }\n\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n addControl(control) {\n this.getControls().push(control);\n }\n\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteractions()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n addInteraction(interaction) {\n this.getInteractions().push(interaction);\n }\n\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n addLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer add event.\n * @private\n */\n handleLayerAdd_(event) {\n setLayerMapProperty(event.layer, this);\n }\n\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n addOverlay(overlay) {\n this.getOverlays().push(overlay);\n }\n\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n addOverlayInternal_(overlay) {\n const id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n }\n\n /**\n *\n * Clean up.\n */\n disposeInternal() {\n this.controls.clear();\n this.interactions.clear();\n this.overlays_.clear();\n this.resizeObserver_.disconnect();\n this.setTarget(null);\n super.disposeInternal();\n }\n\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default, import(\"./geom/SimpleGeometry.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature~Feature feature} or\n * {@link module:ol/render/Feature~RenderFeature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template T\n * @api\n */\n forEachFeatureAtPixel(pixel, callback, options) {\n if (!this.frameState_ || !this.renderer_) {\n return;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n options = options !== undefined ? options : {};\n const hitTolerance =\n options.hitTolerance !== undefined ? options.hitTolerance : 0;\n const layerFilter =\n options.layerFilter !== undefined ? options.layerFilter : TRUE;\n const checkWrapped = options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n callback,\n null,\n layerFilter,\n null\n );\n }\n\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n getFeaturesAtPixel(pixel, options) {\n const features = [];\n this.forEachFeatureAtPixel(\n pixel,\n function (feature) {\n features.push(feature);\n },\n options\n );\n return features;\n }\n\n /**\n * Get all layers from all layer groups.\n * @return {Array} Layers.\n * @api\n */\n getAllLayers() {\n const layers = [];\n function addLayersFrom(layerGroup) {\n layerGroup.forEach(function (layer) {\n if (layer instanceof LayerGroup) {\n addLayersFrom(layer.getLayers());\n } else {\n layers.push(layer);\n }\n });\n }\n addLayersFrom(this.getLayers());\n return layers;\n }\n\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through the `layerFilter` option.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n hasFeatureAtPixel(pixel, options) {\n if (!this.frameState_ || !this.renderer_) {\n return false;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n options = options !== undefined ? options : {};\n const layerFilter =\n options.layerFilter !== undefined ? options.layerFilter : TRUE;\n const hitTolerance =\n options.hitTolerance !== undefined ? options.hitTolerance : 0;\n const checkWrapped = options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n layerFilter,\n null\n );\n }\n\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n getEventCoordinate(event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n }\n\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n getEventCoordinateInternal(event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n }\n\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {UIEvent|{clientX: number, clientY: number}} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n getEventPixel(event) {\n const viewport = this.viewport_;\n const viewportPosition = viewport.getBoundingClientRect();\n const viewportSize = this.getSize();\n const scaleX = viewportPosition.width / viewportSize[0];\n const scaleY = viewportPosition.height / viewportSize[1];\n const eventPosition =\n //FIXME Are we really calling this with a TouchEvent anywhere?\n 'changedTouches' in event\n ? /** @type {TouchEvent} */ (event).changedTouches[0]\n : /** @type {MouseEvent} */ (event);\n\n return [\n (eventPosition.clientX - viewportPosition.left) / scaleX,\n (eventPosition.clientY - viewportPosition.top) / scaleY,\n ];\n }\n\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n getTarget() {\n return /** @type {HTMLElement|string|undefined} */ (\n this.get(MapProperty.TARGET)\n );\n }\n\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n getTargetElement() {\n return this.targetElement_;\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n getCoordinateFromPixel(pixel) {\n return toUserCoordinate(\n this.getCoordinateFromPixelInternal(pixel),\n this.getView().getProjection()\n );\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n getCoordinateFromPixelInternal(pixel) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n getControls() {\n return this.controls;\n }\n\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n getOverlays() {\n return this.overlays_;\n }\n\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n getOverlayById(id) {\n const overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n }\n\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n getInteractions() {\n return this.interactions;\n }\n\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n getLayerGroup() {\n return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n }\n\n /**\n * Clear any existing layers and add layers to the map.\n * @param {Array|Collection} layers The layers to be added to the map.\n * @api\n */\n setLayers(layers) {\n const group = this.getLayerGroup();\n if (layers instanceof Collection) {\n group.setLayers(layers);\n return;\n }\n\n const collection = group.getLayers();\n collection.clear();\n collection.extend(layers);\n }\n\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n getLayers() {\n const layers = this.getLayerGroup().getLayers();\n return layers;\n }\n\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n getLoadingOrNotReady() {\n const layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const state = layerStatesArray[i];\n if (!state.visible) {\n continue;\n }\n const renderer = state.layer.getRenderer();\n if (renderer && !renderer.ready) {\n return true;\n }\n const source = state.layer.getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n getPixelFromCoordinate(coordinate) {\n const viewCoordinate = fromUserCoordinate(\n coordinate,\n this.getView().getProjection()\n );\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n getPixelFromCoordinateInternal(coordinate) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n return applyTransform(\n frameState.coordinateToPixelTransform,\n coordinate.slice(0, 2)\n );\n }\n\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default|null} Renderer\n */\n getRenderer() {\n return this.renderer_;\n }\n\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n getSize() {\n return /** @type {import(\"./size.js\").Size|undefined} */ (\n this.get(MapProperty.SIZE)\n );\n }\n\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n getView() {\n return /** @type {View} */ (this.get(MapProperty.VIEW));\n }\n\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n getViewport() {\n return this.viewport_;\n }\n\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n getOverlayContainer() {\n return this.overlayContainer_;\n }\n\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n getOverlayContainerStopEvent() {\n return this.overlayContainerStopEvent_;\n }\n\n /**\n * @return {!Document} The document where the map is displayed.\n */\n getOwnerDocument() {\n const targetElement = this.getTargetElement();\n return targetElement ? targetElement.ownerDocument : document;\n }\n\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n getTilePriority(tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(\n this.frameState_,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n );\n }\n\n /**\n * @param {UIEvent} browserEvent Browser event.\n * @param {string} [type] Type.\n */\n handleBrowserEvent(browserEvent, type) {\n type = type || browserEvent.type;\n const mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n }\n\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n handleMapBrowserEvent(mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n const originalEvent = /** @type {PointerEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const eventType = originalEvent.type;\n if (\n eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN\n ) {\n const doc = this.getOwnerDocument();\n const rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : doc;\n const target = /** @type {Node} */ (originalEvent.target);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === doc ? doc.documentElement : rootNode).contains(target)\n ) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n const interactionsArray = this.getInteractions().getArray().slice();\n for (let i = interactionsArray.length - 1; i >= 0; i--) {\n const interaction = interactionsArray[i];\n if (\n interaction.getMap() !== this ||\n !interaction.getActive() ||\n !this.getTargetElement()\n ) {\n continue;\n }\n const cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont || mapBrowserEvent.propagationStopped) {\n break;\n }\n }\n }\n }\n\n /**\n * @protected\n */\n handlePostRender() {\n const frameState = this.frameState_;\n\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n const tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n let maxTotalLoading = this.maxTilesLoading_;\n let maxNewLoads = maxTotalLoading;\n if (frameState) {\n const hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n const lowOnFrameBudget = Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n\n if (frameState && this.renderer_ && !frameState.animate) {\n if (this.renderComplete_ === true) {\n if (this.hasListener(RenderEventType.RENDERCOMPLETE)) {\n this.renderer_.dispatchRenderEvent(\n RenderEventType.RENDERCOMPLETE,\n frameState\n );\n }\n if (this.loaded_ === false) {\n this.loaded_ = true;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADEND, this, frameState)\n );\n }\n } else if (this.loaded_ === true) {\n this.loaded_ = false;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADSTART, this, frameState)\n );\n }\n }\n\n const postRenderFunctions = this.postRenderFunctions_;\n for (let i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n }\n\n /**\n * @private\n */\n handleSizeChanged_() {\n if (this.getView() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n handleTargetChanged_() {\n if (this.mapBrowserEventHandler_) {\n for (let i = 0, ii = this.targetChangeHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.targetChangeHandlerKeys_[i]);\n }\n this.targetChangeHandlerKeys_ = null;\n this.viewport_.removeEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_\n );\n this.viewport_.removeEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_\n );\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\n\n if (this.targetElement_) {\n this.resizeObserver_.unobserve(this.targetElement_);\n const rootNode = this.targetElement_.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n this.resizeObserver_.unobserve(rootNode.host);\n }\n this.setSize(undefined);\n }\n\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n\n const target = this.getTarget();\n const targetElement =\n typeof target === 'string' ? document.getElementById(target) : target;\n this.targetElement_ = targetElement;\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderTimeoutHandle_ = undefined;\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n } else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = new CompositeMapRenderer(this);\n }\n\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(\n this,\n this.moveTolerance_\n );\n for (const key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(\n MapBrowserEventType[key],\n this.handleMapBrowserEvent.bind(this)\n );\n }\n this.viewport_.addEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_,\n false\n );\n this.viewport_.addEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n\n const keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.targetChangeHandlerKeys_ = [\n listen(\n keyboardEventTarget,\n EventType.KEYDOWN,\n this.handleBrowserEvent,\n this\n ),\n listen(\n keyboardEventTarget,\n EventType.KEYPRESS,\n this.handleBrowserEvent,\n this\n ),\n ];\n const rootNode = targetElement.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n this.resizeObserver_.observe(rootNode.host);\n }\n this.resizeObserver_.observe(targetElement);\n }\n\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n }\n\n /**\n * @private\n */\n handleTileChange_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewPropertyChanged_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewChanged_() {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n const view = this.getView();\n if (view) {\n this.updateViewportSize_();\n\n this.viewPropertyListenerKey_ = listen(\n view,\n ObjectEventType.PROPERTYCHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n this.viewChangeListenerKey_ = listen(\n view,\n EventType.CHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n\n view.resolveConstraints(0);\n }\n this.render();\n }\n\n /**\n * @private\n */\n handleLayerGroupChanged_() {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n const layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.handleLayerAdd_(new GroupEvent('addlayer', layerGroup));\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n listen(layerGroup, 'addlayer', this.handleLayerAdd_, this),\n listen(layerGroup, 'removelayer', this.handleLayerRemove_, this),\n ];\n }\n this.render();\n }\n\n /**\n * @return {boolean} Is rendered.\n */\n isRendered() {\n return !!this.frameState_;\n }\n\n /**\n * @private\n */\n animationDelay_() {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }\n\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n renderSync() {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n }\n\n /**\n * Redraws all text after new fonts have loaded\n */\n redrawText() {\n const layerStates = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStates.length; i < ii; ++i) {\n const layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n }\n\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n render() {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n }\n\n /**\n * This method is meant to be called in a layer's `prerender` listener. It causes all collected\n * declutter items to be decluttered and rendered on the map immediately. This is useful for\n * layers that need to appear entirely above the decluttered items of layers lower in the layer\n * stack.\n * @api\n */\n flushDeclutterItems() {\n const frameState = this.frameState_;\n if (!frameState) {\n return;\n }\n this.renderer_.flushDeclutterItems(frameState);\n }\n\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n removeControl(control) {\n return this.getControls().remove(control);\n }\n\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n removeInteraction(interaction) {\n return this.getInteractions().remove(interaction);\n }\n\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n removeLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer remove event.\n * @private\n */\n handleLayerRemove_(event) {\n removeLayerMapProperty(event.layer);\n }\n\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n removeOverlay(overlay) {\n return this.getOverlays().remove(overlay);\n }\n\n /**\n * @param {number} time Time.\n * @private\n */\n renderFrame_(time) {\n const size = this.getSize();\n const view = this.getView();\n const previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n let frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n const viewHints = view.getHints(\n this.frameState_ ? this.frameState_.viewHints : undefined\n );\n const viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterTree: null,\n extent: getForViewAndSize(\n viewState.center,\n viewState.resolution,\n viewState.rotation,\n size\n ),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {},\n mapId: getUid(this),\n renderTargets: {},\n };\n if (viewState.nextCenter && viewState.nextResolution) {\n const rotation = isNaN(viewState.nextRotation)\n ? viewState.rotation\n : viewState.nextRotation;\n\n frameState.nextExtent = getForViewAndSize(\n viewState.nextCenter,\n viewState.nextResolution,\n rotation,\n size\n );\n }\n }\n\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(\n this.postRenderFunctions_,\n frameState.postRenderFunctions\n );\n\n if (previousFrameState) {\n const moveStart =\n !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equalsExtent(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVESTART, this, previousFrameState)\n );\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n\n const idle =\n this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equalsExtent(frameState.extent, this.previousExtent_);\n\n if (idle) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVEEND, this, frameState)\n );\n clone(frameState.extent, this.previousExtent_);\n }\n }\n\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n\n this.renderComplete_ =\n this.hasListener(MapEventType.LOADSTART) ||\n this.hasListener(MapEventType.LOADEND) ||\n this.hasListener(RenderEventType.RENDERCOMPLETE)\n ? !this.tileQueue_.getTilesLoading() &&\n !this.tileQueue_.getCount() &&\n !this.getLoadingOrNotReady()\n : undefined;\n\n if (!this.postRenderTimeoutHandle_) {\n this.postRenderTimeoutHandle_ = setTimeout(() => {\n this.postRenderTimeoutHandle_ = undefined;\n this.handlePostRender();\n }, 0);\n }\n }\n\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n setLayerGroup(layerGroup) {\n const oldLayerGroup = this.getLayerGroup();\n if (oldLayerGroup) {\n this.handleLayerRemove_(new GroupEvent('removelayer', oldLayerGroup));\n }\n this.set(MapProperty.LAYERGROUP, layerGroup);\n }\n\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n setSize(size) {\n this.set(MapProperty.SIZE, size);\n }\n\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string} [target] The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n setTarget(target) {\n this.set(MapProperty.TARGET, target);\n }\n\n /**\n * Set the view for this map.\n * @param {View|Promise} view The view that controls this map.\n * It is also possible to pass a promise that resolves to options for constructing a view. This\n * alternative allows view properties to be resolved by sources or other components that load\n * view-related metadata.\n * @observable\n * @api\n */\n setView(view) {\n if (!view || view instanceof View) {\n this.set(MapProperty.VIEW, view);\n return;\n }\n this.set(MapProperty.VIEW, new View());\n\n const map = this;\n view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n updateSize() {\n const targetElement = this.getTargetElement();\n\n let size = undefined;\n if (targetElement) {\n const computedStyle = getComputedStyle(targetElement);\n const width =\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']);\n const height =\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']);\n if (!isNaN(width) && !isNaN(height)) {\n size = [width, height];\n if (\n !hasArea(size) &&\n !!(\n targetElement.offsetWidth ||\n targetElement.offsetHeight ||\n targetElement.getClientRects().length\n )\n ) {\n warn(\n \"No map visible because the map container's width or height are 0.\"\n );\n }\n }\n }\n\n const oldSize = this.getSize();\n if (size && (!oldSize || !equals(size, oldSize))) {\n this.setSize(size);\n this.updateViewportSize_();\n }\n }\n\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n updateViewportSize_() {\n const view = this.getView();\n if (view) {\n let size = undefined;\n const computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10),\n ];\n }\n view.setViewportSize(size);\n }\n }\n}\n\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n let keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n typeof options.keyboardEventTarget === 'string'\n ? document.getElementById(options.keyboardEventTarget)\n : options.keyboardEventTarget;\n }\n\n /**\n * @type {Object}\n */\n const values = {};\n\n const layerGroup =\n options.layers &&\n typeof (/** @type {?} */ (options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({\n layers:\n /** @type {Collection|Array} */ (\n options.layers\n ),\n });\n values[MapProperty.LAYERGROUP] = layerGroup;\n\n values[MapProperty.TARGET] = options.target;\n\n values[MapProperty.VIEW] =\n options.view instanceof View ? options.view : new View();\n\n /** @type {Collection} */\n let controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.controls).getArray) === 'function',\n 47\n ); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = options.controls;\n }\n }\n\n /** @type {Collection} */\n let interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.interactions).getArray) ===\n 'function',\n 48\n ); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = options.interactions;\n }\n }\n\n /** @type {Collection} */\n let overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.overlays).getArray) === 'function',\n 49\n ); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n } else {\n overlays = new Collection();\n }\n\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default Map;\n","/**\n * @module ol/interaction/defaults\n */\nimport Collection from '../Collection.js';\nimport DoubleClickZoom from './DoubleClickZoom.js';\nimport DragPan from './DragPan.js';\nimport DragRotate from './DragRotate.js';\nimport DragZoom from './DragZoom.js';\nimport KeyboardPan from './KeyboardPan.js';\nimport KeyboardZoom from './KeyboardZoom.js';\nimport Kinetic from '../Kinetic.js';\nimport MouseWheelZoom from './MouseWheelZoom.js';\nimport PinchRotate from './PinchRotate.js';\nimport PinchZoom from './PinchZoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [altShiftDragRotate=true] Whether Alt-Shift-drag rotate is\n * desired.\n * @property {boolean} [onFocusOnly=false] Interact only when the map has the\n * focus. This affects the `MouseWheelZoom` and `DragPan` interactions and is\n * useful when page scroll is desired for maps that do not have the browser's\n * focus.\n * @property {boolean} [doubleClickZoom=true] Whether double click zoom is\n * desired.\n * @property {boolean} [keyboard=true] Whether keyboard interaction is desired.\n * @property {boolean} [mouseWheelZoom=true] Whether mousewheel zoom is desired.\n * @property {boolean} [shiftDragZoom=true] Whether Shift-drag zoom is desired.\n * @property {boolean} [dragPan=true] Whether drag pan is desired.\n * @property {boolean} [pinchRotate=true] Whether pinch rotate is desired.\n * @property {boolean} [pinchZoom=true] Whether pinch zoom is desired.\n * @property {number} [zoomDelta] Zoom level delta when using keyboard or double click zoom.\n * @property {number} [zoomDuration] Duration of the zoom animation in\n * milliseconds.\n */\n\n/**\n * Set of interactions included in maps by default. Specific interactions can be\n * excluded by setting the appropriate option to false in the constructor\n * options, but the order of the interactions is fixed. If you want to specify\n * a different order for interactions, you will need to create your own\n * {@link module:ol/interaction/Interaction~Interaction} instances and insert\n * them into a {@link module:ol/Collection~Collection} in the order you want\n * before creating your {@link module:ol/Map~Map} instance. Changing the order can\n * be of interest if the event propagation needs to be stopped at a point.\n * The default set of interactions, in sequence, is:\n * * {@link module:ol/interaction/DragRotate~DragRotate}\n * * {@link module:ol/interaction/DoubleClickZoom~DoubleClickZoom}\n * * {@link module:ol/interaction/DragPan~DragPan}\n * * {@link module:ol/interaction/PinchRotate~PinchRotate}\n * * {@link module:ol/interaction/PinchZoom~PinchZoom}\n * * {@link module:ol/interaction/KeyboardPan~KeyboardPan}\n * * {@link module:ol/interaction/KeyboardZoom~KeyboardZoom}\n * * {@link module:ol/interaction/MouseWheelZoom~MouseWheelZoom}\n * * {@link module:ol/interaction/DragZoom~DragZoom}\n *\n * @param {DefaultsOptions} [options] Defaults options.\n * @return {Collection}\n * A collection of interactions to be used with the {@link module:ol/Map~Map}\n * constructor's `interactions` option.\n * @api\n */\nexport function defaults(options) {\n options = options ? options : {};\n\n /** @type {Collection} */\n const interactions = new Collection();\n\n const kinetic = new Kinetic(-0.005, 0.05, 100);\n\n const altShiftDragRotate =\n options.altShiftDragRotate !== undefined\n ? options.altShiftDragRotate\n : true;\n if (altShiftDragRotate) {\n interactions.push(new DragRotate());\n }\n\n const doubleClickZoom =\n options.doubleClickZoom !== undefined ? options.doubleClickZoom : true;\n if (doubleClickZoom) {\n interactions.push(\n new DoubleClickZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration,\n })\n );\n }\n\n const dragPan = options.dragPan !== undefined ? options.dragPan : true;\n if (dragPan) {\n interactions.push(\n new DragPan({\n onFocusOnly: options.onFocusOnly,\n kinetic: kinetic,\n })\n );\n }\n\n const pinchRotate =\n options.pinchRotate !== undefined ? options.pinchRotate : true;\n if (pinchRotate) {\n interactions.push(new PinchRotate());\n }\n\n const pinchZoom = options.pinchZoom !== undefined ? options.pinchZoom : true;\n if (pinchZoom) {\n interactions.push(\n new PinchZoom({\n duration: options.zoomDuration,\n })\n );\n }\n\n const keyboard = options.keyboard !== undefined ? options.keyboard : true;\n if (keyboard) {\n interactions.push(new KeyboardPan());\n interactions.push(\n new KeyboardZoom({\n delta: options.zoomDelta,\n duration: options.zoomDuration,\n })\n );\n }\n\n const mouseWheelZoom =\n options.mouseWheelZoom !== undefined ? options.mouseWheelZoom : true;\n if (mouseWheelZoom) {\n interactions.push(\n new MouseWheelZoom({\n onFocusOnly: options.onFocusOnly,\n duration: options.zoomDuration,\n })\n );\n }\n\n const shiftDragZoom =\n options.shiftDragZoom !== undefined ? options.shiftDragZoom : true;\n if (shiftDragZoom) {\n interactions.push(\n new DragZoom({\n duration: options.zoomDuration,\n })\n );\n }\n\n return interactions;\n}\n","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n\n/***\n * @typedef {'singleclick'|'click'|'dblclick'|'pointerdrag'|'pointermove'} Types\n */\n","/**\n * @module ol/MapEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend',\n\n /**\n * Triggered when loading of additional map data (tiles, images, features) starts.\n * @event module:ol/MapEvent~MapEvent#loadstart\n * @api\n */\n LOADSTART: 'loadstart',\n\n /**\n * Triggered when loading of additional map data has completed.\n * @event module:ol/MapEvent~MapEvent#loadend\n * @api\n */\n LOADEND: 'loadend',\n};\n\n/***\n * @typedef {'postrender'|'movestart'|'moveend'|'loadstart'|'loadend'} Types\n */\n","/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport {getUid} from './util.js';\nimport {isEmpty} from './obj.js';\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nexport class ObjectEvent extends Event {\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n constructor(type, key, oldValue) {\n super(type);\n\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n this.key = key;\n\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n this.oldValue = oldValue;\n }\n}\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ObjectOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable~Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nclass BaseObject extends Observable {\n /**\n * @param {Object} [values] An object with key-value pairs.\n */\n constructor(values) {\n super();\n\n /***\n * @type {ObjectOnSignature}\n */\n this.on;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.once;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.un;\n\n // Call {@link module:ol/util.getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(this);\n\n /**\n * @private\n * @type {Object}\n */\n this.values_ = null;\n\n if (values !== undefined) {\n this.setProperties(values);\n }\n }\n\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n get(key) {\n let value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n }\n\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n getKeys() {\n return (this.values_ && Object.keys(this.values_)) || [];\n }\n\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n getProperties() {\n return (this.values_ && Object.assign({}, this.values_)) || {};\n }\n\n /**\n * @return {boolean} The object has properties.\n */\n hasProperties() {\n return !!this.values_;\n }\n\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n notify(key, oldValue) {\n let eventType;\n eventType = `change:${key}`;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n eventType = ObjectEventType.PROPERTYCHANGE;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n addChangeListener(key, listener) {\n this.addEventListener(`change:${key}`, listener);\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n removeChangeListener(key, listener) {\n this.removeEventListener(`change:${key}`, listener);\n }\n\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n set(key, value, silent) {\n const values = this.values_ || (this.values_ = {});\n if (silent) {\n values[key] = value;\n } else {\n const oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n }\n\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n setProperties(values, silent) {\n for (const key in values) {\n this.set(key, values[key], silent);\n }\n }\n\n /**\n * Apply any properties from another object without triggering events.\n * @param {BaseObject} source The source object.\n * @protected\n */\n applyProperties(source) {\n if (!source.values_) {\n return;\n }\n Object.assign(this.values_ || (this.values_ = {}), source.values_);\n }\n\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean} [silent] Unset without triggering an event.\n * @api\n */\n unset(key, silent) {\n if (this.values_ && key in this.values_) {\n const oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!silent) {\n this.notify(key, oldValue);\n }\n }\n }\n}\n\nexport default BaseObject;\n","/**\n * @module ol/ObjectEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n\n/**\n * @typedef {'propertychange'} Types\n */\n","/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport {listen, listenOnce, unlistenByKey} from './events.js';\n\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n\n/***\n * @template Return\n * @typedef {OnSignature & CombinedOnSignature} ObservableOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nclass Observable extends EventTarget {\n constructor() {\n super();\n\n this.on =\n /** @type {ObservableOnSignature} */ (\n this.onInternal\n );\n\n this.once =\n /** @type {ObservableOnSignature} */ (\n this.onceInternal\n );\n\n this.un = /** @type {ObservableOnSignature} */ (this.unInternal);\n\n /**\n * @private\n * @type {number}\n */\n this.revision_ = 0;\n }\n\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n changed() {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n getRevision() {\n return this.revision_;\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onInternal(type, listener) {\n if (Array.isArray(type)) {\n const len = type.length;\n const keys = new Array(len);\n for (let i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n return listen(this, /** @type {string} */ (type), listener);\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onceInternal(type, listener) {\n let key;\n if (Array.isArray(type)) {\n const len = type.length;\n key = new Array(len);\n for (let i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n } else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n }\n\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @protected\n */\n unInternal(type, listener) {\n const key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n } else if (Array.isArray(type)) {\n for (let i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n } else {\n this.removeEventListener(type, listener);\n }\n }\n}\n\n/**\n * Listen for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.on;\n\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.once;\n\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (let i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n } else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\n\nexport default Observable;\n","/**\n * @module ol/Overlay\n */\nimport BaseObject from './Object.js';\nimport MapEventType from './MapEventType.js';\nimport {CLASS_SELECTABLE} from './css.js';\nimport {containsExtent} from './extent.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {outerHeight, outerWidth, removeChildren, removeNode} from './dom.js';\n\n/**\n * @typedef {'bottom-left' | 'bottom-center' | 'bottom-right' | 'center-left' | 'center-center' | 'center-right' | 'top-left' | 'top-center' | 'top-right'} Positioning\n * The overlay position: `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, or `'top-right'`.\n */\n\n/**\n * @typedef {Object} Options\n * @property {number|string} [id] Set the overlay id. The overlay id can be used\n * with the {@link module:ol/Map~Map#getOverlayById} method.\n * @property {HTMLElement} [element] The overlay element.\n * @property {Array} [offset=[0, 0]] Offsets in pixels used when positioning\n * the overlay. The first element in the\n * array is the horizontal offset. A positive value shifts the overlay right.\n * The second element in the array is the vertical offset. A positive value\n * shifts the overlay down.\n * @property {import(\"./coordinate.js\").Coordinate} [position] The overlay position\n * in map projection.\n * @property {Positioning} [positioning='top-left'] Defines how\n * the overlay is actually positioned with respect to its `position` property.\n * Possible values are `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, and `'top-right'`.\n * @property {boolean} [stopEvent=true] Whether event propagation to the map\n * viewport should be stopped. If `true` the overlay is placed in the same\n * container as that of the controls (CSS class name\n * `ol-overlaycontainer-stopevent`); if `false` it is placed in the container\n * with CSS class name specified by the `className` property.\n * @property {boolean} [insertFirst=true] Whether the overlay is inserted first\n * in the overlay container, or appended. If the overlay is placed in the same\n * container as that of the controls (see the `stopEvent` option) you will\n * probably set `insertFirst` to `true` so the overlay is displayed below the\n * controls.\n * @property {PanIntoViewOptions|boolean} [autoPan=false] Pan the map when calling\n * `setPosition`, so that the overlay is entirely visible in the current viewport.\n * @property {string} [className='ol-overlay-container ol-selectable'] CSS class\n * name.\n */\n\n/**\n * @typedef {Object} PanOptions\n * @property {number} [duration=1000] The duration of the animation in\n * milliseconds.\n * @property {function(number):number} [easing] The easing function to use. Can\n * be one from {@link module:ol/easing} or a custom function.\n * Default is {@link module:ol/easing.inAndOut}.\n */\n\n/**\n * @typedef {Object} PanIntoViewOptions\n * @property {PanOptions} [animation={}] The animation parameters for the pan\n * @property {number} [margin=20] The margin (in pixels) between the\n * overlay and the borders of the map when panning into view.\n */\n\n/**\n * @enum {string}\n * @protected\n */\nconst Property = {\n ELEMENT: 'element',\n MAP: 'map',\n OFFSET: 'offset',\n POSITION: 'position',\n POSITIONING: 'positioning',\n};\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:element'|'change:map'|'change:offset'|'change:position'|\n * 'change:positioning'} OverlayObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} OverlayOnSignature\n */\n\n/**\n * @classdesc\n * An element to be displayed over the map and attached to a single map\n * location. Like {@link module:ol/control/Control~Control}, Overlays are\n * visible widgets. Unlike Controls, they are not in a fixed position on the\n * screen, but are tied to a geographical coordinate, so panning the map will\n * move an Overlay but not a Control.\n *\n * Example:\n *\n * import Overlay from 'ol/Overlay.js';\n *\n * // ...\n * const popup = new Overlay({\n * element: document.getElementById('popup'),\n * });\n * popup.setPosition(coordinate);\n * map.addOverlay(popup);\n *\n * @api\n */\nclass Overlay extends BaseObject {\n /**\n * @param {Options} options Overlay options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {OverlayOnSignature}\n */\n this.on;\n\n /***\n * @type {OverlayOnSignature}\n */\n this.once;\n\n /***\n * @type {OverlayOnSignature}\n */\n this.un;\n\n /**\n * @protected\n * @type {Options}\n */\n this.options = options;\n\n /**\n * @protected\n * @type {number|string|undefined}\n */\n this.id = options.id;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.insertFirst =\n options.insertFirst !== undefined ? options.insertFirst : true;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.stopEvent = options.stopEvent !== undefined ? options.stopEvent : true;\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = document.createElement('div');\n this.element.className =\n options.className !== undefined\n ? options.className\n : 'ol-overlay-container ' + CLASS_SELECTABLE;\n this.element.style.position = 'absolute';\n this.element.style.pointerEvents = 'auto';\n\n /**\n * @protected\n * @type {PanIntoViewOptions|undefined}\n */\n this.autoPan = options.autoPan === true ? {} : options.autoPan || undefined;\n\n /**\n * @protected\n * @type {{transform_: string,\n * visible: boolean}}\n */\n this.rendered = {\n transform_: '',\n visible: true,\n };\n\n /**\n * @protected\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.mapPostrenderListenerKey = null;\n\n this.addChangeListener(Property.ELEMENT, this.handleElementChanged);\n this.addChangeListener(Property.MAP, this.handleMapChanged);\n this.addChangeListener(Property.OFFSET, this.handleOffsetChanged);\n this.addChangeListener(Property.POSITION, this.handlePositionChanged);\n this.addChangeListener(Property.POSITIONING, this.handlePositioningChanged);\n\n if (options.element !== undefined) {\n this.setElement(options.element);\n }\n\n this.setOffset(options.offset !== undefined ? options.offset : [0, 0]);\n\n this.setPositioning(options.positioning || 'top-left');\n\n if (options.position !== undefined) {\n this.setPosition(options.position);\n }\n }\n\n /**\n * Get the DOM element of this overlay.\n * @return {HTMLElement|undefined} The Element containing the overlay.\n * @observable\n * @api\n */\n getElement() {\n return /** @type {HTMLElement|undefined} */ (this.get(Property.ELEMENT));\n }\n\n /**\n * Get the overlay identifier which is set on constructor.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id;\n }\n\n /**\n * Get the map associated with this overlay.\n * @return {import(\"./Map.js\").default|null} The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n getMap() {\n return /** @type {import(\"./Map.js\").default|null} */ (\n this.get(Property.MAP) || null\n );\n }\n\n /**\n * Get the offset of this overlay.\n * @return {Array} The offset.\n * @observable\n * @api\n */\n getOffset() {\n return /** @type {Array} */ (this.get(Property.OFFSET));\n }\n\n /**\n * Get the current position of this overlay.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The spatial point that the overlay is\n * anchored at.\n * @observable\n * @api\n */\n getPosition() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(Property.POSITION)\n );\n }\n\n /**\n * Get the current positioning of this overlay.\n * @return {Positioning} How the overlay is positioned\n * relative to its point on the map.\n * @observable\n * @api\n */\n getPositioning() {\n return /** @type {Positioning} */ (this.get(Property.POSITIONING));\n }\n\n /**\n * @protected\n */\n handleElementChanged() {\n removeChildren(this.element);\n const element = this.getElement();\n if (element) {\n this.element.appendChild(element);\n }\n }\n\n /**\n * @protected\n */\n handleMapChanged() {\n if (this.mapPostrenderListenerKey) {\n removeNode(this.element);\n unlistenByKey(this.mapPostrenderListenerKey);\n this.mapPostrenderListenerKey = null;\n }\n const map = this.getMap();\n if (map) {\n this.mapPostrenderListenerKey = listen(\n map,\n MapEventType.POSTRENDER,\n this.render,\n this\n );\n this.updatePixelPosition();\n const container = this.stopEvent\n ? map.getOverlayContainerStopEvent()\n : map.getOverlayContainer();\n if (this.insertFirst) {\n container.insertBefore(this.element, container.childNodes[0] || null);\n } else {\n container.appendChild(this.element);\n }\n this.performAutoPan();\n }\n }\n\n /**\n * @protected\n */\n render() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handleOffsetChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handlePositionChanged() {\n this.updatePixelPosition();\n this.performAutoPan();\n }\n\n /**\n * @protected\n */\n handlePositioningChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * Set the DOM element to be associated with this overlay.\n * @param {HTMLElement|undefined} element The Element containing the overlay.\n * @observable\n * @api\n */\n setElement(element) {\n this.set(Property.ELEMENT, element);\n }\n\n /**\n * Set the map to be associated with this overlay.\n * @param {import(\"./Map.js\").default|null} map The map that the\n * overlay is part of. Pass `null` to just remove the overlay from the current map.\n * @observable\n * @api\n */\n setMap(map) {\n this.set(Property.MAP, map);\n }\n\n /**\n * Set the offset for this overlay.\n * @param {Array} offset Offset.\n * @observable\n * @api\n */\n setOffset(offset) {\n this.set(Property.OFFSET, offset);\n }\n\n /**\n * Set the position for this overlay. If the position is `undefined` the\n * overlay is hidden.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} position The spatial point that the overlay\n * is anchored at.\n * @observable\n * @api\n */\n setPosition(position) {\n this.set(Property.POSITION, position);\n }\n\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary) using the configured autoPan parameters\n * @protected\n */\n performAutoPan() {\n if (this.autoPan) {\n this.panIntoView(this.autoPan);\n }\n }\n\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary).\n * @param {PanIntoViewOptions} [panIntoViewOptions] Options for the pan action\n * @api\n */\n panIntoView(panIntoViewOptions) {\n const map = this.getMap();\n\n if (!map || !map.getTargetElement() || !this.get(Property.POSITION)) {\n return;\n }\n\n const mapRect = this.getRect(map.getTargetElement(), map.getSize());\n const element = this.getElement();\n const overlayRect = this.getRect(element, [\n outerWidth(element),\n outerHeight(element),\n ]);\n\n panIntoViewOptions = panIntoViewOptions || {};\n\n const myMargin =\n panIntoViewOptions.margin === undefined ? 20 : panIntoViewOptions.margin;\n if (!containsExtent(mapRect, overlayRect)) {\n // the overlay is not completely inside the viewport, so pan the map\n const offsetLeft = overlayRect[0] - mapRect[0];\n const offsetRight = mapRect[2] - overlayRect[2];\n const offsetTop = overlayRect[1] - mapRect[1];\n const offsetBottom = mapRect[3] - overlayRect[3];\n\n const delta = [0, 0];\n if (offsetLeft < 0) {\n // move map to the left\n delta[0] = offsetLeft - myMargin;\n } else if (offsetRight < 0) {\n // move map to the right\n delta[0] = Math.abs(offsetRight) + myMargin;\n }\n if (offsetTop < 0) {\n // move map up\n delta[1] = offsetTop - myMargin;\n } else if (offsetBottom < 0) {\n // move map down\n delta[1] = Math.abs(offsetBottom) + myMargin;\n }\n\n if (delta[0] !== 0 || delta[1] !== 0) {\n const center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n map.getView().getCenterInternal()\n );\n const centerPx = map.getPixelFromCoordinateInternal(center);\n if (!centerPx) {\n return;\n }\n const newCenterPx = [centerPx[0] + delta[0], centerPx[1] + delta[1]];\n\n const panOptions = panIntoViewOptions.animation || {};\n map.getView().animateInternal({\n center: map.getCoordinateFromPixelInternal(newCenterPx),\n duration: panOptions.duration,\n easing: panOptions.easing,\n });\n }\n }\n }\n\n /**\n * Get the extent of an element relative to the document\n * @param {HTMLElement} element The element.\n * @param {import(\"./size.js\").Size} size The size of the element.\n * @return {import(\"./extent.js\").Extent} The extent.\n * @protected\n */\n getRect(element, size) {\n const box = element.getBoundingClientRect();\n const offsetX = box.left + window.pageXOffset;\n const offsetY = box.top + window.pageYOffset;\n return [offsetX, offsetY, offsetX + size[0], offsetY + size[1]];\n }\n\n /**\n * Set the positioning for this overlay.\n * @param {Positioning} positioning how the overlay is\n * positioned relative to its point on the map.\n * @observable\n * @api\n */\n setPositioning(positioning) {\n this.set(Property.POSITIONING, positioning);\n }\n\n /**\n * Modify the visibility of the element.\n * @param {boolean} visible Element visibility.\n * @protected\n */\n setVisible(visible) {\n if (this.rendered.visible !== visible) {\n this.element.style.display = visible ? '' : 'none';\n this.rendered.visible = visible;\n }\n }\n\n /**\n * Update pixel position.\n * @protected\n */\n updatePixelPosition() {\n const map = this.getMap();\n const position = this.getPosition();\n if (!map || !map.isRendered() || !position) {\n this.setVisible(false);\n return;\n }\n\n const pixel = map.getPixelFromCoordinate(position);\n const mapSize = map.getSize();\n this.updateRenderedPosition(pixel, mapSize);\n }\n\n /**\n * @param {import(\"./pixel.js\").Pixel} pixel The pixel location.\n * @param {import(\"./size.js\").Size|undefined} mapSize The map size.\n * @protected\n */\n updateRenderedPosition(pixel, mapSize) {\n const style = this.element.style;\n const offset = this.getOffset();\n\n const positioning = this.getPositioning();\n\n this.setVisible(true);\n\n const x = Math.round(pixel[0] + offset[0]) + 'px';\n const y = Math.round(pixel[1] + offset[1]) + 'px';\n let posX = '0%';\n let posY = '0%';\n if (\n positioning == 'bottom-right' ||\n positioning == 'center-right' ||\n positioning == 'top-right'\n ) {\n posX = '-100%';\n } else if (\n positioning == 'bottom-center' ||\n positioning == 'center-center' ||\n positioning == 'top-center'\n ) {\n posX = '-50%';\n }\n if (\n positioning == 'bottom-left' ||\n positioning == 'bottom-center' ||\n positioning == 'bottom-right'\n ) {\n posY = '-100%';\n } else if (\n positioning == 'center-left' ||\n positioning == 'center-center' ||\n positioning == 'center-right'\n ) {\n posY = '-50%';\n }\n const transform = `translate(${posX}, ${posY}) translate(${x}, ${y})`;\n if (this.rendered.transform_ != transform) {\n this.rendered.transform_ = transform;\n style.transform = transform;\n }\n }\n\n /**\n * returns the options this Overlay has been created with\n * @return {Options} overlay options\n */\n getOptions() {\n return this.options;\n }\n}\n\nexport default Overlay;\n","/**\n * @module ol/Tile\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport TileState from './TileState.js';\nimport {abstract} from './util.js';\nimport {easeIn} from './easing.js';\n\n/**\n * A function that takes an {@link module:ol/Tile~Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n * tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState.js';\n *\n * source.setTileLoadFunction(function(tile, src) {\n * const xhr = new XMLHttpRequest();\n * xhr.responseType = 'blob';\n * xhr.addEventListener('loadend', function (evt) {\n * const data = this.response;\n * if (data !== undefined) {\n * tile.getImage().src = URL.createObjectURL(data);\n * } else {\n * tile.setState(TileState.ERROR);\n * }\n * });\n * xhr.addEventListener('error', function () {\n * tile.setState(TileState.ERROR);\n * });\n * xhr.open('GET', src);\n * xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string): void} LoadFunction\n * @api\n */\n\n/**\n * {@link module:ol/source/Tile~TileSource} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes an {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection~Projection} for the projection as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n * import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling. By default,\n * the nearest neighbor is used when resampling.\n * @api\n */\n\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nclass Tile extends EventTarget {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {Options} [options] Tile options.\n */\n constructor(tileCoord, state, options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n this.tileCoord = tileCoord;\n\n /**\n * @protected\n * @type {import(\"./TileState.js\").default}\n */\n this.state = state;\n\n /**\n * An \"interim\" tile for this tile. The interim tile may be used while this\n * one is loading, for \"smooth\" transitions when changing params/dimensions\n * on the source.\n * @type {Tile}\n */\n this.interimTile = null;\n\n /**\n * A key assigned to the tile. This is used by the tile source to determine\n * if this tile can effectively be used, or if a new tile should be created\n * and this one be used as an interim tile for this new tile.\n * @type {string}\n */\n this.key = '';\n\n /**\n * The duration for the opacity transition.\n * @type {number}\n */\n this.transition_ =\n options.transition === undefined ? 250 : options.transition;\n\n /**\n * Lookup of start times for rendering transitions. If the start time is\n * equal to -1, the transition is complete.\n * @type {Object}\n */\n this.transitionStarts_ = {};\n\n /**\n * @type {boolean}\n */\n this.interpolate = !!options.interpolate;\n }\n\n /**\n * @protected\n */\n changed() {\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Called by the tile cache when the tile is removed from the cache due to expiry\n */\n release() {\n if (this.state === TileState.ERROR) {\n // to remove the `change` listener on this tile in `ol/TileQueue#handleTileChange`\n this.setState(TileState.EMPTY);\n }\n }\n\n /**\n * @return {string} Key.\n */\n getKey() {\n return this.key + '/' + this.tileCoord;\n }\n\n /**\n * Get the interim tile most suitable for rendering using the chain of interim\n * tiles. This corresponds to the most recent tile that has been loaded, if no\n * such tile exists, the original tile is returned.\n * @return {!Tile} Best tile for rendering.\n */\n getInterimTile() {\n if (!this.interimTile) {\n //empty chain\n return this;\n }\n let tile = this.interimTile;\n\n // find the first loaded tile and return it. Since the chain is sorted in\n // decreasing order of creation time, there is no need to search the remainder\n // of the list (all those tiles correspond to older requests and will be\n // cleaned up by refreshInterimChain)\n do {\n if (tile.getState() == TileState.LOADED) {\n // Show tile immediately instead of fading it in after loading, because\n // the interim tile is in place already\n this.transition_ = 0;\n return tile;\n }\n tile = tile.interimTile;\n } while (tile);\n\n // we can not find a better tile\n return this;\n }\n\n /**\n * Goes through the chain of interim tiles and discards sections of the chain\n * that are no longer relevant.\n */\n refreshInterimChain() {\n if (!this.interimTile) {\n return;\n }\n\n let tile = this.interimTile;\n\n /**\n * @type {Tile}\n */\n let prev = this;\n\n do {\n if (tile.getState() == TileState.LOADED) {\n //we have a loaded tile, we can discard the rest of the list\n //we would could abort any LOADING tile request\n //older than this tile (i.e. any LOADING tile following this entry in the chain)\n tile.interimTile = null;\n break;\n } else if (tile.getState() == TileState.LOADING) {\n //keep this LOADING tile any loaded tiles later in the chain are\n //older than this tile, so we're still interested in the request\n prev = tile;\n } else if (tile.getState() == TileState.IDLE) {\n //the head of the list is the most current tile, we don't need\n //to start any other requests for this chain\n prev.interimTile = tile.interimTile;\n } else {\n prev = tile;\n }\n tile = prev.interimTile;\n } while (tile);\n }\n\n /**\n * Get the tile coordinate for this tile.\n * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n * @api\n */\n getTileCoord() {\n return this.tileCoord;\n }\n\n /**\n * @return {import(\"./TileState.js\").default} State.\n */\n getState() {\n return this.state;\n }\n\n /**\n * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n * the tile queue and will block other requests.\n * @param {import(\"./TileState.js\").default} state State.\n * @api\n */\n setState(state) {\n if (this.state !== TileState.ERROR && this.state > state) {\n throw new Error('Tile load sequence violation');\n }\n this.state = state;\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @abstract\n * @api\n */\n load() {\n abstract();\n }\n\n /**\n * Get the alpha value for rendering.\n * @param {string} id An id for the renderer.\n * @param {number} time The render frame time.\n * @return {number} A number between 0 and 1.\n */\n getAlpha(id, time) {\n if (!this.transition_) {\n return 1;\n }\n\n let start = this.transitionStarts_[id];\n if (!start) {\n start = time;\n this.transitionStarts_[id] = start;\n } else if (start === -1) {\n return 1;\n }\n\n const delta = time - start + 1000 / 60; // avoid rendering at 0\n if (delta >= this.transition_) {\n return 1;\n }\n return easeIn(delta / this.transition_);\n }\n\n /**\n * Determine if a tile is in an alpha transition. A tile is considered in\n * transition if tile.getAlpha() has not yet been called or has been called\n * and returned 1.\n * @param {string} id An id for the renderer.\n * @return {boolean} The tile is in transition.\n */\n inTransition(id) {\n if (!this.transition_) {\n return false;\n }\n return this.transitionStarts_[id] !== -1;\n }\n\n /**\n * Mark a transition as complete.\n * @param {string} id An id for the renderer.\n */\n endTransition(id) {\n if (this.transition_) {\n this.transitionStarts_[id] = -1;\n }\n }\n}\n\nexport default Tile;\n","/**\n * @module ol/TileRange\n */\n\n/**\n * A representation of a contiguous block of tiles. A tile range is specified\n * by its min/max tile coordinates and is inclusive of coordinates.\n */\nclass TileRange {\n /**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n */\n constructor(minX, maxX, minY, maxY) {\n /**\n * @type {number}\n */\n this.minX = minX;\n\n /**\n * @type {number}\n */\n this.maxX = maxX;\n\n /**\n * @type {number}\n */\n this.minY = minY;\n\n /**\n * @type {number}\n */\n this.maxY = maxY;\n }\n\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {boolean} Contains tile coordinate.\n */\n contains(tileCoord) {\n return this.containsXY(tileCoord[1], tileCoord[2]);\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Contains.\n */\n containsTileRange(tileRange) {\n return (\n this.minX <= tileRange.minX &&\n tileRange.maxX <= this.maxX &&\n this.minY <= tileRange.minY &&\n tileRange.maxY <= this.maxY\n );\n }\n\n /**\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @return {boolean} Contains coordinate.\n */\n containsXY(x, y) {\n return this.minX <= x && x <= this.maxX && this.minY <= y && y <= this.maxY;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Equals.\n */\n equals(tileRange) {\n return (\n this.minX == tileRange.minX &&\n this.minY == tileRange.minY &&\n this.maxX == tileRange.maxX &&\n this.maxY == tileRange.maxY\n );\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n */\n extend(tileRange) {\n if (tileRange.minX < this.minX) {\n this.minX = tileRange.minX;\n }\n if (tileRange.maxX > this.maxX) {\n this.maxX = tileRange.maxX;\n }\n if (tileRange.minY < this.minY) {\n this.minY = tileRange.minY;\n }\n if (tileRange.maxY > this.maxY) {\n this.maxY = tileRange.maxY;\n }\n }\n\n /**\n * @return {number} Height.\n */\n getHeight() {\n return this.maxY - this.minY + 1;\n }\n\n /**\n * @return {import(\"./size.js\").Size} Size.\n */\n getSize() {\n return [this.getWidth(), this.getHeight()];\n }\n\n /**\n * @return {number} Width.\n */\n getWidth() {\n return this.maxX - this.minX + 1;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Intersects.\n */\n intersects(tileRange) {\n return (\n this.minX <= tileRange.maxX &&\n this.maxX >= tileRange.minX &&\n this.minY <= tileRange.maxY &&\n this.maxY >= tileRange.minY\n );\n }\n}\n\n/**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n * @param {TileRange} [tileRange] TileRange.\n * @return {TileRange} Tile range.\n */\nexport function createOrUpdate(minX, maxX, minY, maxY, tileRange) {\n if (tileRange !== undefined) {\n tileRange.minX = minX;\n tileRange.maxX = maxX;\n tileRange.minY = minY;\n tileRange.maxY = maxY;\n return tileRange;\n }\n return new TileRange(minX, maxX, minY, maxY);\n}\n\nexport default TileRange;\n","/**\n * @module ol/TileState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n};\n","/**\n * @module ol/ViewProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation',\n};\n","/**\n * @module ol/centerconstraint\n */\nimport {clamp} from './math.js';\n\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=, Array=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number|undefined} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @param {Array} [centerShift] Shift between map center and viewport center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, isMoving, centerShift) {\n if (!center) {\n return undefined;\n }\n if (!resolution && !onlyCenter) {\n return center;\n }\n const viewWidth = onlyCenter ? 0 : size[0] * resolution;\n const viewHeight = onlyCenter ? 0 : size[1] * resolution;\n const shiftX = centerShift ? centerShift[0] : 0;\n const shiftY = centerShift ? centerShift[1] : 0;\n let minX = extent[0] + viewWidth / 2 + shiftX;\n let maxX = extent[2] - viewWidth / 2 + shiftX;\n let minY = extent[1] + viewHeight / 2 + shiftY;\n let maxY = extent[3] - viewHeight / 2 + shiftY;\n\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n\n let x = clamp(center[0], minX, maxX);\n let y = clamp(center[1], minY, maxY);\n\n // during an interaction, allow some overscroll\n if (isMoving && smooth && resolution) {\n const ratio = 30 * resolution;\n x +=\n -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y +=\n -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n\n return [x, y];\n }\n );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} [center] Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n","/**\n * @module ol/resolutionconstraint\n */\nimport {clamp} from './math.js';\nimport {getHeight, getWidth} from './extent.js';\nimport {linearFindNearest} from './array.js';\n\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(\n resolution,\n maxExtent,\n viewportSize,\n showFullExtent\n) {\n const xResolution = getWidth(maxExtent) / viewportSize[0];\n const yResolution = getHeight(maxExtent) / viewportSize[1];\n\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n let result = Math.min(resolution, maxResolution);\n const ratio = 50;\n\n result *=\n Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /=\n Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n ratio +\n 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(\n resolutions,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const maxResolution = resolutions[0];\n const minResolution = resolutions[resolutions.length - 1];\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const capped = Math.min(cappedMaxRes, resolution);\n const z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number} [minResolution] Minimum resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(\n power,\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n minResolution = minResolution !== undefined ? minResolution : 0;\n\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const tolerance = 1e-9;\n const minZoomLevel = Math.ceil(\n Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance\n );\n const offset = -direction * (0.5 - tolerance) + 0.5;\n const capped = Math.min(cappedMaxRes, resolution);\n const cappedZoomLevel = Math.floor(\n Math.log(maxResolution / capped) / Math.log(power) + offset\n );\n const zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n const newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n if (!smooth || !isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n return undefined;\n }\n );\n}\n","/**\n * @module ol/View\n */\nimport BaseObject from './Object.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport {DEFAULT_TILE_SIZE} from './tilegrid/common.js';\nimport {\n METERS_PER_UNIT,\n createProjection,\n disableCoordinateWarning,\n fromUserCoordinate,\n fromUserExtent,\n getUserProjection,\n toUserCoordinate,\n toUserExtent,\n} from './proj.js';\nimport {VOID} from './functions.js';\nimport {\n add as addCoordinate,\n equals as coordinatesEqual,\n equals,\n rotate as rotateCoordinate,\n} from './coordinate.js';\nimport {assert} from './asserts.js';\nimport {none as centerNone, createExtent} from './centerconstraint.js';\nimport {clamp, modulo} from './math.js';\nimport {\n createMinMaxResolution,\n createSnapToPower,\n createSnapToResolutions,\n} from './resolutionconstraint.js';\nimport {\n createSnapToN,\n createSnapToZero,\n disable,\n none as rotationNone,\n} from './rotationconstraint.js';\nimport {easeOut, inAndOut} from './easing.js';\nimport {\n getCenter,\n getForViewAndSize,\n getHeight,\n getWidth,\n isEmpty,\n} from './extent.js';\nimport {linearFindNearest} from './array.js';\nimport {fromExtent as polygonFromExtent} from './geom/Polygon.js';\n\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter] Source center.\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter] Target center.\n * @property {number} [sourceResolution] Source resolution.\n * @property {number} [targetResolution] Target resolution.\n * @property {number} [sourceRotation] Source rotation.\n * @property {number} [targetRotation] Target rotation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Anchor.\n * @property {number} start Start.\n * @property {number} duration Duration.\n * @property {boolean} complete Complete.\n * @property {function(number):number} easing Easing.\n * @property {function(boolean):void} callback Callback.\n */\n\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center Center.\n * @property {import(\"./resolutionconstraint.js\").Type} resolution Resolution.\n * @property {import(\"./rotationconstraint.js\").Type} rotation Rotation.\n */\n\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to fit\n * the extent into. Default is the current size of the first map in the DOM that\n * uses this view, or `[100, 100]` if no such map is found.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean):void} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions that determine the\n * zoom levels if specified. The index in the array corresponds to the zoom level,\n * therefore the resolution values have to be in descending order. It also constrains\n * the resolution by the minimum and maximum value. If set the `maxResolution`,\n * `minResolution`, `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from\n * that content. The order of the values is top, right, bottom, left.\n */\n\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center Center (in view projection coordinates).\n * @property {import(\"./proj/Projection.js\").default} projection Projection.\n * @property {number} resolution Resolution.\n * @property {import(\"./coordinate.js\").Coordinate} [nextCenter] The next center during an animation series.\n * @property {number} [nextResolution] The next resolution during an animation series.\n * @property {number} [nextRotation] The next rotation during an animation series.\n * @property {number} rotation Rotation.\n * @property {number} zoom Zoom.\n */\n\n/**\n * Like {@link import(\"./Map.js\").FrameState}, but just `viewState` and `extent`.\n * @typedef {Object} ViewStateLayerStateExtent\n * @property {State} viewState View state.\n * @property {import(\"./extent.js\").Extent} extent Extent (in user projection coordinates).\n * @property {Array} [layerStatesArray] Layer states.\n */\n\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nconst DEFAULT_MIN_ZOOM = 0;\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:center'|'change:resolution'|'change:rotation'} ViewObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ViewOnSignature\n */\n\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Web Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nclass View extends BaseObject {\n /**\n * @param {ViewOptions} [options] View options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {ViewOnSignature}\n */\n this.on;\n\n /***\n * @type {ViewOnSignature}\n */\n this.once;\n\n /***\n * @type {ViewOnSignature}\n */\n this.un;\n\n options = Object.assign({}, options);\n\n /**\n * @private\n * @type {Array}\n */\n this.hints_ = [0, 0];\n\n /**\n * @private\n * @type {Array>}\n */\n this.animations_ = [];\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.updateAnimationKey_;\n\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n this.projection_ = createProjection(options.projection, 'EPSG:3857');\n\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n this.viewportSize_ = [100, 100];\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n this.targetCenter_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetResolution_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetRotation_;\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate}\n */\n this.nextCenter_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.nextResolution_;\n\n /**\n * @private\n * @type {number}\n */\n this.nextRotation_;\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n this.cancelAnchor_ = undefined;\n\n if (options.projection) {\n disableCoordinateWarning();\n }\n if (options.center) {\n options.center = fromUserCoordinate(options.center, this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, this.projection_);\n }\n\n this.applyOptions_(options);\n }\n\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n applyOptions_(options) {\n const properties = Object.assign({}, options);\n for (const key in ViewProperty) {\n delete properties[key];\n }\n this.setProperties(properties, true);\n\n const resolutionConstraintInfo = createResolutionConstraint(options);\n\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n\n /**\n * @type {Array|undefined}\n * @private\n */\n this.padding_ = options.padding;\n\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n\n const centerConstraint = createCenterConstraint(options);\n const resolutionConstraint = resolutionConstraintInfo.constraint;\n const rotationConstraint = createRotationConstraint(options);\n\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint,\n };\n\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(\n options.center !== undefined ? options.center : null\n );\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n } else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n }\n\n /**\n * Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from that\n * content. The order of the values in the array is top, right, bottom, left.\n * The default is no padding, which is equivalent to `[0, 0, 0, 0]`.\n * @type {Array|undefined}\n * @api\n */\n get padding() {\n return this.padding_;\n }\n set padding(padding) {\n let oldPadding = this.padding_;\n this.padding_ = padding;\n const center = this.getCenterInternal();\n if (center) {\n const newPadding = padding || [0, 0, 0, 0];\n oldPadding = oldPadding || [0, 0, 0, 0];\n const resolution = this.getResolution();\n const offsetX =\n (resolution / 2) *\n (newPadding[3] - oldPadding[3] + oldPadding[1] - newPadding[1]);\n const offsetY =\n (resolution / 2) *\n (newPadding[0] - oldPadding[0] + oldPadding[2] - newPadding[2]);\n this.setCenterInternal([center[0] + offsetX, center[1] - offsetY]);\n }\n }\n\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n getUpdatedOptions_(newOptions) {\n const options = this.getProperties();\n\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n } else {\n options.zoom = this.getZoom();\n }\n\n // preserve center\n options.center = this.getCenterInternal();\n\n // preserve rotation\n options.rotation = this.getRotation();\n\n return Object.assign({}, options, newOptions);\n }\n\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n animate(var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n const args = new Array(arguments.length);\n for (let i = 0; i < args.length; ++i) {\n let options = arguments[i];\n if (options.center) {\n options = Object.assign({}, options);\n options.center = fromUserCoordinate(\n options.center,\n this.getProjection()\n );\n }\n if (options.anchor) {\n options = Object.assign({}, options);\n options.anchor = fromUserCoordinate(\n options.anchor,\n this.getProjection()\n );\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n }\n\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n animateInternal(var_args) {\n let animationCount = arguments.length;\n let callback;\n if (\n animationCount > 1 &&\n typeof arguments[animationCount - 1] === 'function'\n ) {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n\n let i = 0;\n for (; i < animationCount && !this.isDef(); ++i) {\n // if view properties are not yet set, shortcut to the final state\n const state = arguments[i];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n } else if (state.resolution) {\n this.setResolution(state.resolution);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n }\n if (i === animationCount) {\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n\n let start = Date.now();\n let center = this.targetCenter_.slice();\n let resolution = this.targetResolution_;\n let rotation = this.targetRotation_;\n const series = [];\n for (; i < animationCount; ++i) {\n const options = /** @type {AnimationOptions} */ (arguments[i]);\n\n const animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback,\n };\n\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n } else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n const delta =\n modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n } else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n }\n\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n getAnimating() {\n return this.hints_[ViewHint.ANIMATING] > 0;\n }\n\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n getInteracting() {\n return this.hints_[ViewHint.INTERACTING] > 0;\n }\n\n /**\n * Cancel any ongoing animations.\n * @api\n */\n cancelAnimations() {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n let anchor;\n for (let i = 0, ii = this.animations_.length; i < ii; ++i) {\n const series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n this.nextCenter_ = null;\n this.nextResolution_ = NaN;\n this.nextRotation_ = NaN;\n }\n\n /**\n * Update all animations.\n */\n updateAnimations_() {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n const now = Date.now();\n let more = false;\n for (let i = this.animations_.length - 1; i >= 0; --i) {\n const series = this.animations_[i];\n let seriesComplete = true;\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const animation = series[j];\n if (animation.complete) {\n continue;\n }\n const elapsed = now - animation.start;\n let fraction =\n animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n } else {\n seriesComplete = false;\n }\n const progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n const x0 = animation.sourceCenter[0];\n const y0 = animation.sourceCenter[1];\n const x1 = animation.targetCenter[0];\n const y1 = animation.targetCenter[1];\n this.nextCenter_ = animation.targetCenter;\n const x = x0 + progress * (x1 - x0);\n const y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n const resolution =\n progress === 1\n ? animation.targetResolution\n : animation.sourceResolution +\n progress *\n (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n const size = this.getViewportSize_(this.getRotation());\n const constrainedResolution = this.constraints_.resolution(\n resolution,\n 0,\n size,\n true\n );\n this.targetCenter_ = this.calculateCenterZoom(\n constrainedResolution,\n animation.anchor\n );\n }\n this.nextResolution_ = animation.targetResolution;\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (\n animation.sourceRotation !== undefined &&\n animation.targetRotation !== undefined\n ) {\n const rotation =\n progress === 1\n ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n Math.PI\n : animation.sourceRotation +\n progress *\n (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n const constrainedRotation = this.constraints_.rotation(\n rotation,\n true\n );\n this.targetCenter_ = this.calculateCenterRotate(\n constrainedRotation,\n animation.anchor\n );\n }\n this.nextRotation_ = animation.targetRotation;\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n this.nextCenter_ = null;\n this.nextResolution_ = NaN;\n this.nextRotation_ = NaN;\n const callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(\n this.updateAnimations_.bind(this)\n );\n }\n }\n\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n calculateCenterRotate(rotation, anchor) {\n let center;\n const currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n }\n\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n calculateCenterZoom(resolution, anchor) {\n let center;\n const currentCenter = this.getCenterInternal();\n const currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n const x =\n anchor[0] -\n (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n const y =\n anchor[1] -\n (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n center = [x, y];\n }\n return center;\n }\n\n /**\n * Returns the current viewport size.\n * @private\n * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n getViewportSize_(rotation) {\n const size = this.viewportSize_;\n if (rotation) {\n const w = size[0];\n const h = size[1];\n return [\n Math.abs(w * Math.cos(rotation)) + Math.abs(h * Math.sin(rotation)),\n Math.abs(w * Math.sin(rotation)) + Math.abs(h * Math.cos(rotation)),\n ];\n }\n return size;\n }\n\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * Note: the constraints are not resolved during an animation to avoid stopping it\n * @param {import(\"./size.js\").Size} [size] Viewport size; if undefined, [100, 100] is assumed\n */\n setViewportSize(size) {\n this.viewportSize_ = Array.isArray(size) ? size.slice() : [100, 100];\n if (!this.getAnimating()) {\n this.resolveConstraints(0);\n }\n }\n\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n getCenter() {\n const center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n }\n\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n getCenterInternal() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(ViewProperty.CENTER)\n );\n }\n\n /**\n * @return {Constraints} Constraints.\n */\n getConstraints() {\n return this.constraints_;\n }\n\n /**\n * @return {boolean} Resolution constraint is set\n */\n getConstrainResolution() {\n return this.get('constrainResolution');\n }\n\n /**\n * @param {Array} [hints] Destination array.\n * @return {Array} Hint.\n */\n getHints(hints) {\n if (hints !== undefined) {\n hints[0] = this.hints_[0];\n hints[1] = this.hints_[1];\n return hints;\n }\n return this.hints_.slice();\n }\n\n /**\n * Calculate the extent for the current view state and the passed size.\n * The size is the pixel dimensions of the box into which the calculated extent\n * should fit. In most cases you want to get the extent of the entire map,\n * that is `map.getSize()`.\n * @param {import(\"./size.js\").Size} [size] Box pixel size. If not provided, the size\n * of the map that uses this view will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n calculateExtent(size) {\n const extent = this.calculateExtentInternal(size);\n return toUserExtent(extent, this.getProjection());\n }\n\n /**\n * @param {import(\"./size.js\").Size} [size] Box pixel size. If not provided,\n * the map's last known viewport size will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n calculateExtentInternal(size) {\n size = size || this.getViewportSizeMinusPadding_();\n const center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (\n this.getCenterInternal()\n );\n assert(center, 1); // The view center is not defined\n const resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 2); // The view resolution is not defined\n const rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 3); // The view rotation is not defined\n\n return getForViewAndSize(center, resolution, rotation, size);\n }\n\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n getMaxResolution() {\n return this.maxResolution_;\n }\n\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n getMinResolution() {\n return this.minResolution_;\n }\n\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (\n this.getZoomForResolution(this.minResolution_)\n );\n }\n\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n setMaxZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({maxZoom: zoom}));\n }\n\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (\n this.getZoomForResolution(this.maxResolution_)\n );\n }\n\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n setMinZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({minZoom: zoom}));\n }\n\n /**\n * Set whether the view should allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n setConstrainResolution(enabled) {\n this.applyOptions_(this.getUpdatedOptions_({constrainResolution: enabled}));\n }\n\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n getProjection() {\n return this.projection_;\n }\n\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n getResolution() {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n }\n\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n getResolutions() {\n return this.resolutions_;\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n getResolutionForExtent(extent, size) {\n return this.getResolutionForExtentInternal(\n fromUserExtent(extent, this.getProjection()),\n size\n );\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n getResolutionForExtentInternal(extent, size) {\n size = size || this.getViewportSizeMinusPadding_();\n const xResolution = getWidth(extent) / size[0];\n const yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n }\n\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number} [power] Power.\n * @return {function(number): number} Resolution for value function.\n */\n getResolutionForValueFunction(power) {\n power = power || 2;\n const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n const resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n }\n );\n }\n\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n getRotation() {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n }\n\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number} [power] Power.\n * @return {function(number): number} Value for resolution function.\n */\n getValueForResolutionFunction(power) {\n const logPower = Math.log(power || 2);\n const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n const value = Math.log(maxResolution / resolution) / logPower / max;\n return value;\n }\n );\n }\n\n /**\n * Returns the size of the viewport minus padding.\n * @private\n * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size reduced by the padding.\n */\n getViewportSizeMinusPadding_(rotation) {\n let size = this.getViewportSize_(rotation);\n const padding = this.padding_;\n if (padding) {\n size = [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ];\n }\n return size;\n }\n\n /**\n * @return {State} View state.\n */\n getState() {\n const projection = this.getProjection();\n const resolution = this.getResolution();\n const rotation = this.getRotation();\n let center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n this.getCenterInternal()\n );\n const padding = this.padding_;\n if (padding) {\n const reducedSize = this.getViewportSizeMinusPadding_();\n center = calculateCenterOn(\n center,\n this.getViewportSize_(),\n [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n resolution,\n rotation\n );\n }\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n nextCenter: this.nextCenter_,\n nextResolution: this.nextResolution_,\n nextRotation: this.nextRotation_,\n rotation: rotation,\n zoom: this.getZoom(),\n };\n }\n\n /**\n * @return {ViewStateLayerStateExtent} Like `FrameState`, but just `viewState` and `extent`.\n */\n getViewStateAndExtent() {\n return {\n viewState: this.getState(),\n extent: this.calculateExtent(),\n };\n }\n\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n getZoom() {\n let zoom;\n const resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n }\n\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n getZoomForResolution(resolution) {\n let offset = this.minZoom_ || 0;\n let max, zoomFactor;\n if (this.resolutions_) {\n const nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n } else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n } else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n }\n\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n getResolutionForZoom(zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n const baseLevel = clamp(\n Math.floor(zoom),\n 0,\n this.resolutions_.length - 2\n );\n const zoomFactor =\n this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return (\n this.resolutions_[baseLevel] /\n Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1))\n );\n }\n return (\n this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_)\n );\n }\n\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions} [options] Options.\n * @api\n */\n fit(geometryOrExtent, options) {\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n let geometry;\n assert(\n Array.isArray(geometryOrExtent) ||\n typeof (/** @type {?} */ (geometryOrExtent).getSimplifiedGeometry) ===\n 'function',\n 24\n ); // Invalid extent or geometry provided as `geometry`\n if (Array.isArray(geometryOrExtent)) {\n assert(!isEmpty(geometryOrExtent), 25); // Cannot fit empty extent provided as `geometry`\n const extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n } else if (geometryOrExtent.getType() === 'Circle') {\n const extent = fromUserExtent(\n geometryOrExtent.getExtent(),\n this.getProjection()\n );\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n } else {\n const userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n geometryOrExtent\n .clone()\n .transform(userProjection, this.getProjection())\n );\n } else {\n geometry = geometryOrExtent;\n }\n }\n\n this.fitInternal(geometry, options);\n }\n\n /**\n * Calculate rotated extent\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @return {import(\"./extent\").Extent} The rotated extent for the geometry.\n */\n rotatedExtentForGeometry(geometry) {\n const rotation = this.getRotation();\n const cosAngle = Math.cos(rotation);\n const sinAngle = Math.sin(-rotation);\n const coords = geometry.getFlatCoordinates();\n const stride = geometry.getStride();\n let minRotX = +Infinity;\n let minRotY = +Infinity;\n let maxRotX = -Infinity;\n let maxRotY = -Infinity;\n for (let i = 0, ii = coords.length; i < ii; i += stride) {\n const rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n const rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n return [minRotX, minRotY, maxRotX, maxRotY];\n }\n\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions} [options] Options.\n */\n fitInternal(geometry, options) {\n options = options || {};\n let size = options.size;\n if (!size) {\n size = this.getViewportSizeMinusPadding_();\n }\n const padding =\n options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n const nearest = options.nearest !== undefined ? options.nearest : false;\n let minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n } else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n } else {\n minResolution = 0;\n }\n\n const rotatedExtent = this.rotatedExtentForGeometry(geometry);\n\n // calculate resolution\n let resolution = this.getResolutionForExtentInternal(rotatedExtent, [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ]);\n resolution = isNaN(resolution)\n ? minResolution\n : Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n\n // calculate center\n const rotation = this.getRotation();\n const sinAngle = Math.sin(rotation);\n const cosAngle = Math.cos(rotation);\n const centerRot = getCenter(rotatedExtent);\n centerRot[0] += ((padding[1] - padding[3]) / 2) * resolution;\n centerRot[1] += ((padding[0] - padding[2]) / 2) * resolution;\n const centerX = centerRot[0] * cosAngle - centerRot[1] * sinAngle;\n const centerY = centerRot[1] * cosAngle + centerRot[0] * sinAngle;\n const center = this.getConstrainedCenter([centerX, centerY], resolution);\n const callback = options.callback ? options.callback : VOID;\n\n if (options.duration !== undefined) {\n this.animateInternal(\n {\n resolution: resolution,\n center: center,\n duration: options.duration,\n easing: options.easing,\n },\n callback\n );\n } else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n }\n\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n centerOn(coordinate, size, position) {\n this.centerOnInternal(\n fromUserCoordinate(coordinate, this.getProjection()),\n size,\n position\n );\n }\n\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n centerOnInternal(coordinate, size, position) {\n this.setCenterInternal(\n calculateCenterOn(\n coordinate,\n size,\n position,\n this.getResolution(),\n this.getRotation()\n )\n );\n }\n\n /**\n * Calculates the shift between map and viewport center.\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array|undefined} Center shift.\n */\n calculateCenterShift(center, resolution, rotation, size) {\n let centerShift;\n const padding = this.padding_;\n if (padding && center) {\n const reducedSize = this.getViewportSizeMinusPadding_(-rotation);\n const shiftedCenter = calculateCenterOn(\n center,\n size,\n [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n resolution,\n rotation\n );\n centerShift = [\n center[0] - shiftedCenter[0],\n center[1] - shiftedCenter[1],\n ];\n }\n return centerShift;\n }\n\n /**\n * @return {boolean} Is defined.\n */\n isDef() {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n }\n\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n adjustCenter(deltaCoordinates) {\n const center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n }\n\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n adjustCenterInternal(deltaCoordinates) {\n const center = this.targetCenter_;\n this.setCenterInternal([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n }\n\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n adjustResolution(ratio, anchor) {\n anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n }\n\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n adjustResolutionInternal(ratio, anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const size = this.getViewportSize_(this.getRotation());\n const newResolution = this.constraints_.resolution(\n this.targetResolution_ * ratio,\n 0,\n size,\n isMoving\n );\n\n if (anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, anchor);\n }\n\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n }\n\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n adjustZoom(delta, anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), anchor);\n }\n\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n * @api\n */\n adjustRotation(delta, anchor) {\n if (anchor) {\n anchor = fromUserCoordinate(anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, anchor);\n }\n\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n */\n adjustRotationInternal(delta, anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const newRotation = this.constraints_.rotation(\n this.targetRotation_ + delta,\n isMoving\n );\n if (anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n }\n\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n setCenter(center) {\n this.setCenterInternal(\n center ? fromUserCoordinate(center, this.getProjection()) : center\n );\n }\n\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n setCenterInternal(center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n }\n\n /**\n * @param {import(\"./ViewHint.js\").default} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n setHint(hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n }\n\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n setResolution(resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n }\n\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n setRotation(rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n }\n\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n setZoom(zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n }\n\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean} [doNotCancelAnims] Do not cancel animations.\n * @param {boolean} [forceMoving] Apply constraints as if the view is moving.\n * @private\n */\n applyTargetState_(doNotCancelAnims, forceMoving) {\n const isMoving =\n this.getAnimating() || this.getInteracting() || forceMoving;\n\n // compute rotation\n const newRotation = this.constraints_.rotation(\n this.targetRotation_,\n isMoving\n );\n const size = this.getViewportSize_(newRotation);\n const newResolution = this.constraints_.resolution(\n this.targetResolution_,\n 0,\n size,\n isMoving\n );\n const newCenter = this.constraints_.center(\n this.targetCenter_,\n newResolution,\n size,\n isMoving,\n this.calculateCenterShift(\n this.targetCenter_,\n newResolution,\n newRotation,\n size\n )\n );\n\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n this.set('zoom', this.getZoom(), true);\n }\n if (\n !newCenter ||\n !this.get(ViewProperty.CENTER) ||\n !equals(this.get(ViewProperty.CENTER), newCenter)\n ) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n\n if (this.getAnimating() && !doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n }\n\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number} [duration] The animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n resolveConstraints(duration, resolutionDirection, anchor) {\n duration = duration !== undefined ? duration : 200;\n const direction = resolutionDirection || 0;\n\n const newRotation = this.constraints_.rotation(this.targetRotation_);\n const size = this.getViewportSize_(newRotation);\n const newResolution = this.constraints_.resolution(\n this.targetResolution_,\n direction,\n size\n );\n const newCenter = this.constraints_.center(\n this.targetCenter_,\n newResolution,\n size,\n false,\n this.calculateCenterShift(\n this.targetCenter_,\n newResolution,\n newRotation,\n size\n )\n );\n\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n\n anchor = anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n\n if (\n this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)\n ) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor,\n });\n }\n }\n\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n beginInteraction() {\n this.resolveConstraints(0);\n\n this.setHint(ViewHint.INTERACTING, 1);\n }\n\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number} [duration] Animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n endInteraction(duration, resolutionDirection, anchor) {\n anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n this.endInteractionInternal(duration, resolutionDirection, anchor);\n }\n\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number} [duration] Animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n endInteractionInternal(duration, resolutionDirection, anchor) {\n if (!this.getInteracting()) {\n return;\n }\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(duration, resolutionDirection, anchor);\n }\n\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number} [targetResolution] Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n getConstrainedCenter(targetCenter, targetResolution) {\n const size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(\n targetCenter,\n targetResolution || this.getResolution(),\n size\n );\n }\n\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number} [direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n getConstrainedZoom(targetZoom, direction) {\n const targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(\n this.getConstrainedResolution(targetRes, direction)\n );\n }\n\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number} [direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n getConstrainedResolution(targetResolution, direction) {\n direction = direction || 0;\n const size = this.getViewportSize_(this.getRotation());\n\n return this.constraints_.resolution(targetResolution, direction, size);\n }\n}\n\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n const smooth =\n options.smoothExtentConstraint !== undefined\n ? options.smoothExtentConstraint\n : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n const extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n\n return centerNone;\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n let resolutionConstraint;\n let maxResolution;\n let minResolution;\n\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n const defaultMaxZoom = 28;\n const defaultZoomFactor = 2;\n\n let minZoom =\n options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n\n let maxZoom =\n options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n\n const zoomFactor =\n options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n\n const multiWorld =\n options.multiWorld !== undefined ? options.multiWorld : false;\n\n const smooth =\n options.smoothResolutionConstraint !== undefined\n ? options.smoothResolutionConstraint\n : true;\n\n const showFullExtent =\n options.showFullExtent !== undefined ? options.showFullExtent : false;\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n const projExtent = projection.getExtent();\n let constrainOnlyCenter = options.constrainOnlyCenter;\n let extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n\n if (options.resolutions !== undefined) {\n const resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution =\n resolutions[maxZoom] !== undefined\n ? resolutions[maxZoom]\n : resolutions[resolutions.length - 1];\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(\n resolutions,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n } else {\n resolutionConstraint = createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n }\n } else {\n // calculate the default min and max resolution\n const size = !projExtent\n ? // use an extent that can fit the whole world if need be\n (360 * METERS_PER_UNIT.degrees) / projection.getMetersPerUnit()\n : Math.max(getWidth(projExtent), getHeight(projExtent));\n\n const defaultMaxResolution =\n size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n\n const defaultMinResolution =\n defaultMaxResolution /\n Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n } else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n } else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n } else {\n minResolution = defaultMinResolution;\n }\n }\n\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom =\n minZoom +\n Math.floor(\n Math.log(maxResolution / minResolution) / Math.log(zoomFactor)\n );\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(\n zoomFactor,\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n } else {\n resolutionConstraint = createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n }\n }\n return {\n constraint: resolutionConstraint,\n maxResolution: maxResolution,\n minResolution: minResolution,\n minZoom: minZoom,\n zoomFactor: zoomFactor,\n };\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n const enableRotation =\n options.enableRotation !== undefined ? options.enableRotation : true;\n if (enableRotation) {\n const constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n if (constrainRotation === false) {\n return rotationNone;\n }\n if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n return rotationNone;\n }\n return disable;\n}\n\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @return {import(\"./coordinate.js\").Coordinate} Shifted center.\n */\nfunction calculateCenterOn(coordinate, size, position, resolution, rotation) {\n // calculate rotated position\n const cosAngle = Math.cos(-rotation);\n let sinAngle = Math.sin(-rotation);\n let rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n let rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n const centerX = rotX * cosAngle - rotY * sinAngle;\n const centerY = rotY * cosAngle + rotX * sinAngle;\n\n return [centerX, centerY];\n}\n\nexport default View;\n","/**\n * @module ol/ViewHint\n */\n\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1,\n};\n","/**\n * @module ol/array\n */\n\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function} [comparator] Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, comparator) {\n let mid, cmp;\n comparator = comparator || ascending;\n let low = 0;\n let high = haystack.length;\n let found = false;\n\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n } else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n\n /* Key not found. */\n return found ? low : ~low;\n}\n\n/**\n * Compare function sorting arrays in ascending order. Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function ascending(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\n/**\n * Compare function sorting arrays in descending order. Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is greater than, equal to, or less than the second.\n */\nexport function descending(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\n/**\n * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function\n * of this type to determine which nearest resolution to use.\n *\n * This function takes a `{number}` representing a value between two array entries,\n * a `{number}` representing the value of the nearest higher entry and\n * a `{number}` representing the value of the nearest lower entry\n * as arguments and returns a `{number}`. If a negative number or zero is returned\n * the lower value will be used, if a positive number is returned the higher value\n * will be used.\n * @typedef {function(number, number, number): number} NearestDirectionFunction\n * @api\n */\n\n/**\n * @param {Array} arr Array in descending order.\n * @param {number} target Target.\n * @param {number|NearestDirectionFunction} direction\n * 0 means return the nearest,\n * > 0 means return the largest nearest,\n * < 0 means return the smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n if (arr[0] <= target) {\n return 0;\n }\n\n const n = arr.length;\n if (target <= arr[n - 1]) {\n return n - 1;\n }\n\n if (typeof direction === 'function') {\n for (let i = 1; i < n; ++i) {\n const candidate = arr[i];\n if (candidate === target) {\n return i;\n }\n if (candidate < target) {\n if (direction(target, arr[i - 1], candidate) > 0) {\n return i - 1;\n }\n return i;\n }\n }\n return n - 1;\n }\n\n if (direction > 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n return n - 1;\n }\n\n if (direction < 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n return n - 1;\n }\n\n for (let i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n return i;\n }\n }\n return n - 1;\n}\n\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n const tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n const extension = Array.isArray(data) ? data : [data];\n const length = extension.length;\n for (let i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n const i = arr.indexOf(obj);\n const found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n const len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (let i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Sort the passed array such that the relative order of equal elements is preserved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n const length = arr.length;\n const tmp = Array(arr.length);\n let i;\n for (i = 0; i < length; i++) {\n tmp[i] = {index: i, value: arr[i]};\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function} [func] Comparison function.\n * @param {boolean} [strict] Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, func, strict) {\n const compare = func || ascending;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n const res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (strict && res === 0));\n });\n}\n","/**\n * @module ol/asserts\n */\nimport AssertionError from './AssertionError.js';\n\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {number} errorCode Error code.\n */\nexport function assert(assertion, errorCode) {\n if (!assertion) {\n throw new AssertionError(errorCode);\n }\n}\n","/**\n * @module ol/color\n */\nimport {assert} from './asserts.js';\nimport {clamp} from './math.js';\n\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n\n/**\n * This RegExp matches # followed by 3, 4, 6, or 8 hex digits.\n * @const\n * @type {RegExp}\n * @private\n */\nconst HEX_COLOR_RE_ = /^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i;\n\n/**\n * Regular expression for matching potential named color style strings.\n * @const\n * @type {RegExp}\n * @private\n */\nconst NAMED_COLOR_RE_ = /^([a-z]*)$|^hsla?\\(.*\\)$/i;\n\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n return toString(color);\n}\n\n/**\n * Return named color as an rgba string.\n * @param {string} color Named color.\n * @return {string} Rgb string.\n */\nfunction fromNamed(color) {\n const el = document.createElement('div');\n el.style.color = color;\n if (el.style.color !== '') {\n document.body.appendChild(el);\n const rgb = getComputedStyle(el).color;\n document.body.removeChild(el);\n return rgb;\n }\n return '';\n}\n\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport const fromString = (function () {\n // We maintain a small cache of parsed strings. To provide cheap LRU-like\n // semantics, whenever the cache grows too large we simply delete an\n // arbitrary 25% of the entries.\n\n /**\n * @const\n * @type {number}\n */\n const MAX_CACHE_SIZE = 1024;\n\n /**\n * @type {Object}\n */\n const cache = {};\n\n /**\n * @type {number}\n */\n let cacheSize = 0;\n\n return (\n /**\n * @param {string} s String.\n * @return {Color} Color.\n */\n function (s) {\n let color;\n if (cache.hasOwnProperty(s)) {\n color = cache[s];\n } else {\n if (cacheSize >= MAX_CACHE_SIZE) {\n let i = 0;\n for (const key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n color = fromStringInternal_(s);\n cache[s] = color;\n ++cacheSize;\n }\n return color;\n }\n );\n})();\n\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n return fromString(color);\n}\n\n/**\n * @param {string} s String.\n * @private\n * @return {Color} Color.\n */\nfunction fromStringInternal_(s) {\n let r, g, b, a, color;\n\n if (NAMED_COLOR_RE_.exec(s)) {\n s = fromNamed(s);\n }\n\n if (HEX_COLOR_RE_.exec(s)) {\n // hex\n const n = s.length - 1; // number of hex digits\n let d; // number of digits per channel\n if (n <= 4) {\n d = 1;\n } else {\n d = 2;\n }\n const hasAlpha = n === 4 || n === 8;\n r = parseInt(s.substr(1 + 0 * d, d), 16);\n g = parseInt(s.substr(1 + 1 * d, d), 16);\n b = parseInt(s.substr(1 + 2 * d, d), 16);\n if (hasAlpha) {\n a = parseInt(s.substr(1 + 3 * d, d), 16);\n } else {\n a = 255;\n }\n if (d == 1) {\n r = (r << 4) + r;\n g = (g << 4) + g;\n b = (b << 4) + b;\n if (hasAlpha) {\n a = (a << 4) + a;\n }\n }\n color = [r, g, b, a / 255];\n } else if (s.startsWith('rgba(')) {\n // rgba()\n color = s.slice(5, -1).split(',').map(Number);\n normalize(color);\n } else if (s.startsWith('rgb(')) {\n // rgb()\n color = s.slice(4, -1).split(',').map(Number);\n color.push(1);\n normalize(color);\n } else {\n assert(false, 14); // Invalid color\n }\n return color;\n}\n\n/**\n * TODO this function is only used in the test, we probably shouldn't export it\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n let r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n let g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n let b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n const a = color[3] === undefined ? 1 : Math.round(color[3] * 100) / 100;\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n if (NAMED_COLOR_RE_.test(s)) {\n s = fromNamed(s);\n }\n return HEX_COLOR_RE_.test(s) || s.startsWith('rgba(') || s.startsWith('rgb(');\n}\n","/**\n * @module ol/colorlike\n */\nimport {toString} from './color.js';\n\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, pattern, or gradient. The origin for patterns and\n * gradients as fill style is an increment of 512 css pixels from map coordinate\n * `[0, 0]`. For seamless repeat patterns, width and height of the pattern image\n * must be a factor of two (2, 4, 8, ..., 512).\n *\n * @typedef {string|CanvasPattern|CanvasGradient} ColorLike\n * @api\n */\n\n/**\n * @param {import(\"./color.js\").Color|ColorLike} color Color.\n * @return {ColorLike} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n if (Array.isArray(color)) {\n return toString(color);\n }\n return color;\n}\n","/**\n * @module ol/console\n */\n\n/**\n * @typedef {'info'|'warn'|'error'|'none'} Level\n */\n\n/**\n * @type {Object}\n */\nconst levels = {\n info: 1,\n warn: 2,\n error: 3,\n none: 4,\n};\n\n/**\n * @type {number}\n */\nlet level = levels.info;\n\n/**\n * Set the logging level. By default, the level is set to 'info' and all\n * messages will be logged. Set to 'warn' to only display warnings and errors.\n * Set to 'error' to only display errors. Set to 'none' to silence all messages.\n *\n * @param {Level} l The new level.\n */\nexport function setLevel(l) {\n level = levels[l];\n}\n\nexport function log(...args) {\n if (level > levels.info) {\n return;\n }\n console.log(...args); // eslint-disable-line no-console\n}\n\nexport function warn(...args) {\n if (level > levels.warn) {\n return;\n }\n console.warn(...args); // eslint-disable-line no-console\n}\n\nexport function error(...args) {\n if (level > levels.error) {\n return;\n }\n console.error(...args); // eslint-disable-line no-console\n}\n","/**\n * @module ol/control/Control\n */\nimport BaseObject from '../Object.js';\nimport MapEventType from '../MapEventType.js';\nimport {VOID} from '../functions.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {removeNode} from '../dom.js';\n\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * const myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nclass Control extends BaseObject {\n /**\n * @param {Options} options Control options.\n */\n constructor(options) {\n super();\n\n const element = options.element;\n if (element && !options.target && !element.style.pointerEvents) {\n element.style.pointerEvents = 'auto';\n }\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = element ? element : null;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.target_ = null;\n\n /**\n * @private\n * @type {import(\"../Map.js\").default|null}\n */\n this.map_ = null;\n\n /**\n * @protected\n * @type {!Array}\n */\n this.listenerKeys = [];\n\n if (options.render) {\n this.render = options.render;\n }\n\n if (options.target) {\n this.setTarget(options.target);\n }\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n removeNode(this.element);\n super.disposeInternal();\n }\n\n /**\n * Get the map associated with this control.\n * @return {import(\"../Map.js\").default|null} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (let i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (map) {\n const target = this.target_\n ? this.target_\n : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(\n listen(map, MapEventType.POSTRENDER, this.render, this)\n );\n }\n map.render();\n }\n }\n\n /**\n * Renders the control.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n render(mapEvent) {}\n\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n setTarget(target) {\n this.target_ =\n typeof target === 'string' ? document.getElementById(target) : target;\n }\n}\n\nexport default Control;\n","/**\n * @module ol/control/Attribution\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {equals} from '../array.js';\nimport {removeChildren, replaceNode} from '../dom.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string|HTMLElement} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [expandClassName=className + '-expand'] CSS class name for the\n * collapsed attributions button.\n * @property {string|HTMLElement} [collapseLabel='›'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [collapseClassName=className + '-collapse'] CSS class name for the\n * expanded attributions button.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nclass Attribution extends Control {\n /**\n * @param {Options} [options] Attribution options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.ulElement_ = document.createElement('ul');\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.userCollapsed_ = this.collapsed_;\n\n /**\n * @private\n * @type {boolean}\n */\n this.overrideCollapsible_ = options.collapsible !== undefined;\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n\n if (!this.collapsible_) {\n this.collapsed_ = false;\n }\n\n const className =\n options.className !== undefined ? options.className : 'ol-attribution';\n\n const tipLabel =\n options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n\n const expandClassName =\n options.expandClassName !== undefined\n ? options.expandClassName\n : className + '-expand';\n\n const collapseLabel =\n options.collapseLabel !== undefined ? options.collapseLabel : '\\u203A';\n\n const collapseClassName =\n options.collapseClassName !== undefined\n ? options.collapseClassName\n : className + '-collapse';\n\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.collapseLabel_ = document.createElement('span');\n this.collapseLabel_.textContent = collapseLabel;\n this.collapseLabel_.className = collapseClassName;\n } else {\n this.collapseLabel_ = collapseLabel;\n }\n\n const label = options.label !== undefined ? options.label : 'i';\n\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.label_ = document.createElement('span');\n this.label_.textContent = label;\n this.label_.className = expandClassName;\n } else {\n this.label_ = label;\n }\n\n const activeLabel =\n this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.toggleButton_ = document.createElement('button');\n this.toggleButton_.setAttribute('type', 'button');\n this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n this.toggleButton_.title = tipLabel;\n this.toggleButton_.appendChild(activeLabel);\n\n this.toggleButton_.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n const cssClasses =\n className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (this.collapsible_ ? '' : ' ol-uncollapsible');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.toggleButton_);\n element.appendChild(this.ulElement_);\n\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n this.renderedAttributions_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n }\n\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n collectSourceAttributions_(frameState) {\n const visibleAttributions = Array.from(\n new Set(\n this.getMap()\n .getAllLayers()\n .flatMap((layer) => layer.getAttributions(frameState))\n )\n );\n\n const collapsible = !this.getMap()\n .getAllLayers()\n .some(\n (layer) =>\n layer.getSource() &&\n layer.getSource().getAttributionsCollapsible() === false\n );\n if (!this.overrideCollapsible_) {\n this.setCollapsible(collapsible);\n }\n return visibleAttributions;\n }\n\n /**\n * @private\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n updateElement_(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const attributions = this.collectSourceAttributions_(frameState);\n\n const visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n\n removeChildren(this.ulElement_);\n\n // append the attributions\n for (let i = 0, ii = attributions.length; i < ii; ++i) {\n const element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n\n this.renderedAttributions_ = attributions;\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleToggle_();\n this.userCollapsed_ = this.collapsed_;\n }\n\n /**\n * @private\n */\n handleToggle_() {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n } else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n }\n\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n getCollapsible() {\n return this.collapsible_;\n }\n\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n setCollapsible(collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (this.userCollapsed_) {\n this.handleToggle_();\n }\n }\n\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n setCollapsed(collapsed) {\n this.userCollapsed_ = collapsed;\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n }\n\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n getCollapsed() {\n return this.collapsed_;\n }\n\n /**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n }\n}\n\nexport default Attribution;\n","/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {string} [compassClassName='ol-compass'] CSS class name for the compass.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nclass Rotate extends Control {\n /**\n * @param {Options} [options] Rotate options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n const className =\n options.className !== undefined ? options.className : 'ol-rotate';\n\n const label = options.label !== undefined ? options.label : '\\u21E7';\n\n const compassClassName =\n options.compassClassName !== undefined\n ? options.compassClassName\n : 'ol-compass';\n\n /**\n * @type {HTMLElement}\n * @private\n */\n this.label_ = null;\n\n if (typeof label === 'string') {\n this.label_ = document.createElement('span');\n this.label_.className = compassClassName;\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n this.label_.classList.add(compassClassName);\n }\n\n const tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n\n const button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(this.label_);\n\n button.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n const cssClasses =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(button);\n\n this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n /**\n * @type {boolean}\n * @private\n */\n this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.rotation_ = undefined;\n\n if (this.autoHide_) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n } else {\n this.resetNorth_();\n }\n }\n\n /**\n * @private\n */\n resetNorth_() {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut,\n });\n } else {\n view.setRotation(0);\n }\n }\n }\n\n /**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n const rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n const transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n const contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n } else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n }\n}\n\nexport default Rotate;\n","/**\n * @module ol/control/Zoom\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string} [zoomInClassName=className + '-in'] CSS class name for the zoom-in button.\n * @property {string} [zoomOutClassName=className + '-out'] CSS class name for the zoom-out button.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='–'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nclass Zoom extends Control {\n /**\n * @param {Options} [options] Zoom options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target,\n });\n\n const className =\n options.className !== undefined ? options.className : 'ol-zoom';\n\n const delta = options.delta !== undefined ? options.delta : 1;\n\n const zoomInClassName =\n options.zoomInClassName !== undefined\n ? options.zoomInClassName\n : className + '-in';\n\n const zoomOutClassName =\n options.zoomOutClassName !== undefined\n ? options.zoomOutClassName\n : className + '-out';\n\n const zoomInLabel =\n options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n const zoomOutLabel =\n options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2013';\n\n const zoomInTipLabel =\n options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n const zoomOutTipLabel =\n options.zoomOutTipLabel !== undefined\n ? options.zoomOutTipLabel\n : 'Zoom out';\n\n const inElement = document.createElement('button');\n inElement.className = zoomInClassName;\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(\n typeof zoomInLabel === 'string'\n ? document.createTextNode(zoomInLabel)\n : zoomInLabel\n );\n\n inElement.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this, delta),\n false\n );\n\n const outElement = document.createElement('button');\n outElement.className = zoomOutClassName;\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(\n typeof zoomOutLabel === 'string'\n ? document.createTextNode(zoomOutLabel)\n : zoomOutLabel\n );\n\n outElement.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this, -delta),\n false\n );\n\n const cssClasses =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n zoomByDelta_(delta) {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n const newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut,\n });\n } else {\n view.setZoom(newZoom);\n }\n }\n }\n}\n\nexport default Zoom;\n","/**\n * @module ol/control/defaults\n */\nimport Attribution from './Attribution.js';\nimport Collection from '../Collection.js';\nimport Rotate from './Rotate.js';\nimport Zoom from './Zoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n */\n\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * * {@link module:ol/control/Zoom~Zoom}\n * * {@link module:ol/control/Rotate~Rotate}\n * * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions} [options] Options for the default controls.\n * @return {Collection} A collection of controls\n * to be used with the {@link module:ol/Map~Map} constructor's `controls` option.\n * @api\n */\nexport function defaults(options) {\n options = options ? options : {};\n\n /** @type {Collection} */\n const controls = new Collection();\n\n const zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n\n const rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n\n const attributionControl =\n options.attribution !== undefined ? options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n\n return controls;\n}\n","/**\n * @module ol/coordinate\n */\nimport {getWidth} from './extent.js';\nimport {modulo, toFixed} from './math.js';\nimport {padNumber} from './string.js';\n\n/**\n * An array of numbers representing an `xy`, `xyz` or `xyzm` coordinate.\n * Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n const r = circle.getRadius();\n const center = circle.getCenter();\n const x0 = center[0];\n const y0 = center[1];\n const x1 = coordinate[0];\n const y1 = coordinate[1];\n\n let dx = x1 - x0;\n const dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n const d = Math.sqrt(dx * dx + dy * dy);\n\n const x = x0 + (r * dx) / d;\n const y = y0 + (r * dy) / d;\n\n return [x, y];\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n const x0 = coordinate[0];\n const y0 = coordinate[1];\n const start = segment[0];\n const end = segment[1];\n const x1 = start[0];\n const y1 = start[1];\n const x2 = end[0];\n const y2 = end[1];\n const dx = x2 - x1;\n const dy = y2 - y1;\n const along =\n dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n let x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n } else if (along >= 1) {\n x = x2;\n y = y2;\n } else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY();\n * const out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY(2);\n * const out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, fractionDigits);\n }\n );\n}\n\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, fractionDigits) {\n const normalizedDegrees = modulo(degrees + 180, 360) - 180;\n const x = Math.abs(3600 * normalizedDegrees);\n const decimals = fractionDigits || 0;\n\n let deg = Math.floor(x / 3600);\n let min = Math.floor((x - deg * 3600) / 60);\n let sec = toFixed(x - deg * 3600 - min * 60, decimals);\n\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n\n let hdms = deg + '\\u00b0';\n if (min !== 0 || sec !== 0) {\n hdms += ' ' + padNumber(min, 2) + '\\u2032';\n }\n if (sec !== 0) {\n hdms += ' ' + padNumber(sec, 2, decimals) + '\\u2033';\n }\n if (normalizedDegrees !== 0) {\n hdms += ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0);\n }\n\n return hdms;\n}\n\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(fractionDigits))\n .replace('{y}', coordinate[1].toFixed(fractionDigits));\n }\n return '';\n}\n\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n let equals = true;\n for (let i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n const x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n const y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n const dx = coord1[0] - coord2[0];\n const dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, fractionDigits) {\n if (coordinate) {\n return (\n degreesToStringHDMS('NS', coordinate[1], fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], fractionDigits)\n );\n }\n return '';\n}\n\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, fractionDigits) {\n return format(coordinate, '{x}, {y}', fractionDigits);\n}\n\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n const worldWidth = getWidth(projection.getExtent());\n const worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number} [sourceExtentWidth] Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, sourceExtentWidth) {\n const projectionExtent = projection.getExtent();\n let worldsAway = 0;\n if (\n projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])\n ) {\n sourceExtentWidth = sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor(\n (coordinate[0] - projectionExtent[0]) / sourceExtentWidth\n );\n }\n return worldsAway;\n}\n","/**\n * @module ol/css\n */\n\n/**\n * @typedef {Object} FontParameters\n * @property {string} style Style.\n * @property {string} variant Variant.\n * @property {string} weight Weight.\n * @property {string} size Size.\n * @property {string} lineHeight LineHeight.\n * @property {string} family Family.\n * @property {Array} families Families.\n */\n\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_HIDDEN = 'ol-hidden';\n\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_SELECTABLE = 'ol-selectable';\n\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSELECTABLE = 'ol-unselectable';\n\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSUPPORTED = 'ol-unsupported';\n\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_CONTROL = 'ol-control';\n\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_COLLAPSED = 'ol-collapsed';\n\n/**\n * From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nconst fontRegEx = new RegExp(\n [\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n ].join(''),\n 'i'\n);\nconst fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters|null} The font parameters (or null if the input spec is invalid).\n */\nexport const getFontParameters = function (fontSpec) {\n const match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n const style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (let i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n const value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n","import {WORKER_OFFSCREEN_CANVAS} from './has.js';\n\n/**\n * @module ol/dom\n */\n\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [width] Canvas width.\n * @param {number} [height] Canvas height.\n * @param {Array} [canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [settings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(width, height, canvasPool, settings) {\n /** @type {HTMLCanvasElement|OffscreenCanvas} */\n let canvas;\n if (canvasPool && canvasPool.length) {\n canvas = canvasPool.shift();\n } else if (WORKER_OFFSCREEN_CANVAS) {\n canvas = new OffscreenCanvas(width || 300, height || 300);\n } else {\n canvas = document.createElement('canvas');\n }\n if (width) {\n canvas.width = width;\n }\n if (height) {\n canvas.height = height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (\n canvas.getContext('2d', settings)\n );\n}\n\n/**\n * Releases canvas memory to avoid exceeding memory limits in Safari.\n * See https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n * @param {CanvasRenderingContext2D} context Context.\n */\nexport function releaseCanvas(context) {\n const canvas = context.canvas;\n canvas.width = 1;\n canvas.height = 1;\n context.clearRect(0, 0, 1, 1);\n}\n\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n\n return width;\n}\n\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n let height = element.offsetHeight;\n const style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n\n return height;\n}\n\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n const parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n\n/**\n * @param {Node} node The node to remove.\n * @return {Node|null} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n const oldChildren = node.childNodes;\n\n for (let i = 0; true; ++i) {\n const oldChild = oldChildren[i];\n const newChild = children[i];\n\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n","/**\n * @module ol/easing\n */\n\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing.inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n return 1 - inAndOut(2 * (t - 0.5));\n}\n","/**\n * @module ol/events\n */\nimport {clear} from './obj.js';\n\n/**\n * Key to use with {@link module:ol/Observable.unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\n */\n\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events.unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean} [once] If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, thisArg, once) {\n if (thisArg && thisArg !== target) {\n listener = listener.bind(thisArg);\n }\n if (once) {\n const originalListener = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener.apply(this, arguments);\n };\n }\n const eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events.unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events.listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, thisArg) {\n return listen(target, type, listener, thisArg, true);\n}\n\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events.listen} or {@link module:ol/events.listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n","/**\n * @module ol/events/Event\n */\n\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nclass BaseEvent {\n /**\n * @param {string} type Type.\n */\n constructor(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n\n /**\n * @type {boolean}\n */\n this.defaultPrevented;\n\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n\n /**\n * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n * will be fired.\n * @api\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n\n /**\n * Stop event propagation.\n * @api\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\n\nexport default BaseEvent;\n","/**\n * @module ol/events/EventType\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n","/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport {VOID} from '../functions.js';\nimport {clear} from '../obj.js';\n\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nclass Target extends Disposable {\n /**\n * @param {*} [target] Default event target for dispatched events.\n */\n constructor(target) {\n super();\n\n /**\n * @private\n * @type {*}\n */\n this.eventTarget_ = target;\n\n /**\n * @private\n * @type {Object}\n */\n this.pendingRemovals_ = null;\n\n /**\n * @private\n * @type {Object}\n */\n this.dispatching_ = null;\n\n /**\n * @private\n * @type {Object>}\n */\n this.listeners_ = null;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n addEventListener(type, listener) {\n if (!type || !listener) {\n return;\n }\n const listeners = this.listeners_ || (this.listeners_ = {});\n const listenersForType = listeners[type] || (listeners[type] = []);\n if (!listenersForType.includes(listener)) {\n listenersForType.push(listener);\n }\n }\n\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n dispatchEvent(event) {\n const isString = typeof event === 'string';\n const type = isString ? event : event.type;\n const listeners = this.listeners_ && this.listeners_[type];\n if (!listeners) {\n return;\n }\n\n const evt = isString ? new Event(event) : /** @type {Event} */ (event);\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n const dispatching = this.dispatching_ || (this.dispatching_ = {});\n const pendingRemovals =\n this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n let propagate;\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (\n listeners[i]\n ).handleEvent(evt);\n } else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (\n listeners[i]\n ).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n if (--dispatching[type] === 0) {\n let pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.listeners_ && clear(this.listeners_);\n }\n\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n getListeners(type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n }\n\n /**\n * @param {string} [type] Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n hasListener(type) {\n if (!this.listeners_) {\n return false;\n }\n return type\n ? type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners_ && this.listeners_[type];\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n } else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n }\n}\n\nexport default Target;\n","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {FALSE, TRUE} from '../functions.js';\nimport {MAC, WEBKIT} from '../has.js';\nimport {assert} from '../asserts.js';\n\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n const conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n let pass = true;\n for (let i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\n}\n\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport const altKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport const altShiftKeysOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
      `.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport const focus = function (event) {\n const targetElement = event.map.getTargetElement();\n const activeElement = event.map.getOwnerDocument().activeElement;\n return targetElement.contains(activeElement);\n};\n\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport const focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\n};\n\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport const always = TRUE;\n\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport const click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport const mouseActionButton = function (mapBrowserEvent) {\n const originalEvent = /** @type {MouseEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport const never = FALSE;\n\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport const pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport const singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport const doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport const noModifierKeys = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKey = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return MAC ? originalEvent.metaKey : originalEvent.ctrlKey;\n};\n\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport const shiftKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the target element is not editable, i.e. not an `input`,\n * `select`, or `textarea` element and no `contenteditable` attribute is\n * set or inherited, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if the target element is not editable.\n * @api\n */\nexport const targetNotEditable = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const tagName = /** @type {Element} */ (originalEvent.target).tagName;\n return (\n tagName !== 'INPUT' &&\n tagName !== 'SELECT' &&\n tagName !== 'TEXTAREA' &&\n // `isContentEditable` is only available on `HTMLElement`, but it may also be a\n // different type like `SVGElement`.\n // @ts-ignore\n !originalEvent.target.isContentEditable\n );\n};\n\n/**\n * Return `true` if the event originates from a mouse device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a mouse device.\n * @api\n */\nexport const mouseOnly = function (mapBrowserEvent) {\n const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvent.pointerType == 'mouse';\n};\n\n/**\n * Return `true` if the event originates from a touchable device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a touchable device.\n * @api\n */\nexport const touchOnly = function (mapBrowserEvent) {\n const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'touch';\n};\n\n/**\n * Return `true` if the event originates from a digital pen.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a digital pen.\n * @api\n */\nexport const penOnly = function (mapBrowserEvent) {\n const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvt !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'pen';\n};\n\n/**\n * Return `true` if the event originates from a primary pointer in\n * contact with the surface or if the left mouse button is pressed.\n * See https://www.w3.org/TR/pointerevents/#button-states.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a primary pointer.\n * @api\n */\nexport const primaryAction = function (mapBrowserEvent) {\n const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(pointerEvent !== undefined, 56); // mapBrowserEvent must originate from a pointer event\n return pointerEvent.isPrimary && pointerEvent.button === 0;\n};\n","/**\n * @module ol/extent\n */\nimport Relationship from './extent/Relationship.js';\nimport {assert} from './asserts.js';\n\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n\n/**\n * Extent corner.\n * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} Corner\n */\n\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n const extent = createEmpty();\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent} [dest] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, dest) {\n const minX = Math.min.apply(null, xs);\n const minY = Math.min.apply(null, ys);\n const maxX = Math.max.apply(null, xs);\n const maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, dest);\n}\n\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, dest) {\n if (dest) {\n dest[0] = extent[0] - value;\n dest[1] = extent[1] - value;\n dest[2] = extent[2] + value;\n dest[3] = extent[3] + value;\n return dest;\n }\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n}\n\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [dest] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\n return extent.slice();\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n let dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n } else if (extent[2] < x) {\n dx = x - extent[2];\n } else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n } else if (extent[3] < y) {\n dy = y - extent[3];\n } else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (\n extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]\n );\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const x = coordinate[0];\n const y = coordinate[1];\n let relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n } else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n } else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, dest) {\n if (dest) {\n dest[0] = minX;\n dest[1] = minY;\n dest[2] = maxX;\n dest[3] = maxY;\n return dest;\n }\n return [minX, minY, maxX, maxY];\n}\n\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(dest) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, dest);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, dest) {\n const x = coordinate[0];\n const y = coordinate[1];\n return createOrUpdate(x, y, x, y, dest);\n}\n\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendCoordinates(extent, coordinates);\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n dest\n) {\n const extent = createOrUpdateEmpty(dest);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n\n/**\n * @param {Array>} rings Rings.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendRings(extent, rings);\n}\n\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (\n extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]\n );\n}\n\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (\n Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance\n );\n}\n\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(\n extent,\n flatCoordinates,\n offset,\n end,\n stride\n) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (let i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n let val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n let area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {Corner} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n let coordinate;\n if (corner === 'bottom-left') {\n coordinate = getBottomLeft(extent);\n } else if (corner === 'bottom-right') {\n coordinate = getBottomRight(extent);\n } else if (corner === 'top-left') {\n coordinate = getTopLeft(extent);\n } else if (corner === 'top-right') {\n coordinate = getTopRight(extent);\n } else {\n assert(false, 13); // Invalid corner\n }\n return coordinate;\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n const minX = Math.min(extent1[0], extent2[0]);\n const minY = Math.min(extent1[1], extent2[1]);\n const maxX = Math.max(extent1[2], extent2[2]);\n const maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, dest) {\n const [x0, y0, x1, y1, x2, y2, x3, y3] = getRotatedViewport(\n center,\n resolution,\n rotation,\n size\n );\n return createOrUpdate(\n Math.min(x0, x1, x2, x3),\n Math.min(y0, y1, y2, y3),\n Math.max(x0, x1, x2, x3),\n Math.max(y0, y1, y2, y3),\n dest\n );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array} Linear ring representing the viewport.\n */\nexport function getRotatedViewport(center, resolution, rotation, size) {\n const dx = (resolution * size[0]) / 2;\n const dy = (resolution * size[1]) / 2;\n const cosRotation = Math.cos(rotation);\n const sinRotation = Math.sin(rotation);\n const xCos = dx * cosRotation;\n const xSin = dx * sinRotation;\n const yCos = dy * cosRotation;\n const ySin = dy * sinRotation;\n const x = center[0];\n const y = center[1];\n return [\n x - xCos + ySin,\n y - xSin - yCos,\n x - xCos - ySin,\n y - xSin + yCos,\n x + xCos - ySin,\n y + xSin + yCos,\n x + xCos + ySin,\n y + xSin - yCos,\n x - xCos + ySin,\n y - xSin - yCos,\n ];\n}\n\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n const intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [dest] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, dest) {\n const intersection = dest ? dest : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n } else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n } else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n } else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n } else {\n intersection[3] = extent2[3];\n }\n } else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (\n extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]\n );\n}\n\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n const deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n const deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n let intersects = false;\n const startRel = coordinateRelationship(extent, start);\n const endRel = coordinateRelationship(extent, end);\n if (\n startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING\n ) {\n intersects = true;\n } else {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const startX = start[0];\n const startY = start[1];\n const endX = end[0];\n const endY = end[1];\n const slope = (endY - startY) / (endX - startX);\n let x, y;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)\n ) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)\n ) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)\n ) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent} [dest] Destination extent.\n * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, dest, stops) {\n if (isEmpty(extent)) {\n return createOrUpdateEmpty(dest);\n }\n let coordinates = [];\n if (stops > 1) {\n const width = extent[2] - extent[0];\n const height = extent[3] - extent[1];\n for (let i = 0; i < stops; ++i) {\n coordinates.push(\n extent[0] + (width * i) / stops,\n extent[1],\n extent[2],\n extent[1] + (height * i) / stops,\n extent[2] - (width * i) / stops,\n extent[3],\n extent[0],\n extent[3] - (height * i) / stops\n );\n }\n } else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n const xs = [];\n const ys = [];\n for (let i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, dest);\n}\n\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n const projectionExtent = projection.getExtent();\n const center = getCenter(extent);\n if (\n projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])\n ) {\n const worldWidth = getWidth(projectionExtent);\n const worldsAway = Math.floor(\n (center[0] - projectionExtent[0]) / worldWidth\n );\n const offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n\n/**\n * Fits the extent to the real world\n *\n * If the extent does not cross the anti meridian, this will return the extent in an array\n * If the extent crosses the anti meridian, the extent will be sliced, so each part fits within the\n * real world\n *\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Array} The extent within the real world extent.\n */\nexport function wrapAndSliceX(extent, projection) {\n if (projection.canWrapX()) {\n const projectionExtent = projection.getExtent();\n\n if (!isFinite(extent[0]) || !isFinite(extent[2])) {\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n\n wrapX(extent, projection);\n const worldWidth = getWidth(projectionExtent);\n\n if (getWidth(extent) > worldWidth) {\n // the extent wraps around on itself\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n if (extent[0] < projectionExtent[0]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0] + worldWidth, extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2], extent[3]],\n ];\n }\n if (extent[2] > projectionExtent[2]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0], extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2] - worldWidth, extent[3]],\n ];\n }\n }\n\n return [extent];\n}\n","/**\n * @module ol/extent/Relationship\n */\n\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n","/**\n * @module ol/functions\n */\n\nimport {equals as arrayEquals} from './array.js';\n\n/**\n * Always returns true.\n * @return {boolean} true.\n */\nexport function TRUE() {\n return true;\n}\n\n/**\n * Always returns false.\n * @return {boolean} false.\n */\nexport function FALSE() {\n return false;\n}\n\n/**\n * A reusable function, used e.g. as a default for callbacks.\n *\n * @return {void} Nothing.\n */\nexport function VOID() {}\n\n/**\n * Wrap a function in another function that remembers the last return. If the\n * returned function is called twice in a row with the same arguments and the same\n * this object, it will return the value from the first call in the second call.\n *\n * @param {function(...any): ReturnType} fn The function to memoize.\n * @return {function(...any): ReturnType} The memoized function.\n * @template ReturnType\n */\nexport function memoizeOne(fn) {\n let called = false;\n\n /** @type {ReturnType} */\n let lastResult;\n\n /** @type {Array} */\n let lastArgs;\n\n let lastThis;\n\n return function () {\n const nextArgs = Array.prototype.slice.call(arguments);\n if (!called || this !== lastThis || !arrayEquals(nextArgs, lastArgs)) {\n called = true;\n lastThis = this;\n lastArgs = nextArgs;\n lastResult = fn.apply(this, arguments);\n }\n return lastResult;\n };\n}\n\n/**\n * @template T\n * @param {function(): (T | Promise)} getter A function that returns a value or a promise for a value.\n * @return {Promise} A promise for the value.\n */\nexport function toPromise(getter) {\n function promiseGetter() {\n let value;\n try {\n value = getter();\n } catch (err) {\n return Promise.reject(err);\n }\n if (value instanceof Promise) {\n return value;\n }\n return Promise.resolve(value);\n }\n return promiseGetter();\n}\n","/**\n * @module ol/geom/Circle\n */\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {createOrUpdate, forEachCorner, intersects} from '../extent.js';\nimport {deflateCoordinate} from './flat/deflate.js';\nimport {rotate} from './flat/transform.js';\n\n/**\n * @classdesc\n * Circle geometry.\n *\n * @api\n */\nclass Circle extends SimpleGeometry {\n /**\n * @param {!import(\"../coordinate.js\").Coordinate} center Center.\n * For internal use, flat coordinates in combination with `layout` and no\n * `radius` are also accepted.\n * @param {number} [radius] Radius in units of the projection.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(center, radius, layout) {\n super();\n if (layout !== undefined && radius === undefined) {\n this.setFlatCoordinates(layout, center);\n } else {\n radius = radius ? radius : 0;\n this.setCenterAndRadius(center, radius, layout);\n }\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Circle} Clone.\n * @api\n */\n clone() {\n const circle = new Circle(\n this.flatCoordinates.slice(),\n undefined,\n this.layout\n );\n circle.applyProperties(this);\n return circle;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n const flatCoordinates = this.flatCoordinates;\n const dx = x - flatCoordinates[0];\n const dy = y - flatCoordinates[1];\n const squaredDistance = dx * dx + dy * dy;\n if (squaredDistance < minSquaredDistance) {\n if (squaredDistance === 0) {\n for (let i = 0; i < this.stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n } else {\n const delta = this.getRadius() / Math.sqrt(squaredDistance);\n closestPoint[0] = flatCoordinates[0] + delta * dx;\n closestPoint[1] = flatCoordinates[1] + delta * dy;\n for (let i = 2; i < this.stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n }\n closestPoint.length = this.stride;\n return squaredDistance;\n }\n return minSquaredDistance;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n const flatCoordinates = this.flatCoordinates;\n const dx = x - flatCoordinates[0];\n const dy = y - flatCoordinates[1];\n return dx * dx + dy * dy <= this.getRadiusSquared_();\n }\n\n /**\n * Return the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.\n * @return {import(\"../coordinate.js\").Coordinate} Center.\n * @api\n */\n getCenter() {\n return this.flatCoordinates.slice(0, this.stride);\n }\n\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n const flatCoordinates = this.flatCoordinates;\n const radius = flatCoordinates[this.stride] - flatCoordinates[0];\n return createOrUpdate(\n flatCoordinates[0] - radius,\n flatCoordinates[1] - radius,\n flatCoordinates[0] + radius,\n flatCoordinates[1] + radius,\n extent\n );\n }\n\n /**\n * Return the radius of the circle.\n * @return {number} Radius.\n * @api\n */\n getRadius() {\n return Math.sqrt(this.getRadiusSquared_());\n }\n\n /**\n * @private\n * @return {number} Radius squared.\n */\n getRadiusSquared_() {\n const dx = this.flatCoordinates[this.stride] - this.flatCoordinates[0];\n const dy = this.flatCoordinates[this.stride + 1] - this.flatCoordinates[1];\n return dx * dx + dy * dy;\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'Circle';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n const circleExtent = this.getExtent();\n if (intersects(extent, circleExtent)) {\n const center = this.getCenter();\n\n if (extent[0] <= center[0] && extent[2] >= center[0]) {\n return true;\n }\n if (extent[1] <= center[1] && extent[3] >= center[1]) {\n return true;\n }\n\n return forEachCorner(extent, this.intersectsCoordinate.bind(this));\n }\n return false;\n }\n\n /**\n * Set the center of the circle as {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} center Center.\n * @api\n */\n setCenter(center) {\n const stride = this.stride;\n const radius = this.flatCoordinates[stride] - this.flatCoordinates[0];\n const flatCoordinates = center.slice();\n flatCoordinates[stride] = flatCoordinates[0] + radius;\n for (let i = 1; i < stride; ++i) {\n flatCoordinates[stride + i] = center[i];\n }\n this.setFlatCoordinates(this.layout, flatCoordinates);\n this.changed();\n }\n\n /**\n * Set the center (as {@link module:ol/coordinate~Coordinate coordinate}) and the radius (as\n * number) of the circle.\n * @param {!import(\"../coordinate.js\").Coordinate} center Center.\n * @param {number} radius Radius.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCenterAndRadius(center, radius, layout) {\n this.setLayout(layout, center, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n /** @type {Array} */\n const flatCoordinates = this.flatCoordinates;\n let offset = deflateCoordinate(flatCoordinates, 0, center, this.stride);\n flatCoordinates[offset++] = flatCoordinates[0] + radius;\n for (let i = 1, ii = this.stride; i < ii; ++i) {\n flatCoordinates[offset++] = flatCoordinates[i];\n }\n flatCoordinates.length = offset;\n this.changed();\n }\n\n getCoordinates() {\n return null;\n }\n\n setCoordinates(coordinates, layout) {}\n\n /**\n * Set the radius of the circle. The radius is in the units of the projection.\n * @param {number} radius Radius.\n * @api\n */\n setRadius(radius) {\n this.flatCoordinates[this.stride] = this.flatCoordinates[0] + radius;\n this.changed();\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in counter-clockwise radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n const center = this.getCenter();\n const stride = this.getStride();\n this.setCenter(\n rotate(center, 0, center.length, stride, angle, anchor, center)\n );\n this.changed();\n }\n}\n\n/**\n * Transform each coordinate of the circle from one coordinate reference system\n * to another. The geometry is modified in place.\n * If you do not want the geometry modified in place, first clone() it and\n * then use this function on the clone.\n *\n * Internally a circle is currently represented by two points: the center of\n * the circle `[cx, cy]`, and the point to the right of the circle\n * `[cx + r, cy]`. This `transform` function just transforms these two points.\n * So the resulting geometry is also a circle, and that circle does not\n * correspond to the shape that would be obtained by transforming every point\n * of the original circle.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Circle} This geometry. Note that original geometry is\n * modified in place.\n * @function\n * @api\n */\nCircle.prototype.transform;\nexport default Circle;\n","/**\n * @module ol/geom/Geometry\n */\nimport BaseObject from '../Object.js';\nimport {abstract} from '../util.js';\nimport {\n compose as composeTransform,\n create as createTransform,\n} from '../transform.js';\nimport {\n createEmpty,\n createOrUpdateEmpty,\n getHeight,\n returnOrUpdate,\n} from '../extent.js';\nimport {get as getProjection, getTransform} from '../proj.js';\nimport {memoizeOne} from '../functions.js';\nimport {transform2D} from './flat/transform.js';\n\n/**\n * @typedef {'XY' | 'XYZ' | 'XYM' | 'XYZM'} GeometryLayout\n * The coordinate layout for geometries, indicating whether a 3rd or 4th z ('Z')\n * or measure ('M') coordinate is available.\n */\n\n/**\n * @typedef {'Point' | 'LineString' | 'LinearRing' | 'Polygon' | 'MultiPoint' | 'MultiLineString' | 'MultiPolygon' | 'GeometryCollection' | 'Circle'} Type\n * The geometry type. One of `'Point'`, `'LineString'`, `'LinearRing'`,\n * `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,\n * `'GeometryCollection'`, or `'Circle'`.\n */\n\n/**\n * @type {import(\"../transform.js\").Transform}\n */\nconst tmpTransform = createTransform();\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for vector geometries.\n *\n * To get notified of changes to the geometry, register a listener for the\n * generic `change` event on your geometry instance.\n *\n * @abstract\n * @api\n */\nclass Geometry extends BaseObject {\n constructor() {\n super();\n\n /**\n * @private\n * @type {import(\"../extent.js\").Extent}\n */\n this.extent_ = createEmpty();\n\n /**\n * @private\n * @type {number}\n */\n this.extentRevision_ = -1;\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n\n /**\n * @protected\n * @type {number}\n */\n this.simplifiedGeometryRevision = 0;\n\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} revision The geometry revision.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n this.simplifyTransformedInternal = memoizeOne(function (\n revision,\n squaredTolerance,\n transform\n ) {\n if (!transform) {\n return this.getSimplifiedGeometry(squaredTolerance);\n }\n const clone = this.clone();\n clone.applyTransform(transform);\n return clone.getSimplifiedGeometry(squaredTolerance);\n });\n }\n\n /**\n * Get a transformed and simplified version of the geometry.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @param {import(\"../proj.js\").TransformFunction} [transform] Optional transform function.\n * @return {Geometry} Simplified geometry.\n */\n simplifyTransformed(squaredTolerance, transform) {\n return this.simplifyTransformedInternal(\n this.getRevision(),\n squaredTolerance,\n transform\n );\n }\n\n /**\n * Make a complete copy of the geometry.\n * @abstract\n * @return {!Geometry} Clone.\n */\n clone() {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n return abstract();\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n const coord = this.getClosestPoint([x, y]);\n return coord[0] === x && coord[1] === y;\n }\n\n /**\n * Return the closest point of the geometry to the passed point as\n * {@link module:ol/coordinate~Coordinate coordinate}.\n * @param {import(\"../coordinate.js\").Coordinate} point Point.\n * @param {import(\"../coordinate.js\").Coordinate} [closestPoint] Closest point.\n * @return {import(\"../coordinate.js\").Coordinate} Closest point.\n * @api\n */\n getClosestPoint(point, closestPoint) {\n closestPoint = closestPoint ? closestPoint : [NaN, NaN];\n this.closestPointXY(point[0], point[1], closestPoint, Infinity);\n return closestPoint;\n }\n\n /**\n * Returns true if this geometry includes the specified coordinate. If the\n * coordinate is on the boundary of the geometry, returns false.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains coordinate.\n * @api\n */\n intersectsCoordinate(coordinate) {\n return this.containsXY(coordinate[0], coordinate[1]);\n }\n\n /**\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return abstract();\n }\n\n /**\n * Get the extent of the geometry.\n * @param {import(\"../extent.js\").Extent} [extent] Extent.\n * @return {import(\"../extent.js\").Extent} extent Extent.\n * @api\n */\n getExtent(extent) {\n if (this.extentRevision_ != this.getRevision()) {\n const extent = this.computeExtent(this.extent_);\n if (isNaN(extent[0]) || isNaN(extent[1])) {\n createOrUpdateEmpty(extent);\n }\n this.extentRevision_ = this.getRevision();\n }\n return returnOrUpdate(this.extent_, extent);\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} angle Rotation angle in radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n abstract();\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @abstract\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, sy, anchor) {\n abstract();\n }\n\n /**\n * Create a simplified version of this geometry. For linestrings, this uses\n * the [Douglas Peucker](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm)\n * algorithm. For polygons, a quantization-based\n * simplification is used to preserve topology.\n * @param {number} tolerance The tolerance distance for simplification.\n * @return {Geometry} A new, simplified version of the original geometry.\n * @api\n */\n simplify(tolerance) {\n return this.getSimplifiedGeometry(tolerance * tolerance);\n }\n\n /**\n * Create a simplified version of this geometry using the Douglas Peucker\n * algorithm.\n * See https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm.\n * @abstract\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Geometry} Simplified geometry.\n */\n getSimplifiedGeometry(squaredTolerance) {\n return abstract();\n }\n\n /**\n * Get the type of this geometry.\n * @abstract\n * @return {Type} Geometry type.\n */\n getType() {\n return abstract();\n }\n\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @abstract\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n */\n applyTransform(transformFn) {\n abstract();\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @abstract\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n */\n intersectsExtent(extent) {\n return abstract();\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @abstract\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n abstract();\n }\n\n /**\n * Transform each coordinate of the geometry from one coordinate reference\n * system to another. The geometry is modified in place.\n * For example, a line will be transformed to a line and a circle to a circle.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n *\n * @param {import(\"../proj.js\").ProjectionLike} source The current projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @param {import(\"../proj.js\").ProjectionLike} destination The desired projection. Can be a\n * string identifier or a {@link module:ol/proj/Projection~Projection} object.\n * @return {Geometry} This geometry. Note that original geometry is\n * modified in place.\n * @api\n */\n transform(source, destination) {\n /** @type {import(\"../proj/Projection.js\").default} */\n const sourceProj = getProjection(source);\n const transformFn =\n sourceProj.getUnits() == 'tile-pixels'\n ? function (inCoordinates, outCoordinates, stride) {\n const pixelExtent = sourceProj.getExtent();\n const projectedExtent = sourceProj.getWorldExtent();\n const scale = getHeight(projectedExtent) / getHeight(pixelExtent);\n composeTransform(\n tmpTransform,\n projectedExtent[0],\n projectedExtent[3],\n scale,\n -scale,\n 0,\n 0,\n 0\n );\n transform2D(\n inCoordinates,\n 0,\n inCoordinates.length,\n stride,\n tmpTransform,\n outCoordinates\n );\n return getTransform(sourceProj, destination)(\n inCoordinates,\n outCoordinates,\n stride\n );\n }\n : getTransform(sourceProj, destination);\n this.applyTransform(transformFn);\n return this;\n }\n}\n\nexport default Geometry;\n","/**\n * @module ol/geom/Point\n */\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {containsXY, createOrUpdateFromCoordinate} from '../extent.js';\nimport {deflateCoordinate} from './flat/deflate.js';\nimport {squaredDistance as squaredDx} from '../math.js';\n\n/**\n * @classdesc\n * Point geometry.\n *\n * @api\n */\nclass Point extends SimpleGeometry {\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(coordinates, layout) {\n super();\n this.setCoordinates(coordinates, layout);\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Point} Clone.\n * @api\n */\n clone() {\n const point = new Point(this.flatCoordinates.slice(), this.layout);\n point.applyProperties(this);\n return point;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n const flatCoordinates = this.flatCoordinates;\n const squaredDistance = squaredDx(\n x,\n y,\n flatCoordinates[0],\n flatCoordinates[1]\n );\n if (squaredDistance < minSquaredDistance) {\n const stride = this.stride;\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n return minSquaredDistance;\n }\n\n /**\n * Return the coordinate of the point.\n * @return {import(\"../coordinate.js\").Coordinate} Coordinates.\n * @api\n */\n getCoordinates() {\n return !this.flatCoordinates ? [] : this.flatCoordinates.slice();\n }\n\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return createOrUpdateFromCoordinate(this.flatCoordinates, extent);\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'Point';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return containsXY(extent, this.flatCoordinates[0], this.flatCoordinates[1]);\n }\n\n /**\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 0);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinate(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride\n );\n this.changed();\n }\n}\n\nexport default Point;\n","/**\n * @module ol/geom/LinearRing\n */\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {assignClosestPoint, maxSquaredDelta} from './flat/closest.js';\nimport {closestSquaredDistanceXY} from '../extent.js';\nimport {deflateCoordinates} from './flat/deflate.js';\nimport {douglasPeucker} from './flat/simplify.js';\nimport {inflateCoordinates} from './flat/inflate.js';\nimport {linearRing as linearRingArea} from './flat/area.js';\n\n/**\n * @classdesc\n * Linear ring geometry. Only used as part of polygon; cannot be rendered\n * on its own.\n *\n * @api\n */\nclass LinearRing extends SimpleGeometry {\n /**\n * @param {Array|Array} coordinates Coordinates.\n * For internal use, flat coordinates in combination with `layout` are also accepted.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n constructor(coordinates, layout) {\n super();\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n if (layout !== undefined && !Array.isArray(coordinates[0])) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array} */ (coordinates)\n );\n } else {\n this.setCoordinates(\n /** @type {Array} */ (\n coordinates\n ),\n layout\n );\n }\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!LinearRing} Clone.\n * @api\n */\n clone() {\n return new LinearRing(this.flatCoordinates.slice(), this.layout);\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(\n maxSquaredDelta(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n 0\n )\n );\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestPoint(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n this.maxDelta_,\n true,\n x,\n y,\n closestPoint,\n minSquaredDistance\n );\n }\n\n /**\n * Return the area of the linear ring on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingArea(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride\n );\n }\n\n /**\n * Return the coordinates of the linear ring.\n * @return {Array} Coordinates.\n * @api\n */\n getCoordinates() {\n return inflateCoordinates(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride\n );\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {LinearRing} Simplified LinearRing.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n simplifiedFlatCoordinates.length = douglasPeucker(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n return new LinearRing(simplifiedFlatCoordinates, 'XY');\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'LinearRing';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return false;\n }\n\n /**\n * Set the coordinates of the linear ring.\n * @param {!Array} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 1);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n this.flatCoordinates.length = deflateCoordinates(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride\n );\n this.changed();\n }\n}\n\nexport default LinearRing;\n","/**\n * @module ol/geom/Polygon\n */\nimport LinearRing from './LinearRing.js';\nimport Point from './Point.js';\nimport SimpleGeometry from './SimpleGeometry.js';\nimport {arrayMaxSquaredDelta, assignClosestArrayPoint} from './flat/closest.js';\nimport {closestSquaredDistanceXY, getCenter, isEmpty} from '../extent.js';\nimport {deflateCoordinatesArray} from './flat/deflate.js';\nimport {extend} from '../array.js';\nimport {getInteriorPointOfArray} from './flat/interiorpoint.js';\nimport {inflateCoordinatesArray} from './flat/inflate.js';\nimport {intersectsLinearRingArray} from './flat/intersectsextent.js';\nimport {linearRingsAreOriented, orientLinearRings} from './flat/orient.js';\nimport {linearRings as linearRingsArea} from './flat/area.js';\nimport {linearRingsContainsXY} from './flat/contains.js';\nimport {modulo} from '../math.js';\nimport {quantizeArray} from './flat/simplify.js';\nimport {offset as sphereOffset} from '../sphere.js';\n\n/**\n * @classdesc\n * Polygon geometry.\n *\n * @api\n */\nclass Polygon extends SimpleGeometry {\n /**\n * @param {!Array>|!Array} coordinates\n * Array of linear rings that define the polygon. The first linear ring of the\n * array defines the outer-boundary or surface of the polygon. Each subsequent\n * linear ring defines a hole in the surface of the polygon. A linear ring is\n * an array of vertices' coordinates where the first coordinate and the last are\n * equivalent. (For internal use, flat coordinates in combination with\n * `layout` and `ends` are also accepted.)\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @param {Array} [ends] Ends (for internal use with flat coordinates).\n */\n constructor(coordinates, layout, ends) {\n super();\n\n /**\n * @type {Array}\n * @private\n */\n this.ends_ = [];\n\n /**\n * @private\n * @type {number}\n */\n this.flatInteriorPointRevision_ = -1;\n\n /**\n * @private\n * @type {import(\"../coordinate.js\").Coordinate}\n */\n this.flatInteriorPoint_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDelta_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.maxDeltaRevision_ = -1;\n\n /**\n * @private\n * @type {number}\n */\n this.orientedRevision_ = -1;\n\n /**\n * @private\n * @type {Array}\n */\n this.orientedFlatCoordinates_ = null;\n\n if (layout !== undefined && ends) {\n this.setFlatCoordinates(\n layout,\n /** @type {Array} */ (coordinates)\n );\n this.ends_ = ends;\n } else {\n this.setCoordinates(\n /** @type {Array>} */ (\n coordinates\n ),\n layout\n );\n }\n }\n\n /**\n * Append the passed linear ring to this polygon.\n * @param {LinearRing} linearRing Linear ring.\n * @api\n */\n appendLinearRing(linearRing) {\n if (!this.flatCoordinates) {\n this.flatCoordinates = linearRing.getFlatCoordinates().slice();\n } else {\n extend(this.flatCoordinates, linearRing.getFlatCoordinates());\n }\n this.ends_.push(this.flatCoordinates.length);\n this.changed();\n }\n\n /**\n * Make a complete copy of the geometry.\n * @return {!Polygon} Clone.\n * @api\n */\n clone() {\n const polygon = new Polygon(\n this.flatCoordinates.slice(),\n this.layout,\n this.ends_.slice()\n );\n polygon.applyProperties(this);\n return polygon;\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @param {import(\"../coordinate.js\").Coordinate} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @return {number} Minimum squared distance.\n */\n closestPointXY(x, y, closestPoint, minSquaredDistance) {\n if (minSquaredDistance < closestSquaredDistanceXY(this.getExtent(), x, y)) {\n return minSquaredDistance;\n }\n if (this.maxDeltaRevision_ != this.getRevision()) {\n this.maxDelta_ = Math.sqrt(\n arrayMaxSquaredDelta(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n 0\n )\n );\n this.maxDeltaRevision_ = this.getRevision();\n }\n return assignClosestArrayPoint(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n this.maxDelta_,\n true,\n x,\n y,\n closestPoint,\n minSquaredDistance\n );\n }\n\n /**\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\n containsXY(x, y) {\n return linearRingsContainsXY(\n this.getOrientedFlatCoordinates(),\n 0,\n this.ends_,\n this.stride,\n x,\n y\n );\n }\n\n /**\n * Return the area of the polygon on projected plane.\n * @return {number} Area (on projected plane).\n * @api\n */\n getArea() {\n return linearRingsArea(\n this.getOrientedFlatCoordinates(),\n 0,\n this.ends_,\n this.stride\n );\n }\n\n /**\n * Get the coordinate array for this geometry. This array has the structure\n * of a GeoJSON coordinate array for polygons.\n *\n * @param {boolean} [right] Orient coordinates according to the right-hand\n * rule (counter-clockwise for exterior and clockwise for interior rings).\n * If `false`, coordinates will be oriented according to the left-hand rule\n * (clockwise for exterior and counter-clockwise for interior rings).\n * By default, coordinate orientation will depend on how the geometry was\n * constructed.\n * @return {Array>} Coordinates.\n * @api\n */\n getCoordinates(right) {\n let flatCoordinates;\n if (right !== undefined) {\n flatCoordinates = this.getOrientedFlatCoordinates().slice();\n orientLinearRings(flatCoordinates, 0, this.ends_, this.stride, right);\n } else {\n flatCoordinates = this.flatCoordinates;\n }\n\n return inflateCoordinatesArray(flatCoordinates, 0, this.ends_, this.stride);\n }\n\n /**\n * @return {Array} Ends.\n */\n getEnds() {\n return this.ends_;\n }\n\n /**\n * @return {Array} Interior point.\n */\n getFlatInteriorPoint() {\n if (this.flatInteriorPointRevision_ != this.getRevision()) {\n const flatCenter = getCenter(this.getExtent());\n this.flatInteriorPoint_ = getInteriorPointOfArray(\n this.getOrientedFlatCoordinates(),\n 0,\n this.ends_,\n this.stride,\n flatCenter,\n 0\n );\n this.flatInteriorPointRevision_ = this.getRevision();\n }\n return this.flatInteriorPoint_;\n }\n\n /**\n * Return an interior point of the polygon.\n * @return {Point} Interior point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n * @api\n */\n getInteriorPoint() {\n return new Point(this.getFlatInteriorPoint(), 'XYM');\n }\n\n /**\n * Return the number of rings of the polygon, this includes the exterior\n * ring and any interior rings.\n *\n * @return {number} Number of rings.\n * @api\n */\n getLinearRingCount() {\n return this.ends_.length;\n }\n\n /**\n * Return the Nth linear ring of the polygon geometry. Return `null` if the\n * given index is out of range.\n * The exterior linear ring is available at index `0` and the interior rings\n * at index `1` and beyond.\n *\n * @param {number} index Index.\n * @return {LinearRing|null} Linear ring.\n * @api\n */\n getLinearRing(index) {\n if (index < 0 || this.ends_.length <= index) {\n return null;\n }\n return new LinearRing(\n this.flatCoordinates.slice(\n index === 0 ? 0 : this.ends_[index - 1],\n this.ends_[index]\n ),\n this.layout\n );\n }\n\n /**\n * Return the linear rings of the polygon.\n * @return {Array} Linear rings.\n * @api\n */\n getLinearRings() {\n const layout = this.layout;\n const flatCoordinates = this.flatCoordinates;\n const ends = this.ends_;\n const linearRings = [];\n let offset = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const linearRing = new LinearRing(\n flatCoordinates.slice(offset, end),\n layout\n );\n linearRings.push(linearRing);\n offset = end;\n }\n return linearRings;\n }\n\n /**\n * @return {Array} Oriented flat coordinates.\n */\n getOrientedFlatCoordinates() {\n if (this.orientedRevision_ != this.getRevision()) {\n const flatCoordinates = this.flatCoordinates;\n if (linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) {\n this.orientedFlatCoordinates_ = flatCoordinates;\n } else {\n this.orientedFlatCoordinates_ = flatCoordinates.slice();\n this.orientedFlatCoordinates_.length = orientLinearRings(\n this.orientedFlatCoordinates_,\n 0,\n this.ends_,\n this.stride\n );\n }\n this.orientedRevision_ = this.getRevision();\n }\n return this.orientedFlatCoordinates_;\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {Polygon} Simplified Polygon.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n const simplifiedFlatCoordinates = [];\n const simplifiedEnds = [];\n simplifiedFlatCoordinates.length = quantizeArray(\n this.flatCoordinates,\n 0,\n this.ends_,\n this.stride,\n Math.sqrt(squaredTolerance),\n simplifiedFlatCoordinates,\n 0,\n simplifiedEnds\n );\n return new Polygon(simplifiedFlatCoordinates, 'XY', simplifiedEnds);\n }\n\n /**\n * Get the type of this geometry.\n * @return {import(\"./Geometry.js\").Type} Geometry type.\n * @api\n */\n getType() {\n return 'Polygon';\n }\n\n /**\n * Test if the geometry and the passed extent intersect.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @return {boolean} `true` if the geometry and the extent intersect.\n * @api\n */\n intersectsExtent(extent) {\n return intersectsLinearRingArray(\n this.getOrientedFlatCoordinates(),\n 0,\n this.ends_,\n this.stride,\n extent\n );\n }\n\n /**\n * Set the coordinates of the polygon.\n * @param {!Array>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n * @api\n */\n setCoordinates(coordinates, layout) {\n this.setLayout(layout, coordinates, 2);\n if (!this.flatCoordinates) {\n this.flatCoordinates = [];\n }\n const ends = deflateCoordinatesArray(\n this.flatCoordinates,\n 0,\n coordinates,\n this.stride,\n this.ends_\n );\n this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1];\n this.changed();\n }\n}\n\nexport default Polygon;\n\n/**\n * Create an approximation of a circle on the surface of a sphere.\n * @param {import(\"../coordinate.js\").Coordinate} center Center (`[lon, lat]` in degrees).\n * @param {number} radius The great-circle distance from the center to\n * the polygon vertices in meters.\n * @param {number} [n] Optional number of vertices for the resulting\n * polygon. Default is `32`.\n * @param {number} [sphereRadius] Optional radius for the sphere (defaults to\n * the Earth's mean radius using the WGS84 ellipsoid).\n * @return {Polygon} The \"circular\" polygon.\n * @api\n */\nexport function circular(center, radius, n, sphereRadius) {\n n = n ? n : 32;\n /** @type {Array} */\n const flatCoordinates = [];\n for (let i = 0; i < n; ++i) {\n extend(\n flatCoordinates,\n sphereOffset(center, radius, (2 * Math.PI * i) / n, sphereRadius)\n );\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n return new Polygon(flatCoordinates, 'XY', [flatCoordinates.length]);\n}\n\n/**\n * Create a polygon from an extent. The layout used is `XY`.\n * @param {import(\"../extent.js\").Extent} extent The extent.\n * @return {Polygon} The polygon.\n * @api\n */\nexport function fromExtent(extent) {\n if (isEmpty(extent)) {\n throw new Error('Cannot create polygon from empty extent');\n }\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const flatCoordinates = [\n minX,\n minY,\n minX,\n maxY,\n maxX,\n maxY,\n maxX,\n minY,\n minX,\n minY,\n ];\n return new Polygon(flatCoordinates, 'XY', [flatCoordinates.length]);\n}\n\n/**\n * Create a regular polygon from a circle.\n * @param {import(\"./Circle.js\").default} circle Circle geometry.\n * @param {number} [sides] Number of sides of the polygon. Default is 32.\n * @param {number} [angle] Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n * @return {Polygon} Polygon geometry.\n * @api\n */\nexport function fromCircle(circle, sides, angle) {\n sides = sides ? sides : 32;\n const stride = circle.getStride();\n const layout = circle.getLayout();\n const center = circle.getCenter();\n const arrayLength = stride * (sides + 1);\n const flatCoordinates = new Array(arrayLength);\n for (let i = 0; i < arrayLength; i += stride) {\n flatCoordinates[i] = 0;\n flatCoordinates[i + 1] = 0;\n for (let j = 2; j < stride; j++) {\n flatCoordinates[i + j] = center[j];\n }\n }\n const ends = [flatCoordinates.length];\n const polygon = new Polygon(flatCoordinates, layout, ends);\n makeRegular(polygon, center, circle.getRadius(), angle);\n return polygon;\n}\n\n/**\n * Modify the coordinates of a polygon to make it a regular polygon.\n * @param {Polygon} polygon Polygon geometry.\n * @param {import(\"../coordinate.js\").Coordinate} center Center of the regular polygon.\n * @param {number} radius Radius of the regular polygon.\n * @param {number} [angle] Start angle for the first vertex of the polygon in\n * counter-clockwise radians. 0 means East. Default is 0.\n */\nexport function makeRegular(polygon, center, radius, angle) {\n const flatCoordinates = polygon.getFlatCoordinates();\n const stride = polygon.getStride();\n const sides = flatCoordinates.length / stride - 1;\n const startAngle = angle ? angle : 0;\n for (let i = 0; i <= sides; ++i) {\n const offset = i * stride;\n const angle = startAngle + (modulo(i, sides) * 2 * Math.PI) / sides;\n flatCoordinates[offset] = center[0] + radius * Math.cos(angle);\n flatCoordinates[offset + 1] = center[1] + radius * Math.sin(angle);\n }\n polygon.changed();\n}\n","/**\n * @module ol/geom/SimpleGeometry\n */\nimport Geometry from './Geometry.js';\nimport {abstract} from '../util.js';\nimport {createOrUpdateFromFlatCoordinates, getCenter} from '../extent.js';\nimport {rotate, scale, transform2D, translate} from './flat/transform.js';\n\n/**\n * @classdesc\n * Abstract base class; only used for creating subclasses; do not instantiate\n * in apps, as cannot be rendered.\n *\n * @abstract\n * @api\n */\nclass SimpleGeometry extends Geometry {\n constructor() {\n super();\n\n /**\n * @protected\n * @type {import(\"./Geometry.js\").GeometryLayout}\n */\n this.layout = 'XY';\n\n /**\n * @protected\n * @type {number}\n */\n this.stride = 2;\n\n /**\n * @protected\n * @type {Array}\n */\n this.flatCoordinates = null;\n }\n\n /**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @protected\n * @return {import(\"../extent.js\").Extent} extent Extent.\n */\n computeExtent(extent) {\n return createOrUpdateFromFlatCoordinates(\n this.flatCoordinates,\n 0,\n this.flatCoordinates.length,\n this.stride,\n extent\n );\n }\n\n /**\n * @abstract\n * @return {Array<*> | null} Coordinates.\n */\n getCoordinates() {\n return abstract();\n }\n\n /**\n * Return the first coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} First coordinate.\n * @api\n */\n getFirstCoordinate() {\n return this.flatCoordinates.slice(0, this.stride);\n }\n\n /**\n * @return {Array} Flat coordinates.\n */\n getFlatCoordinates() {\n return this.flatCoordinates;\n }\n\n /**\n * Return the last coordinate of the geometry.\n * @return {import(\"../coordinate.js\").Coordinate} Last point.\n * @api\n */\n getLastCoordinate() {\n return this.flatCoordinates.slice(\n this.flatCoordinates.length - this.stride\n );\n }\n\n /**\n * Return the {@link import(\"./Geometry.js\").GeometryLayout layout} of the geometry.\n * @return {import(\"./Geometry.js\").GeometryLayout} Layout.\n * @api\n */\n getLayout() {\n return this.layout;\n }\n\n /**\n * Create a simplified version of this geometry using the Douglas Peucker algorithm.\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n */\n getSimplifiedGeometry(squaredTolerance) {\n if (this.simplifiedGeometryRevision !== this.getRevision()) {\n this.simplifiedGeometryMaxMinSquaredTolerance = 0;\n this.simplifiedGeometryRevision = this.getRevision();\n }\n // If squaredTolerance is negative or if we know that simplification will not\n // have any effect then just return this.\n if (\n squaredTolerance < 0 ||\n (this.simplifiedGeometryMaxMinSquaredTolerance !== 0 &&\n squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance)\n ) {\n return this;\n }\n\n const simplifiedGeometry =\n this.getSimplifiedGeometryInternal(squaredTolerance);\n const simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates();\n if (simplifiedFlatCoordinates.length < this.flatCoordinates.length) {\n return simplifiedGeometry;\n }\n // Simplification did not actually remove any coordinates. We now know\n // that any calls to getSimplifiedGeometry with a squaredTolerance less\n // than or equal to the current squaredTolerance will also not have any\n // effect. This allows us to short circuit simplification (saving CPU\n // cycles) and prevents the cache of simplified geometries from filling\n // up with useless identical copies of this geometry (saving memory).\n this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance;\n return this;\n }\n\n /**\n * @param {number} squaredTolerance Squared tolerance.\n * @return {SimpleGeometry} Simplified geometry.\n * @protected\n */\n getSimplifiedGeometryInternal(squaredTolerance) {\n return this;\n }\n\n /**\n * @return {number} Stride.\n */\n getStride() {\n return this.stride;\n }\n\n /**\n * @param {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n * @param {Array} flatCoordinates Flat coordinates.\n */\n setFlatCoordinates(layout, flatCoordinates) {\n this.stride = getStrideForLayout(layout);\n this.layout = layout;\n this.flatCoordinates = flatCoordinates;\n }\n\n /**\n * @abstract\n * @param {!Array<*>} coordinates Coordinates.\n * @param {import(\"./Geometry.js\").GeometryLayout} [layout] Layout.\n */\n setCoordinates(coordinates, layout) {\n abstract();\n }\n\n /**\n * @param {import(\"./Geometry.js\").GeometryLayout|undefined} layout Layout.\n * @param {Array<*>} coordinates Coordinates.\n * @param {number} nesting Nesting.\n * @protected\n */\n setLayout(layout, coordinates, nesting) {\n /** @type {number} */\n let stride;\n if (layout) {\n stride = getStrideForLayout(layout);\n } else {\n for (let i = 0; i < nesting; ++i) {\n if (coordinates.length === 0) {\n this.layout = 'XY';\n this.stride = 2;\n return;\n }\n coordinates = /** @type {Array} */ (coordinates[0]);\n }\n stride = coordinates.length;\n layout = getLayoutForStride(stride);\n }\n this.layout = layout;\n this.stride = stride;\n }\n\n /**\n * Apply a transform function to the coordinates of the geometry.\n * The geometry is modified in place.\n * If you do not want the geometry modified in place, first `clone()` it and\n * then use this function on the clone.\n * @param {import(\"../proj.js\").TransformFunction} transformFn Transform function.\n * Called with a flat array of geometry coordinates.\n * @api\n */\n applyTransform(transformFn) {\n if (this.flatCoordinates) {\n transformFn(this.flatCoordinates, this.flatCoordinates, this.stride);\n this.changed();\n }\n }\n\n /**\n * Rotate the geometry around a given coordinate. This modifies the geometry\n * coordinates in place.\n * @param {number} angle Rotation angle in counter-clockwise radians.\n * @param {import(\"../coordinate.js\").Coordinate} anchor The rotation center.\n * @api\n */\n rotate(angle, anchor) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n rotate(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n angle,\n anchor,\n flatCoordinates\n );\n this.changed();\n }\n }\n\n /**\n * Scale the geometry (with an optional origin). This modifies the geometry\n * coordinates in place.\n * @param {number} sx The scaling factor in the x-direction.\n * @param {number} [sy] The scaling factor in the y-direction (defaults to sx).\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] The scale origin (defaults to the center\n * of the geometry extent).\n * @api\n */\n scale(sx, sy, anchor) {\n if (sy === undefined) {\n sy = sx;\n }\n if (!anchor) {\n anchor = getCenter(this.getExtent());\n }\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n scale(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n sx,\n sy,\n anchor,\n flatCoordinates\n );\n this.changed();\n }\n }\n\n /**\n * Translate the geometry. This modifies the geometry coordinates in place. If\n * instead you want a new geometry, first `clone()` this geometry.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @api\n */\n translate(deltaX, deltaY) {\n const flatCoordinates = this.getFlatCoordinates();\n if (flatCoordinates) {\n const stride = this.getStride();\n translate(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n deltaX,\n deltaY,\n flatCoordinates\n );\n this.changed();\n }\n }\n}\n\n/**\n * @param {number} stride Stride.\n * @return {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n */\nfunction getLayoutForStride(stride) {\n let layout;\n if (stride == 2) {\n layout = 'XY';\n } else if (stride == 3) {\n layout = 'XYZ';\n } else if (stride == 4) {\n layout = 'XYZM';\n }\n return /** @type {import(\"./Geometry.js\").GeometryLayout} */ (layout);\n}\n\n/**\n * @param {import(\"./Geometry.js\").GeometryLayout} layout Layout.\n * @return {number} Stride.\n */\nexport function getStrideForLayout(layout) {\n let stride;\n if (layout == 'XY') {\n stride = 2;\n } else if (layout == 'XYZ' || layout == 'XYM') {\n stride = 3;\n } else if (layout == 'XYZM') {\n stride = 4;\n }\n return /** @type {number} */ (stride);\n}\n\n/**\n * @param {SimpleGeometry} simpleGeometry Simple geometry.\n * @param {import(\"../transform.js\").Transform} transform Transform.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed flat coordinates.\n */\nexport function transformGeom2D(simpleGeometry, transform, dest) {\n const flatCoordinates = simpleGeometry.getFlatCoordinates();\n if (!flatCoordinates) {\n return null;\n }\n const stride = simpleGeometry.getStride();\n return transform2D(\n flatCoordinates,\n 0,\n flatCoordinates.length,\n stride,\n transform,\n dest\n );\n}\n\nexport default SimpleGeometry;\n","/**\n * @module ol/geom/flat/area\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRing(flatCoordinates, offset, end, stride) {\n let twiceArea = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n twiceArea += y1 * x2 - x1 * y2;\n x1 = x2;\n y1 = y2;\n }\n return twiceArea / 2;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRings(flatCoordinates, offset, ends, stride) {\n let area = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n area += linearRing(flatCoordinates, offset, end, stride);\n offset = end;\n }\n return area;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @return {number} Area.\n */\nexport function linearRingss(flatCoordinates, offset, endss, stride) {\n let area = 0;\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n area += linearRings(flatCoordinates, offset, ends, stride);\n offset = ends[ends.length - 1];\n }\n return area;\n}\n","/**\n * @module ol/geom/flat/closest\n */\nimport {lerp, squaredDistance as squaredDx} from '../../math.js';\n\n/**\n * Returns the point on the 2D line segment flatCoordinates[offset1] to\n * flatCoordinates[offset2] that is closest to the point (x, y). Extra\n * dimensions are linearly interpolated.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset1 Offset 1.\n * @param {number} offset2 Offset 2.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n */\nfunction assignClosest(\n flatCoordinates,\n offset1,\n offset2,\n stride,\n x,\n y,\n closestPoint\n) {\n const x1 = flatCoordinates[offset1];\n const y1 = flatCoordinates[offset1 + 1];\n const dx = flatCoordinates[offset2] - x1;\n const dy = flatCoordinates[offset2 + 1] - y1;\n let offset;\n if (dx === 0 && dy === 0) {\n offset = offset1;\n } else {\n const t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy);\n if (t > 1) {\n offset = offset2;\n } else if (t > 0) {\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = lerp(\n flatCoordinates[offset1 + i],\n flatCoordinates[offset2 + i],\n t\n );\n }\n closestPoint.length = stride;\n return;\n } else {\n offset = offset1;\n }\n }\n for (let i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n}\n\n/**\n * Return the squared of the largest distance between any pair of consecutive\n * coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function maxSquaredDelta(flatCoordinates, offset, end, stride, max) {\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n for (offset += stride; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n const squaredDelta = squaredDx(x1, y1, x2, y2);\n if (squaredDelta > max) {\n max = squaredDelta;\n }\n x1 = x2;\n y1 = y2;\n }\n return max;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function arrayMaxSquaredDelta(\n flatCoordinates,\n offset,\n ends,\n stride,\n max\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n max = maxSquaredDelta(flatCoordinates, offset, end, stride, max);\n offset = end;\n }\n return max;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} max Max squared delta.\n * @return {number} Max squared delta.\n */\nexport function multiArrayMaxSquaredDelta(\n flatCoordinates,\n offset,\n endss,\n stride,\n max\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n max = arrayMaxSquaredDelta(flatCoordinates, offset, ends, stride, max);\n offset = ends[ends.length - 1];\n }\n return max;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestPoint(\n flatCoordinates,\n offset,\n end,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n) {\n if (offset == end) {\n return minSquaredDistance;\n }\n let i, squaredDistance;\n if (maxDelta === 0) {\n // All points are identical, so just test the first point.\n squaredDistance = squaredDx(\n x,\n y,\n flatCoordinates[offset],\n flatCoordinates[offset + 1]\n );\n if (squaredDistance < minSquaredDistance) {\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = flatCoordinates[offset + i];\n }\n closestPoint.length = stride;\n return squaredDistance;\n }\n return minSquaredDistance;\n }\n tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n let index = offset + stride;\n while (index < end) {\n assignClosest(\n flatCoordinates,\n index - stride,\n index,\n stride,\n x,\n y,\n tmpPoint\n );\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n index += stride;\n } else {\n // Skip ahead multiple points, because we know that all the skipped\n // points cannot be any closer than the closest point we have found so\n // far. We know this because we know how close the current point is, how\n // close the closest point we have found so far is, and the maximum\n // distance between consecutive points. For example, if we're currently\n // at distance 10, the best we've found so far is 3, and that the maximum\n // distance between consecutive points is 2, then we'll need to skip at\n // least (10 - 3) / 2 == 3 (rounded down) points to have any chance of\n // finding a closer point. We use Math.max(..., 1) to ensure that we\n // always advance at least one point, to avoid an infinite loop.\n index +=\n stride *\n Math.max(\n ((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) /\n maxDelta) |\n 0,\n 1\n );\n }\n }\n if (isRing) {\n // Check the closing segment.\n assignClosest(\n flatCoordinates,\n end - stride,\n offset,\n stride,\n x,\n y,\n tmpPoint\n );\n squaredDistance = squaredDx(x, y, tmpPoint[0], tmpPoint[1]);\n if (squaredDistance < minSquaredDistance) {\n minSquaredDistance = squaredDistance;\n for (i = 0; i < stride; ++i) {\n closestPoint[i] = tmpPoint[i];\n }\n closestPoint.length = stride;\n }\n }\n return minSquaredDistance;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestArrayPoint(\n flatCoordinates,\n offset,\n ends,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n) {\n tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n minSquaredDistance = assignClosestPoint(\n flatCoordinates,\n offset,\n end,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n );\n offset = end;\n }\n return minSquaredDistance;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} maxDelta Max delta.\n * @param {boolean} isRing Is ring.\n * @param {number} x X.\n * @param {number} y Y.\n * @param {Array} closestPoint Closest point.\n * @param {number} minSquaredDistance Minimum squared distance.\n * @param {Array} [tmpPoint] Temporary point object.\n * @return {number} Minimum squared distance.\n */\nexport function assignClosestMultiArrayPoint(\n flatCoordinates,\n offset,\n endss,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n) {\n tmpPoint = tmpPoint ? tmpPoint : [NaN, NaN];\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n minSquaredDistance = assignClosestArrayPoint(\n flatCoordinates,\n offset,\n ends,\n stride,\n maxDelta,\n isRing,\n x,\n y,\n closestPoint,\n minSquaredDistance,\n tmpPoint\n );\n offset = ends[ends.length - 1];\n }\n return minSquaredDistance;\n}\n","/**\n * @module ol/geom/flat/contains\n */\nimport {forEachCorner} from '../../extent.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} Contains extent.\n */\nexport function linearRingContainsExtent(\n flatCoordinates,\n offset,\n end,\n stride,\n extent\n) {\n const outside = forEachCorner(\n extent,\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} Contains (x, y).\n */\n function (coordinate) {\n return !linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n coordinate[0],\n coordinate[1]\n );\n }\n );\n return !outside;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n x,\n y\n) {\n // https://geomalgorithms.com/a03-_inclusion.html\n // Copyright 2000 softSurfer, 2012 Dan Sunday\n // This code may be freely used and modified for any purpose\n // providing that this copyright notice is included with it.\n // SoftSurfer makes no warranty for this code, and cannot be held\n // liable for any real or imagined damage resulting from its use.\n // Users of this code must verify correctness for their application.\n let wn = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n if (y1 <= y) {\n if (y2 > y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) > 0) {\n wn++;\n }\n } else if (y2 <= y && (x2 - x1) * (y - y1) - (x - x1) * (y2 - y1) < 0) {\n wn--;\n }\n x1 = x2;\n y1 = y2;\n }\n return wn !== 0;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingsContainsXY(\n flatCoordinates,\n offset,\n ends,\n stride,\n x,\n y\n) {\n if (ends.length === 0) {\n return false;\n }\n if (!linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) {\n return false;\n }\n for (let i = 1, ii = ends.length; i < ii; ++i) {\n if (\n linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)\n ) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {boolean} Contains (x, y).\n */\nexport function linearRingssContainsXY(\n flatCoordinates,\n offset,\n endss,\n stride,\n x,\n y\n) {\n if (endss.length === 0) {\n return false;\n }\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/deflate\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {import(\"../../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinate(flatCoordinates, offset, coordinate, stride) {\n for (let i = 0, ii = coordinate.length; i < ii; ++i) {\n flatCoordinates[offset++] = coordinate[i];\n }\n return offset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} coordinates Coordinates.\n * @param {number} stride Stride.\n * @return {number} offset Offset.\n */\nexport function deflateCoordinates(\n flatCoordinates,\n offset,\n coordinates,\n stride\n) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n const coordinate = coordinates[i];\n for (let j = 0; j < stride; ++j) {\n flatCoordinates[offset++] = coordinate[j];\n }\n }\n return offset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} coordinatess Coordinatess.\n * @param {number} stride Stride.\n * @param {Array} [ends] Ends.\n * @return {Array} Ends.\n */\nexport function deflateCoordinatesArray(\n flatCoordinates,\n offset,\n coordinatess,\n stride,\n ends\n) {\n ends = ends ? ends : [];\n let i = 0;\n for (let j = 0, jj = coordinatess.length; j < jj; ++j) {\n const end = deflateCoordinates(\n flatCoordinates,\n offset,\n coordinatess[j],\n stride\n );\n ends[i++] = end;\n offset = end;\n }\n ends.length = i;\n return ends;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>>} coordinatesss Coordinatesss.\n * @param {number} stride Stride.\n * @param {Array>} [endss] Endss.\n * @return {Array>} Endss.\n */\nexport function deflateMultiCoordinatesArray(\n flatCoordinates,\n offset,\n coordinatesss,\n stride,\n endss\n) {\n endss = endss ? endss : [];\n let i = 0;\n for (let j = 0, jj = coordinatesss.length; j < jj; ++j) {\n const ends = deflateCoordinatesArray(\n flatCoordinates,\n offset,\n coordinatesss[j],\n stride,\n endss[i]\n );\n if (ends.length === 0) {\n ends[0] = offset;\n }\n endss[i++] = ends;\n offset = ends[ends.length - 1];\n }\n endss.length = i;\n return endss;\n}\n","/**\n * @module ol/geom/flat/inflate\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Array} [coordinates] Coordinates.\n * @return {Array} Coordinates.\n */\nexport function inflateCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n coordinates\n) {\n coordinates = coordinates !== undefined ? coordinates : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n coordinates[i++] = flatCoordinates.slice(j, j + stride);\n }\n coordinates.length = i;\n return coordinates;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array>} [coordinatess] Coordinatess.\n * @return {Array>} Coordinatess.\n */\nexport function inflateCoordinatesArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n coordinatess\n) {\n coordinatess = coordinatess !== undefined ? coordinatess : [];\n let i = 0;\n for (let j = 0, jj = ends.length; j < jj; ++j) {\n const end = ends[j];\n coordinatess[i++] = inflateCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n coordinatess[i]\n );\n offset = end;\n }\n coordinatess.length = i;\n return coordinatess;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array>>} [coordinatesss]\n * Coordinatesss.\n * @return {Array>>} Coordinatesss.\n */\nexport function inflateMultiCoordinatesArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n coordinatesss\n) {\n coordinatesss = coordinatesss !== undefined ? coordinatesss : [];\n let i = 0;\n for (let j = 0, jj = endss.length; j < jj; ++j) {\n const ends = endss[j];\n coordinatesss[i++] =\n ends.length === 1 && ends[0] === offset\n ? []\n : inflateCoordinatesArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n coordinatesss[i]\n );\n offset = ends[ends.length - 1];\n }\n coordinatesss.length = i;\n return coordinatesss;\n}\n","/**\n * @module ol/geom/flat/interiorpoint\n */\nimport {ascending} from '../../array.js';\nimport {linearRingsContainsXY} from './contains.js';\n\n/**\n * Calculates a point that is likely to lie in the interior of the linear rings.\n * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @param {number} flatCentersOffset Flat center offset.\n * @param {Array} [dest] Destination.\n * @return {Array} Destination point as XYM coordinate, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointOfArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n flatCenters,\n flatCentersOffset,\n dest\n) {\n let i, ii, x, x1, x2, y1, y2;\n const y = flatCenters[flatCentersOffset + 1];\n /** @type {Array} */\n const intersections = [];\n // Calculate intersections with the horizontal line\n for (let r = 0, rr = ends.length; r < rr; ++r) {\n const end = ends[r];\n x1 = flatCoordinates[end - stride];\n y1 = flatCoordinates[end - stride + 1];\n for (i = offset; i < end; i += stride) {\n x2 = flatCoordinates[i];\n y2 = flatCoordinates[i + 1];\n if ((y <= y1 && y2 <= y) || (y1 <= y && y <= y2)) {\n x = ((y - y1) / (y2 - y1)) * (x2 - x1) + x1;\n intersections.push(x);\n }\n x1 = x2;\n y1 = y2;\n }\n }\n // Find the longest segment of the horizontal line that has its center point\n // inside the linear ring.\n let pointX = NaN;\n let maxSegmentLength = -Infinity;\n intersections.sort(ascending);\n x1 = intersections[0];\n for (i = 1, ii = intersections.length; i < ii; ++i) {\n x2 = intersections[i];\n const segmentLength = Math.abs(x2 - x1);\n if (segmentLength > maxSegmentLength) {\n x = (x1 + x2) / 2;\n if (linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) {\n pointX = x;\n maxSegmentLength = segmentLength;\n }\n }\n x1 = x2;\n }\n if (isNaN(pointX)) {\n // There is no horizontal line that has its center point inside the linear\n // ring. Use the center of the the linear ring's extent.\n pointX = flatCenters[flatCentersOffset];\n }\n if (dest) {\n dest.push(pointX, y, maxSegmentLength);\n return dest;\n }\n return [pointX, y, maxSegmentLength];\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {Array} flatCenters Flat centers.\n * @return {Array} Interior points as XYM coordinates, where M is the\n * length of the horizontal intersection that the point belongs to.\n */\nexport function getInteriorPointsOfMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n flatCenters\n) {\n let interiorPoints = [];\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n interiorPoints = getInteriorPointOfArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n flatCenters,\n 2 * i,\n interiorPoints\n );\n offset = ends[ends.length - 1];\n }\n return interiorPoints;\n}\n","/**\n * @module ol/geom/flat/intersectsextent\n */\nimport {\n containsExtent,\n createEmpty,\n extendFlatCoordinates,\n intersects,\n intersectsSegment,\n} from '../../extent.js';\nimport {forEach as forEachSegment} from './segments.js';\nimport {linearRingContainsExtent, linearRingContainsXY} from './contains.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineString(\n flatCoordinates,\n offset,\n end,\n stride,\n extent\n) {\n const coordinatesExtent = extendFlatCoordinates(\n createEmpty(),\n flatCoordinates,\n offset,\n end,\n stride\n );\n if (!intersects(extent, coordinatesExtent)) {\n return false;\n }\n if (containsExtent(extent, coordinatesExtent)) {\n return true;\n }\n if (coordinatesExtent[0] >= extent[0] && coordinatesExtent[2] <= extent[2]) {\n return true;\n }\n if (coordinatesExtent[1] >= extent[1] && coordinatesExtent[3] <= extent[3]) {\n return true;\n }\n return forEachSegment(\n flatCoordinates,\n offset,\n end,\n stride,\n /**\n * @param {import(\"../../coordinate.js\").Coordinate} point1 Start point.\n * @param {import(\"../../coordinate.js\").Coordinate} point2 End point.\n * @return {boolean} `true` if the segment and the extent intersect,\n * `false` otherwise.\n */\n function (point1, point2) {\n return intersectsSegment(extent, point1, point2);\n }\n );\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLineStringArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n extent\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n if (\n intersectsLineString(flatCoordinates, offset, ends[i], stride, extent)\n ) {\n return true;\n }\n offset = ends[i];\n }\n return false;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRing(\n flatCoordinates,\n offset,\n end,\n stride,\n extent\n) {\n if (intersectsLineString(flatCoordinates, offset, end, stride, extent)) {\n return true;\n }\n if (\n linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n extent[0],\n extent[1]\n )\n ) {\n return true;\n }\n if (\n linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n extent[0],\n extent[3]\n )\n ) {\n return true;\n }\n if (\n linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n extent[2],\n extent[1]\n )\n ) {\n return true;\n }\n if (\n linearRingContainsXY(\n flatCoordinates,\n offset,\n end,\n stride,\n extent[2],\n extent[3]\n )\n ) {\n return true;\n }\n return false;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n extent\n) {\n if (!intersectsLinearRing(flatCoordinates, offset, ends[0], stride, extent)) {\n return false;\n }\n if (ends.length === 1) {\n return true;\n }\n for (let i = 1, ii = ends.length; i < ii; ++i) {\n if (\n linearRingContainsExtent(\n flatCoordinates,\n ends[i - 1],\n ends[i],\n stride,\n extent\n )\n ) {\n if (\n !intersectsLineString(\n flatCoordinates,\n ends[i - 1],\n ends[i],\n stride,\n extent\n )\n ) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @return {boolean} True if the geometry and the extent intersect.\n */\nexport function intersectsLinearRingMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n extent\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (\n intersectsLinearRingArray(flatCoordinates, offset, ends, stride, extent)\n ) {\n return true;\n }\n offset = ends[ends.length - 1];\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/length\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Length.\n */\nexport function lineStringLength(flatCoordinates, offset, end, stride) {\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n let length = 0;\n for (let i = offset + stride; i < end; i += stride) {\n const x2 = flatCoordinates[i];\n const y2 = flatCoordinates[i + 1];\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n x1 = x2;\n y1 = y2;\n }\n return length;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {number} Perimeter.\n */\nexport function linearRingLength(flatCoordinates, offset, end, stride) {\n let perimeter = lineStringLength(flatCoordinates, offset, end, stride);\n const dx = flatCoordinates[end - stride] - flatCoordinates[offset];\n const dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1];\n perimeter += Math.sqrt(dx * dx + dy * dy);\n return perimeter;\n}\n","/**\n * @module ol/geom/flat/reverse\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n */\nexport function coordinates(flatCoordinates, offset, end, stride) {\n while (offset < end - stride) {\n for (let i = 0; i < stride; ++i) {\n const tmp = flatCoordinates[offset + i];\n flatCoordinates[offset + i] = flatCoordinates[end - stride + i];\n flatCoordinates[end - stride + i] = tmp;\n }\n offset += stride;\n end -= stride;\n }\n}\n","/**\n * @module ol/geom/flat/orient\n */\nimport {coordinates as reverseCoordinates} from './reverse.js';\n\n/**\n * Is the linear ring oriented clockwise in a coordinate system with a bottom-left\n * coordinate origin? For a coordinate system with a top-left coordinate origin,\n * the ring's orientation is clockwise when this function returns false.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {boolean} Is clockwise.\n */\nexport function linearRingIsClockwise(flatCoordinates, offset, end, stride) {\n // https://stackoverflow.com/q/1165647/clockwise-method#1165943\n // https://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogrlinearring.cpp\n let edge = 0;\n let x1 = flatCoordinates[end - stride];\n let y1 = flatCoordinates[end - stride + 1];\n for (; offset < end; offset += stride) {\n const x2 = flatCoordinates[offset];\n const y2 = flatCoordinates[offset + 1];\n edge += (x2 - x1) * (y2 + y1);\n x1 = x2;\n y1 = y2;\n }\n return edge === 0 ? undefined : edge > 0;\n}\n\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingsAreOriented(\n flatCoordinates,\n offset,\n ends,\n stride,\n right\n) {\n right = right !== undefined ? right : false;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const isClockwise = linearRingIsClockwise(\n flatCoordinates,\n offset,\n end,\n stride\n );\n if (i === 0) {\n if ((right && isClockwise) || (!right && !isClockwise)) {\n return false;\n }\n } else {\n if ((right && !isClockwise) || (!right && isClockwise)) {\n return false;\n }\n }\n offset = end;\n }\n return true;\n}\n\n/**\n * Determines if linear rings are oriented. By default, left-hand orientation\n * is tested (first ring must be clockwise, remaining rings counter-clockwise).\n * To test for right-hand orientation, use the `right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Test for right-hand orientation\n * (counter-clockwise exterior ring and clockwise interior rings).\n * @return {boolean} Rings are correctly oriented.\n */\nexport function linearRingssAreOriented(\n flatCoordinates,\n offset,\n endss,\n stride,\n right\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n if (!linearRingsAreOriented(flatCoordinates, offset, ends, stride, right)) {\n return false;\n }\n if (ends.length) {\n offset = ends[ends.length - 1];\n }\n }\n return true;\n}\n\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {boolean} [right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRings(\n flatCoordinates,\n offset,\n ends,\n stride,\n right\n) {\n right = right !== undefined ? right : false;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n const isClockwise = linearRingIsClockwise(\n flatCoordinates,\n offset,\n end,\n stride\n );\n const reverse =\n i === 0\n ? (right && isClockwise) || (!right && !isClockwise)\n : (right && !isClockwise) || (!right && isClockwise);\n if (reverse) {\n reverseCoordinates(flatCoordinates, offset, end, stride);\n }\n offset = end;\n }\n return offset;\n}\n\n/**\n * Orient coordinates in a flat array of linear rings. By default, rings\n * are oriented following the left-hand rule (clockwise for exterior and\n * counter-clockwise for interior rings). To orient according to the\n * right-hand rule, use the `right` argument.\n *\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Array of array of end indexes.\n * @param {number} stride Stride.\n * @param {boolean} [right] Follow the right-hand rule for orientation.\n * @return {number} End.\n */\nexport function orientLinearRingsArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n right\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n offset = orientLinearRings(\n flatCoordinates,\n offset,\n endss[i],\n stride,\n right\n );\n }\n return offset;\n}\n\n/**\n * Return a two-dimensional endss\n * @param {Array} flatCoordinates Flat coordinates\n * @param {Array} ends Linear ring end indexes\n * @return {Array>} Two dimensional endss array that can\n * be used to construct a MultiPolygon\n */\nexport function inflateEnds(flatCoordinates, ends) {\n const endss = [];\n let offset = 0;\n let prevEndIndex = 0;\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n // classifies an array of rings into polygons with outer rings and holes\n if (!linearRingIsClockwise(flatCoordinates, offset, end, 2)) {\n endss.push(ends.slice(prevEndIndex, i + 1));\n } else {\n if (endss.length === 0) {\n continue;\n }\n endss[endss.length - 1].push(ends[prevEndIndex]);\n }\n prevEndIndex = i + 1;\n offset = end;\n }\n return endss;\n}\n","/**\n * @module ol/geom/flat/segments\n */\n\n/**\n * This function calls `callback` for each segment of the flat coordinates\n * array. If the callback returns a truthy value the function returns that\n * value immediately. Otherwise the function returns `false`.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {function(import(\"../../coordinate.js\").Coordinate, import(\"../../coordinate.js\").Coordinate): T} callback Function\n * called for each segment.\n * @return {T|boolean} Value.\n * @template T\n */\nexport function forEach(flatCoordinates, offset, end, stride, callback) {\n let ret;\n offset += stride;\n for (; offset < end; offset += stride) {\n ret = callback(\n flatCoordinates.slice(offset - stride, offset),\n flatCoordinates.slice(offset, offset + stride)\n );\n if (ret) {\n return ret;\n }\n }\n return false;\n}\n","/**\n * @module ol/geom/flat/simplify\n */\n// Based on simplify-js https://github.com/mourner/simplify-js\n// Copyright (c) 2012, Vladimir Agafonkin\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//\n// 1. Redistributions of source code must retain the above copyright notice,\n// this list of conditions and the following disclaimer.\n//\n// 2. 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//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\n\nimport {squaredDistance, squaredSegmentDistance} from '../../math.js';\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {boolean} highQuality Highest quality.\n * @param {Array} [simplifiedFlatCoordinates] Simplified flat\n * coordinates.\n * @return {Array} Simplified line string.\n */\nexport function simplifyLineString(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n highQuality,\n simplifiedFlatCoordinates\n) {\n simplifiedFlatCoordinates =\n simplifiedFlatCoordinates !== undefined ? simplifiedFlatCoordinates : [];\n if (!highQuality) {\n end = radialDistance(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n flatCoordinates = simplifiedFlatCoordinates;\n offset = 0;\n stride = 2;\n }\n simplifiedFlatCoordinates.length = douglasPeucker(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n 0\n );\n return simplifiedFlatCoordinates;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function douglasPeucker(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n) {\n const n = (end - offset) / stride;\n if (n < 3) {\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n /** @type {Array} */\n const markers = new Array(n);\n markers[0] = 1;\n markers[n - 1] = 1;\n /** @type {Array} */\n const stack = [offset, end - stride];\n let index = 0;\n while (stack.length > 0) {\n const last = stack.pop();\n const first = stack.pop();\n let maxSquaredDistance = 0;\n const x1 = flatCoordinates[first];\n const y1 = flatCoordinates[first + 1];\n const x2 = flatCoordinates[last];\n const y2 = flatCoordinates[last + 1];\n for (let i = first + stride; i < last; i += stride) {\n const x = flatCoordinates[i];\n const y = flatCoordinates[i + 1];\n const squaredDistance = squaredSegmentDistance(x, y, x1, y1, x2, y2);\n if (squaredDistance > maxSquaredDistance) {\n index = i;\n maxSquaredDistance = squaredDistance;\n }\n }\n if (maxSquaredDistance > squaredTolerance) {\n markers[(index - offset) / stride] = 1;\n if (first + stride < index) {\n stack.push(first, index);\n }\n if (index + stride < last) {\n stack.push(index, last);\n }\n }\n }\n for (let i = 0; i < n; ++i) {\n if (markers[i]) {\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + i * stride + 1];\n }\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = douglasPeucker(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n );\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function douglasPeuckerMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEndss\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n const simplifiedEnds = [];\n simplifiedOffset = douglasPeuckerArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n );\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} squaredTolerance Squared tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function radialDistance(\n flatCoordinates,\n offset,\n end,\n stride,\n squaredTolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n) {\n if (end <= offset + stride) {\n // zero or one point, no simplification possible, so copy and return\n for (; offset < end; offset += stride) {\n simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset];\n simplifiedFlatCoordinates[simplifiedOffset++] =\n flatCoordinates[offset + 1];\n }\n return simplifiedOffset;\n }\n let x1 = flatCoordinates[offset];\n let y1 = flatCoordinates[offset + 1];\n // copy first point\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n let x2 = x1;\n let y2 = y1;\n for (offset += stride; offset < end; offset += stride) {\n x2 = flatCoordinates[offset];\n y2 = flatCoordinates[offset + 1];\n if (squaredDistance(x1, y1, x2, y2) > squaredTolerance) {\n // copy point at offset\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n }\n }\n if (x2 != x1 || y2 != y1) {\n // copy last point\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {number} value Value.\n * @param {number} tolerance Tolerance.\n * @return {number} Rounded value.\n */\nexport function snap(value, tolerance) {\n return tolerance * Math.round(value / tolerance);\n}\n\n/**\n * Simplifies a line string using an algorithm designed by Tim Schaub.\n * Coordinates are snapped to the nearest value in a virtual grid and\n * consecutive duplicate coordinates are discarded. This effectively preserves\n * topology as the simplification of any subsection of a line string is\n * independent of the rest of the line string. This means that, for examples,\n * the common edge between two polygons will be simplified to the same line\n * string independently in both polygons. This implementation uses a single\n * pass over the coordinates and eliminates intermediate collinear points.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @return {number} Simplified offset.\n */\nexport function quantize(\n flatCoordinates,\n offset,\n end,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n) {\n // do nothing if the line is empty\n if (offset == end) {\n return simplifiedOffset;\n }\n // snap the first coordinate (P1)\n let x1 = snap(flatCoordinates[offset], tolerance);\n let y1 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // add the first coordinate to the output\n simplifiedFlatCoordinates[simplifiedOffset++] = x1;\n simplifiedFlatCoordinates[simplifiedOffset++] = y1;\n // find the next coordinate that does not snap to the same value as the first\n // coordinate (P2)\n let x2, y2;\n do {\n x2 = snap(flatCoordinates[offset], tolerance);\n y2 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n if (offset == end) {\n // all coordinates snap to the same value, the line collapses to a point\n // push the last snapped value anyway to ensure that the output contains\n // at least two points\n // FIXME should we really return at least two points anyway?\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n }\n } while (x2 == x1 && y2 == y1);\n while (offset < end) {\n // snap the next coordinate (P3)\n const x3 = snap(flatCoordinates[offset], tolerance);\n const y3 = snap(flatCoordinates[offset + 1], tolerance);\n offset += stride;\n // skip P3 if it is equal to P2\n if (x3 == x2 && y3 == y2) {\n continue;\n }\n // calculate the delta between P1 and P2\n const dx1 = x2 - x1;\n const dy1 = y2 - y1;\n // calculate the delta between P3 and P1\n const dx2 = x3 - x1;\n const dy2 = y3 - y1;\n // if P1, P2, and P3 are colinear and P3 is further from P1 than P2 is from\n // P1 in the same direction then P2 is on the straight line between P1 and\n // P3\n if (\n dx1 * dy2 == dy1 * dx2 &&\n ((dx1 < 0 && dx2 < dx1) || dx1 == dx2 || (dx1 > 0 && dx2 > dx1)) &&\n ((dy1 < 0 && dy2 < dy1) || dy1 == dy2 || (dy1 > 0 && dy2 > dy1))\n ) {\n // discard P2 and set P2 = P3\n x2 = x3;\n y2 = y3;\n continue;\n }\n // either P1, P2, and P3 are not colinear, or they are colinear but P3 is\n // between P3 and P1 or on the opposite half of the line to P2. add P2,\n // and continue with P1 = P2 and P2 = P3\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n x1 = x2;\n y1 = y2;\n x2 = x3;\n y2 = y3;\n }\n // add the last point (P2)\n simplifiedFlatCoordinates[simplifiedOffset++] = x2;\n simplifiedFlatCoordinates[simplifiedOffset++] = y2;\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array} ends Ends.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array} simplifiedEnds Simplified ends.\n * @return {number} Simplified offset.\n */\nexport function quantizeArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n) {\n for (let i = 0, ii = ends.length; i < ii; ++i) {\n const end = ends[i];\n simplifiedOffset = quantize(\n flatCoordinates,\n offset,\n end,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset\n );\n simplifiedEnds.push(simplifiedOffset);\n offset = end;\n }\n return simplifiedOffset;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {Array>} endss Endss.\n * @param {number} stride Stride.\n * @param {number} tolerance Tolerance.\n * @param {Array} simplifiedFlatCoordinates Simplified flat\n * coordinates.\n * @param {number} simplifiedOffset Simplified offset.\n * @param {Array>} simplifiedEndss Simplified endss.\n * @return {number} Simplified offset.\n */\nexport function quantizeMultiArray(\n flatCoordinates,\n offset,\n endss,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEndss\n) {\n for (let i = 0, ii = endss.length; i < ii; ++i) {\n const ends = endss[i];\n const simplifiedEnds = [];\n simplifiedOffset = quantizeArray(\n flatCoordinates,\n offset,\n ends,\n stride,\n tolerance,\n simplifiedFlatCoordinates,\n simplifiedOffset,\n simplifiedEnds\n );\n simplifiedEndss.push(simplifiedEnds);\n offset = ends[ends.length - 1];\n }\n return simplifiedOffset;\n}\n","/**\n * @module ol/geom/flat/transform\n */\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {import(\"../../transform.js\").Transform} transform Transform.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function transform2D(\n flatCoordinates,\n offset,\n end,\n stride,\n transform,\n dest\n) {\n dest = dest ? dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const x = flatCoordinates[j];\n const y = flatCoordinates[j + 1];\n dest[i++] = transform[0] * x + transform[2] * y + transform[4];\n dest[i++] = transform[1] * x + transform[3] * y + transform[5];\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} angle Angle.\n * @param {Array} anchor Rotation anchor point.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function rotate(\n flatCoordinates,\n offset,\n end,\n stride,\n angle,\n anchor,\n dest\n) {\n dest = dest ? dest : [];\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + deltaX * cos - deltaY * sin;\n dest[i++] = anchorY + deltaX * sin + deltaY * cos;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n/**\n * Scale the coordinates.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} sx Scale factor in the x-direction.\n * @param {number} sy Scale factor in the y-direction.\n * @param {Array} anchor Scale anchor point.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function scale(\n flatCoordinates,\n offset,\n end,\n stride,\n sx,\n sy,\n anchor,\n dest\n) {\n dest = dest ? dest : [];\n const anchorX = anchor[0];\n const anchorY = anchor[1];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n const deltaX = flatCoordinates[j] - anchorX;\n const deltaY = flatCoordinates[j + 1] - anchorY;\n dest[i++] = anchorX + sx * deltaX;\n dest[i++] = anchorY + sy * deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {number} deltaX Delta X.\n * @param {number} deltaY Delta Y.\n * @param {Array} [dest] Destination.\n * @return {Array} Transformed coordinates.\n */\nexport function translate(\n flatCoordinates,\n offset,\n end,\n stride,\n deltaX,\n deltaY,\n dest\n) {\n dest = dest ? dest : [];\n let i = 0;\n for (let j = offset; j < end; j += stride) {\n dest[i++] = flatCoordinates[j] + deltaX;\n dest[i++] = flatCoordinates[j + 1] + deltaY;\n for (let k = j + 2; k < j + stride; ++k) {\n dest[i++] = flatCoordinates[k];\n }\n }\n if (dest && dest.length != i) {\n dest.length = i;\n }\n return dest;\n}\n","/**\n * @module ol/has\n */\n\nconst ua =\n typeof navigator !== 'undefined' && typeof navigator.userAgent !== 'undefined'\n ? navigator.userAgent.toLowerCase()\n : '';\n\n/**\n * User agent string says we are dealing with Firefox as browser.\n * @type {boolean}\n */\nexport const FIREFOX = ua.includes('firefox');\n\n/**\n * User agent string says we are dealing with Safari as browser.\n * @type {boolean}\n */\nexport const SAFARI = ua.includes('safari') && !ua.includes('chrom');\n\n/**\n * https://bugs.webkit.org/show_bug.cgi?id=237906\n * @type {boolean}\n */\nexport const SAFARI_BUG_237906 =\n SAFARI &&\n (ua.includes('version/15.4') ||\n /cpu (os|iphone os) 15_4 like mac os x/.test(ua));\n\n/**\n * User agent string says we are dealing with a WebKit engine.\n * @type {boolean}\n */\nexport const WEBKIT = ua.includes('webkit') && !ua.includes('edge');\n\n/**\n * User agent string says we are dealing with a Mac as platform.\n * @type {boolean}\n */\nexport const MAC = ua.includes('macintosh');\n\n/**\n * The ratio between physical pixels and device-independent pixels\n * (dips) on the device (`window.devicePixelRatio`).\n * @const\n * @type {number}\n * @api\n */\nexport const DEVICE_PIXEL_RATIO =\n typeof devicePixelRatio !== 'undefined' ? devicePixelRatio : 1;\n\n/**\n * The execution context is a worker with OffscreenCanvas available.\n * @const\n * @type {boolean}\n */\nexport const WORKER_OFFSCREEN_CANVAS =\n typeof WorkerGlobalScope !== 'undefined' &&\n typeof OffscreenCanvas !== 'undefined' &&\n self instanceof WorkerGlobalScope; //eslint-disable-line\n\n/**\n * Image.prototype.decode() is supported.\n * @type {boolean}\n */\nexport const IMAGE_DECODE =\n typeof Image !== 'undefined' && Image.prototype.decode;\n\n/**\n * @type {boolean}\n */\nexport const PASSIVE_EVENT_LISTENERS = (function () {\n let passive = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get: function () {\n passive = true;\n },\n });\n\n window.addEventListener('_', null, options);\n window.removeEventListener('_', null, options);\n } catch (error) {\n // passive not supported\n }\n return passive;\n})();\n","/**\n * @module ol/interaction/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active',\n};\n","/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport InteractionProperty from './Property.js';\nimport {easeOut, linear} from '../easing.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} InteractionOnSignature\n */\n\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nclass Interaction extends BaseObject {\n /**\n * @param {InteractionOptions} [options] Options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {InteractionOnSignature}\n */\n this.on;\n\n /***\n * @type {InteractionOnSignature}\n */\n this.once;\n\n /***\n * @type {InteractionOnSignature}\n */\n this.un;\n\n if (options && options.handleEvent) {\n this.handleEvent = options.handleEvent;\n }\n\n /**\n * @private\n * @type {import(\"../Map.js\").default|null}\n */\n this.map_ = null;\n\n this.setActive(true);\n }\n\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n getActive() {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n }\n\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../Map.js\").default|null} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n handleEvent(mapBrowserEvent) {\n return true;\n }\n\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n setActive(active) {\n this.set(InteractionProperty.ACTIVE, active);\n }\n\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n */\n setMap(map) {\n this.map_ = map;\n }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number} [duration] Duration.\n */\nexport function pan(view, delta, duration) {\n const currentCenter = view.getCenterInternal();\n if (currentCenter) {\n const center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: duration !== undefined ? duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center),\n });\n }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate} [anchor] Anchor coordinate in the user projection.\n * @param {number} [duration] Duration.\n */\nexport function zoomByDelta(view, delta, anchor, duration) {\n const currentZoom = view.getZoom();\n\n if (currentZoom === undefined) {\n return;\n }\n\n const newZoom = view.getConstrainedZoom(currentZoom + delta);\n const newResolution = view.getResolutionForZoom(newZoom);\n\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: anchor,\n duration: duration !== undefined ? duration : 250,\n easing: easeOut,\n });\n}\n\nexport default Interaction;\n","/**\n * @module ol/interaction/Select\n */\nimport Collection from '../Collection.js';\nimport CollectionEventType from '../CollectionEventType.js';\nimport Event from '../events/Event.js';\nimport Feature from '../Feature.js';\nimport Interaction from './Interaction.js';\nimport VectorLayer from '../layer/Vector.js';\nimport {TRUE} from '../functions.js';\nimport {clear} from '../obj.js';\nimport {createEditingStyle} from '../style/Style.js';\nimport {extend} from '../array.js';\nimport {getUid} from '../util.js';\nimport {never, shiftKeyOnly, singleClick} from '../events/condition.js';\n\n/**\n * @enum {string}\n */\nconst SelectEventType = {\n /**\n * Triggered when feature(s) has been (de)selected.\n * @event SelectEvent#select\n * @api\n */\n SELECT: 'select',\n};\n\n/**\n * A function that takes an {@link module:ol/Feature~Feature} and returns `true` if the feature may be\n * selected or `false` otherwise.\n * @typedef {function(import(\"../Feature.js\").default, import(\"../layer/Layer.js\").default):boolean} FilterFunction\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../events/condition.js\").Condition} [addCondition] A function\n * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * By default, this is {@link module:ol/events/condition.never}. Use this if you\n * want to use different events for add and remove instead of `toggle`.\n * @property {import(\"../events/condition.js\").Condition} [condition] A function that\n * takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. This is the event\n * for the selected features as a whole. By default, this is\n * {@link module:ol/events/condition.singleClick}. Clicking on a feature selects that\n * feature and removes any that were in the selection. Clicking outside any\n * feature removes all from the selection.\n * See `toggle`, `add`, `remove` options for adding/removing extra features to/\n * from the selection.\n * @property {Array|function(import(\"../layer/Layer.js\").default): boolean} [layers]\n * A list of layers from which features should be selected. Alternatively, a\n * filter function can be provided. The function will be called for each layer\n * in the map and should return `true` for layers that you want to be\n * selectable. If the option is absent, all visible layers will be considered\n * selectable.\n * @property {import(\"../style/Style.js\").StyleLike|null} [style]\n * Style for the selected features. By default the default edit style is used\n * (see {@link module:ol/style/Style~Style}). Set to `null` if this interaction should not apply\n * any style changes for selected features.\n * If set to a falsey value, the selected feature's style will not change.\n * @property {import(\"../events/condition.js\").Condition} [removeCondition] A function\n * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled.\n * By default, this is {@link module:ol/events/condition.never}. Use this if you\n * want to use different events for add and remove instead of `toggle`.\n * @property {import(\"../events/condition.js\").Condition} [toggleCondition] A function\n * that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * boolean to indicate whether that event should be handled. This is in addition\n * to the `condition` event. By default,\n * {@link module:ol/events/condition.shiftKeyOnly}, i.e. pressing `shift` as\n * well as the `condition` event, adds that feature to the current selection if\n * it is not currently selected, and removes it if it is. See `add` and `remove`\n * if you want to use different events instead of a toggle.\n * @property {boolean} [multi=false] A boolean that determines if the default\n * behaviour should select only single features or all (overlapping) features at\n * the clicked map position. The default of `false` means single select.\n * @property {Collection} [features]\n * Collection where the interaction will place selected features. Optional. If\n * not set the interaction will create a collection. In any case the collection\n * used by the interaction is returned by\n * {@link module:ol/interaction/Select~Select#getFeatures}.\n * @property {FilterFunction} [filter] A function\n * that takes an {@link module:ol/Feature~Feature} and an\n * {@link module:ol/layer/Layer~Layer} and returns `true` if the feature may be\n * selected or `false` otherwise.\n * @property {number} [hitTolerance=0] Hit-detection tolerance. Pixels inside\n * the radius around the given position will be checked for features.\n */\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/interaction/Select~Select} instances are instances of\n * this type.\n */\nexport class SelectEvent extends Event {\n /**\n * @param {SelectEventType} type The event type.\n * @param {Array} selected Selected features.\n * @param {Array} deselected Deselected features.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Associated\n * {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n */\n constructor(type, selected, deselected, mapBrowserEvent) {\n super(type);\n\n /**\n * Selected features array.\n * @type {Array}\n * @api\n */\n this.selected = selected;\n\n /**\n * Deselected features array.\n * @type {Array}\n * @api\n */\n this.deselected = deselected;\n\n /**\n * Associated {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @type {import(\"../MapBrowserEvent.js\").default}\n * @api\n */\n this.mapBrowserEvent = mapBrowserEvent;\n }\n}\n\n/**\n * Original feature styles to reset to when features are no longer selected.\n * @type {Object|import(\"../style/Style.js\").StyleFunction>}\n */\nconst originalFeatureStyles = {};\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature<'select', SelectEvent, Return> &\n * import(\"../Observable\").CombinedOnSignature} SelectOnSignature\n */\n\n/**\n * @classdesc\n * Interaction for selecting vector features. By default, selected features are\n * styled differently, so this interaction can be used for visual highlighting,\n * as well as selecting features for other actions, such as modification or\n * output. There are three ways of controlling which features are selected:\n * using the browser event as defined by the `condition` and optionally the\n * `toggle`, `add`/`remove`, and `multi` options; a `layers` filter; and a\n * further feature filter using the `filter` option.\n *\n * @fires SelectEvent\n * @api\n */\nclass Select extends Interaction {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {SelectOnSignature}\n */\n this.on;\n\n /***\n * @type {SelectOnSignature}\n */\n this.once;\n\n /***\n * @type {SelectOnSignature}\n */\n this.un;\n\n options = options ? options : {};\n\n /**\n * @private\n */\n this.boundAddFeature_ = this.addFeature_.bind(this);\n\n /**\n * @private\n */\n this.boundRemoveFeature_ = this.removeFeature_.bind(this);\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.condition_ = options.condition ? options.condition : singleClick;\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.addCondition_ = options.addCondition ? options.addCondition : never;\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.removeCondition_ = options.removeCondition\n ? options.removeCondition\n : never;\n\n /**\n * @private\n * @type {import(\"../events/condition.js\").Condition}\n */\n this.toggleCondition_ = options.toggleCondition\n ? options.toggleCondition\n : shiftKeyOnly;\n\n /**\n * @private\n * @type {boolean}\n */\n this.multi_ = options.multi ? options.multi : false;\n\n /**\n * @private\n * @type {FilterFunction}\n */\n this.filter_ = options.filter ? options.filter : TRUE;\n\n /**\n * @private\n * @type {number}\n */\n this.hitTolerance_ = options.hitTolerance ? options.hitTolerance : 0;\n\n /**\n * @private\n * @type {import(\"../style/Style.js\").default|Array|import(\"../style/Style.js\").StyleFunction|null}\n */\n this.style_ =\n options.style !== undefined ? options.style : getDefaultStyleFunction();\n\n /**\n * @private\n * @type {Collection}\n */\n this.features_ = options.features || new Collection();\n\n /** @type {function(import(\"../layer/Layer.js\").default): boolean} */\n let layerFilter;\n if (options.layers) {\n if (typeof options.layers === 'function') {\n layerFilter = options.layers;\n } else {\n const layers = options.layers;\n layerFilter = function (layer) {\n return layers.includes(layer);\n };\n }\n } else {\n layerFilter = TRUE;\n }\n\n /**\n * @private\n * @type {function(import(\"../layer/Layer.js\").default): boolean}\n */\n this.layerFilter_ = layerFilter;\n\n /**\n * An association between selected feature (key)\n * and layer (value)\n * @private\n * @type {Object}\n */\n this.featureLayerAssociation_ = {};\n }\n\n /**\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @private\n */\n addFeatureLayerAssociation_(feature, layer) {\n this.featureLayerAssociation_[getUid(feature)] = layer;\n }\n\n /**\n * Get the selected features.\n * @return {Collection} Features collection.\n * @api\n */\n getFeatures() {\n return this.features_;\n }\n\n /**\n * Returns the Hit-detection tolerance.\n * @return {number} Hit tolerance in pixels.\n * @api\n */\n getHitTolerance() {\n return this.hitTolerance_;\n }\n\n /**\n * Returns the associated {@link module:ol/layer/Vector~VectorLayer vector layer} of\n * a selected feature.\n * @param {import(\"../Feature.js\").default} feature Feature\n * @return {import('../layer/Vector.js').default} Layer.\n * @api\n */\n getLayer(feature) {\n return /** @type {import('../layer/Vector.js').default} */ (\n this.featureLayerAssociation_[getUid(feature)]\n );\n }\n\n /**\n * Hit-detection tolerance. Pixels inside the radius around the given position\n * will be checked for features.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @api\n */\n setHitTolerance(hitTolerance) {\n this.hitTolerance_ = hitTolerance;\n }\n\n /**\n * Remove the interaction from its current map, if any, and attach it to a new\n * map, if any. Pass `null` to just remove the interaction from the current map.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n const currentMap = this.getMap();\n if (currentMap && this.style_) {\n this.features_.forEach(this.restorePreviousStyle_.bind(this));\n }\n super.setMap(map);\n if (map) {\n this.features_.addEventListener(\n CollectionEventType.ADD,\n this.boundAddFeature_\n );\n this.features_.addEventListener(\n CollectionEventType.REMOVE,\n this.boundRemoveFeature_\n );\n\n if (this.style_) {\n this.features_.forEach(this.applySelectedStyle_.bind(this));\n }\n } else {\n this.features_.removeEventListener(\n CollectionEventType.ADD,\n this.boundAddFeature_\n );\n this.features_.removeEventListener(\n CollectionEventType.REMOVE,\n this.boundRemoveFeature_\n );\n }\n }\n\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} evt Event.\n * @private\n */\n addFeature_(evt) {\n const feature = evt.element;\n if (this.style_) {\n this.applySelectedStyle_(feature);\n }\n if (!this.getLayer(feature)) {\n const layer = /** @type {VectorLayer} */ (\n this.getMap()\n .getAllLayers()\n .find(function (layer) {\n if (\n layer instanceof VectorLayer &&\n layer.getSource() &&\n layer.getSource().hasFeature(feature)\n ) {\n return layer;\n }\n })\n );\n if (layer) {\n this.addFeatureLayerAssociation_(feature, layer);\n }\n }\n }\n\n /**\n * @param {import(\"../Collection.js\").CollectionEvent} evt Event.\n * @private\n */\n removeFeature_(evt) {\n if (this.style_) {\n this.restorePreviousStyle_(evt.element);\n }\n }\n\n /**\n * @return {import(\"../style/Style.js\").StyleLike|null} Select style.\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * @param {Feature} feature Feature\n * @private\n */\n applySelectedStyle_(feature) {\n const key = getUid(feature);\n if (!(key in originalFeatureStyles)) {\n originalFeatureStyles[key] = feature.getStyle();\n }\n feature.setStyle(this.style_);\n }\n\n /**\n * @param {Feature} feature Feature\n * @private\n */\n restorePreviousStyle_(feature) {\n const interactions = this.getMap().getInteractions().getArray();\n for (let i = interactions.length - 1; i >= 0; --i) {\n const interaction = interactions[i];\n if (\n interaction !== this &&\n interaction instanceof Select &&\n interaction.getStyle() &&\n interaction.getFeatures().getArray().lastIndexOf(feature) !== -1\n ) {\n feature.setStyle(interaction.getStyle());\n return;\n }\n }\n\n const key = getUid(feature);\n feature.setStyle(originalFeatureStyles[key]);\n delete originalFeatureStyles[key];\n }\n\n /**\n * @param {Feature} feature Feature.\n * @private\n */\n removeFeatureLayerAssociation_(feature) {\n delete this.featureLayerAssociation_[getUid(feature)];\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may change the\n * selected state of features.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n if (!this.condition_(mapBrowserEvent)) {\n return true;\n }\n const add = this.addCondition_(mapBrowserEvent);\n const remove = this.removeCondition_(mapBrowserEvent);\n const toggle = this.toggleCondition_(mapBrowserEvent);\n const set = !add && !remove && !toggle;\n const map = mapBrowserEvent.map;\n const features = this.getFeatures();\n\n /**\n * @type {Array}\n */\n const deselected = [];\n\n /**\n * @type {Array}\n */\n const selected = [];\n\n if (set) {\n // Replace the currently selected feature(s) with the feature(s) at the\n // pixel, or clear the selected feature(s) if there is no feature at\n // the pixel.\n clear(this.featureLayerAssociation_);\n map.forEachFeatureAtPixel(\n mapBrowserEvent.pixel,\n /**\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @return {boolean|undefined} Continue to iterate over the features.\n */\n (feature, layer) => {\n if (!(feature instanceof Feature) || !this.filter_(feature, layer)) {\n return;\n }\n this.addFeatureLayerAssociation_(feature, layer);\n selected.push(feature);\n return !this.multi_;\n },\n {\n layerFilter: this.layerFilter_,\n hitTolerance: this.hitTolerance_,\n }\n );\n for (let i = features.getLength() - 1; i >= 0; --i) {\n const feature = features.item(i);\n const index = selected.indexOf(feature);\n if (index > -1) {\n // feature is already selected\n selected.splice(index, 1);\n } else {\n features.remove(feature);\n deselected.push(feature);\n }\n }\n if (selected.length !== 0) {\n features.extend(selected);\n }\n } else {\n // Modify the currently selected feature(s).\n map.forEachFeatureAtPixel(\n mapBrowserEvent.pixel,\n /**\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @return {boolean|undefined} Continue to iterate over the features.\n */\n (feature, layer) => {\n if (!(feature instanceof Feature) || !this.filter_(feature, layer)) {\n return;\n }\n if ((add || toggle) && !features.getArray().includes(feature)) {\n this.addFeatureLayerAssociation_(feature, layer);\n selected.push(feature);\n } else if (\n (remove || toggle) &&\n features.getArray().includes(feature)\n ) {\n deselected.push(feature);\n this.removeFeatureLayerAssociation_(feature);\n }\n return !this.multi_;\n },\n {\n layerFilter: this.layerFilter_,\n hitTolerance: this.hitTolerance_,\n }\n );\n for (let j = deselected.length - 1; j >= 0; --j) {\n features.remove(deselected[j]);\n }\n features.extend(selected);\n }\n if (selected.length > 0 || deselected.length > 0) {\n this.dispatchEvent(\n new SelectEvent(\n SelectEventType.SELECT,\n selected,\n deselected,\n mapBrowserEvent\n )\n );\n }\n return true;\n }\n}\n\n/**\n * @return {import(\"../style/Style.js\").StyleFunction} Styles.\n */\nfunction getDefaultStyleFunction() {\n const styles = createEditingStyle();\n extend(styles['Polygon'], styles['LineString']);\n extend(styles['GeometryCollection'], styles['LineString']);\n\n return function (feature) {\n if (!feature.getGeometry()) {\n return null;\n }\n return styles[feature.getGeometry().getType()];\n };\n}\n\nexport default Select;\n","/**\n * @module ol/layer/Base\n */\nimport BaseObject from '../Object.js';\nimport LayerProperty from './Property.js';\nimport {abstract} from '../util.js';\nimport {assert} from '../asserts.js';\nimport {clamp} from '../math.js';\n\n/**\n * A css color, or a function called with a view resolution returning a css color.\n *\n * @typedef {string|function(number):string} BackgroundColor\n * @api\n */\n\n/**\n * @typedef {import(\"../ObjectEventType\").Types|'change:extent'|'change:maxResolution'|'change:maxZoom'|\n * 'change:minResolution'|'change:minZoom'|'change:opacity'|'change:visible'|'change:zIndex'} BaseLayerObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} BaseLayerOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Note that with {@link module:ol/layer/Base~BaseLayer} and all its subclasses, any property set in\n * the options is set as a {@link module:ol/Object~BaseObject} property on the layer object, so\n * is observable, and has get/set accessors.\n *\n * @api\n */\nclass BaseLayer extends BaseObject {\n /**\n * @param {Options} options Layer options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {BaseLayerOnSignature}\n */\n this.on;\n\n /***\n * @type {BaseLayerOnSignature}\n */\n this.once;\n\n /***\n * @type {BaseLayerOnSignature}\n */\n this.un;\n\n /**\n * @type {BackgroundColor|false}\n * @private\n */\n this.background_ = options.background;\n\n /**\n * @type {Object}\n */\n const properties = Object.assign({}, options);\n if (typeof options.properties === 'object') {\n delete properties.properties;\n Object.assign(properties, options.properties);\n }\n\n properties[LayerProperty.OPACITY] =\n options.opacity !== undefined ? options.opacity : 1;\n assert(typeof properties[LayerProperty.OPACITY] === 'number', 64); // Layer opacity must be a number\n\n properties[LayerProperty.VISIBLE] =\n options.visible !== undefined ? options.visible : true;\n properties[LayerProperty.Z_INDEX] = options.zIndex;\n properties[LayerProperty.MAX_RESOLUTION] =\n options.maxResolution !== undefined ? options.maxResolution : Infinity;\n properties[LayerProperty.MIN_RESOLUTION] =\n options.minResolution !== undefined ? options.minResolution : 0;\n properties[LayerProperty.MIN_ZOOM] =\n options.minZoom !== undefined ? options.minZoom : -Infinity;\n properties[LayerProperty.MAX_ZOOM] =\n options.maxZoom !== undefined ? options.maxZoom : Infinity;\n\n /**\n * @type {string}\n * @private\n */\n this.className_ =\n properties.className !== undefined ? properties.className : 'ol-layer';\n delete properties.className;\n\n this.setProperties(properties);\n\n /**\n * @type {import(\"./Layer.js\").State}\n * @private\n */\n this.state_ = null;\n }\n\n /**\n * Get the background for this layer.\n * @return {BackgroundColor|false} Layer background.\n */\n getBackground() {\n return this.background_;\n }\n\n /**\n * @return {string} CSS class name.\n */\n getClassName() {\n return this.className_;\n }\n\n /**\n * This method is not meant to be called by layers or layer renderers because the state\n * is incorrect if the layer is included in a layer group.\n *\n * @param {boolean} [managed] Layer is managed.\n * @return {import(\"./Layer.js\").State} Layer state.\n */\n getLayerState(managed) {\n /** @type {import(\"./Layer.js\").State} */\n const state =\n this.state_ ||\n /** @type {?} */ ({\n layer: this,\n managed: managed === undefined ? true : managed,\n });\n const zIndex = this.getZIndex();\n state.opacity = clamp(Math.round(this.getOpacity() * 100) / 100, 0, 1);\n state.visible = this.getVisible();\n state.extent = this.getExtent();\n state.zIndex = zIndex === undefined && !state.managed ? Infinity : zIndex;\n state.maxResolution = this.getMaxResolution();\n state.minResolution = Math.max(this.getMinResolution(), 0);\n state.minZoom = this.getMinZoom();\n state.maxZoom = this.getMaxZoom();\n this.state_ = state;\n\n return state;\n }\n\n /**\n * @abstract\n * @param {Array} [array] Array of layers (to be\n * modified in place).\n * @return {Array} Array of layers.\n */\n getLayersArray(array) {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {Array} [states] Optional list of layer\n * states (to be modified in place).\n * @return {Array} List of layer states.\n */\n getLayerStatesArray(states) {\n return abstract();\n }\n\n /**\n * Return the {@link module:ol/extent~Extent extent} of the layer or `undefined` if it\n * will be visible regardless of extent.\n * @return {import(\"../extent.js\").Extent|undefined} The layer extent.\n * @observable\n * @api\n */\n getExtent() {\n return /** @type {import(\"../extent.js\").Extent|undefined} */ (\n this.get(LayerProperty.EXTENT)\n );\n }\n\n /**\n * Return the maximum resolution of the layer.\n * @return {number} The maximum resolution of the layer.\n * @observable\n * @api\n */\n getMaxResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MAX_RESOLUTION));\n }\n\n /**\n * Return the minimum resolution of the layer.\n * @return {number} The minimum resolution of the layer.\n * @observable\n * @api\n */\n getMinResolution() {\n return /** @type {number} */ (this.get(LayerProperty.MIN_RESOLUTION));\n }\n\n /**\n * Return the minimum zoom level of the layer.\n * @return {number} The minimum zoom level of the layer.\n * @observable\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (this.get(LayerProperty.MIN_ZOOM));\n }\n\n /**\n * Return the maximum zoom level of the layer.\n * @return {number} The maximum zoom level of the layer.\n * @observable\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (this.get(LayerProperty.MAX_ZOOM));\n }\n\n /**\n * Return the opacity of the layer (between 0 and 1).\n * @return {number} The opacity of the layer.\n * @observable\n * @api\n */\n getOpacity() {\n return /** @type {number} */ (this.get(LayerProperty.OPACITY));\n }\n\n /**\n * @abstract\n * @return {import(\"../source/Source.js\").State} Source state.\n */\n getSourceState() {\n return abstract();\n }\n\n /**\n * Return the value of this layer's `visible` property. To find out whether the layer\n * is visible on a map, use `isVisible()` instead.\n * @return {boolean} The value of the `visible` property of the layer.\n * @observable\n * @api\n */\n getVisible() {\n return /** @type {boolean} */ (this.get(LayerProperty.VISIBLE));\n }\n\n /**\n * Return the Z-index of the layer, which is used to order layers before\n * rendering. The default Z-index is 0.\n * @return {number} The Z-index of the layer.\n * @observable\n * @api\n */\n getZIndex() {\n return /** @type {number} */ (this.get(LayerProperty.Z_INDEX));\n }\n\n /**\n * Sets the background color.\n * @param {BackgroundColor} [background] Background color.\n */\n setBackground(background) {\n this.background_ = background;\n this.changed();\n }\n\n /**\n * Set the extent at which the layer is visible. If `undefined`, the layer\n * will be visible at all extents.\n * @param {import(\"../extent.js\").Extent|undefined} extent The extent of the layer.\n * @observable\n * @api\n */\n setExtent(extent) {\n this.set(LayerProperty.EXTENT, extent);\n }\n\n /**\n * Set the maximum resolution at which the layer is visible.\n * @param {number} maxResolution The maximum resolution of the layer.\n * @observable\n * @api\n */\n setMaxResolution(maxResolution) {\n this.set(LayerProperty.MAX_RESOLUTION, maxResolution);\n }\n\n /**\n * Set the minimum resolution at which the layer is visible.\n * @param {number} minResolution The minimum resolution of the layer.\n * @observable\n * @api\n */\n setMinResolution(minResolution) {\n this.set(LayerProperty.MIN_RESOLUTION, minResolution);\n }\n\n /**\n * Set the maximum zoom (exclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} maxZoom The maximum zoom of the layer.\n * @observable\n * @api\n */\n setMaxZoom(maxZoom) {\n this.set(LayerProperty.MAX_ZOOM, maxZoom);\n }\n\n /**\n * Set the minimum zoom (inclusive) at which the layer is visible.\n * Note that the zoom levels for layer visibility are based on the\n * view zoom level, which may be different from a tile source zoom level.\n * @param {number} minZoom The minimum zoom of the layer.\n * @observable\n * @api\n */\n setMinZoom(minZoom) {\n this.set(LayerProperty.MIN_ZOOM, minZoom);\n }\n\n /**\n * Set the opacity of the layer, allowed values range from 0 to 1.\n * @param {number} opacity The opacity of the layer.\n * @observable\n * @api\n */\n setOpacity(opacity) {\n assert(typeof opacity === 'number', 64); // Layer opacity must be a number\n this.set(LayerProperty.OPACITY, opacity);\n }\n\n /**\n * Set the visibility of the layer (`true` or `false`).\n * @param {boolean} visible The visibility of the layer.\n * @observable\n * @api\n */\n setVisible(visible) {\n this.set(LayerProperty.VISIBLE, visible);\n }\n\n /**\n * Set Z-index of the layer, which is used to order layers before rendering.\n * The default Z-index is 0.\n * @param {number} zindex The z-index of the layer.\n * @observable\n * @api\n */\n setZIndex(zindex) {\n this.set(LayerProperty.Z_INDEX, zindex);\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n if (this.state_) {\n this.state_.layer = null;\n this.state_ = null;\n }\n super.disposeInternal();\n }\n}\n\nexport default BaseLayer;\n","/**\n * @module ol/layer/Layer\n */\nimport BaseLayer from './Base.js';\nimport EventType from '../events/EventType.js';\nimport LayerProperty from './Property.js';\nimport RenderEventType from '../render/EventType.js';\nimport View from '../View.js';\nimport {assert} from '../asserts.js';\nimport {intersects} from '../extent.js';\nimport {listen, unlistenByKey} from '../events.js';\n\n/**\n * @typedef {function(import(\"../Map.js\").FrameState):HTMLElement} RenderFunction\n */\n\n/**\n * @typedef {'sourceready'|'change:source'} LayerEventType\n */\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} LayerOnSignature\n */\n\n/**\n * @template {import(\"../source/Source.js\").default} [SourceType=import(\"../source/Source.js\").default]\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {SourceType} [source] Source for this layer. If not provided to the constructor,\n * the source can be set by calling {@link module:ol/layer/Layer~Layer#setSource layer.setSource(source)} after\n * construction.\n * @property {import(\"../Map.js\").default|null} [map] Map.\n * @property {RenderFunction} [render] Render function. Takes the frame state as input and is expected to return an\n * HTML element. Will overwrite the default rendering for the layer.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @typedef {Object} State\n * @property {import(\"./Layer.js\").default} layer Layer.\n * @property {number} opacity Opacity, the value is rounded to two digits to appear after the decimal point.\n * @property {boolean} visible Visible.\n * @property {boolean} managed Managed.\n * @property {import(\"../extent.js\").Extent} [extent] Extent.\n * @property {number} zIndex ZIndex.\n * @property {number} maxResolution Maximum resolution.\n * @property {number} minResolution Minimum resolution.\n * @property {number} minZoom Minimum zoom.\n * @property {number} maxZoom Maximum zoom.\n */\n\n/**\n * @classdesc\n * Base class from which all layer types are derived. This should only be instantiated\n * in the case where a custom layer is added to the map with a custom `render` function.\n * Such a function can be specified in the `options` object, and is expected to return an HTML element.\n *\n * A visual representation of raster or vector map data.\n * Layers group together those properties that pertain to how the data is to be\n * displayed, irrespective of the source of that data.\n *\n * Layers are usually added to a map with [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * Components like {@link module:ol/interaction/Draw~Draw} use unmanaged layers\n * internally. These unmanaged layers are associated with the map using\n * [layer.setMap()]{@link module:ol/layer/Layer~Layer#setMap} instead.\n *\n * A generic `change` event is fired when the state of the source changes.\n * A `sourceready` event is fired when the layer's source is ready.\n *\n * @fires import(\"../render/Event.js\").RenderEvent#prerender\n * @fires import(\"../render/Event.js\").RenderEvent#postrender\n * @fires import(\"../events/Event.js\").BaseEvent#sourceready\n *\n * @template {import(\"../source/Source.js\").default} [SourceType=import(\"../source/Source.js\").default]\n * @template {import(\"../renderer/Layer.js\").default} [RendererType=import(\"../renderer/Layer.js\").default]\n * @api\n */\nclass Layer extends BaseLayer {\n /**\n * @param {Options} options Layer options.\n */\n constructor(options) {\n const baseOptions = Object.assign({}, options);\n delete baseOptions.source;\n\n super(baseOptions);\n\n /***\n * @type {LayerOnSignature}\n */\n this.on;\n\n /***\n * @type {LayerOnSignature}\n */\n this.once;\n\n /***\n * @type {LayerOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n this.mapPrecomposeKey_ = null;\n\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n this.mapRenderKey_ = null;\n\n /**\n * @private\n * @type {?import(\"../events.js\").EventsKey}\n */\n this.sourceChangeKey_ = null;\n\n /**\n * @private\n * @type {RendererType}\n */\n this.renderer_ = null;\n\n /**\n * @private\n * @type {boolean}\n */\n this.sourceReady_ = false;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.rendered = false;\n\n // Overwrite default render method with a custom one\n if (options.render) {\n this.render = options.render;\n }\n\n if (options.map) {\n this.setMap(options.map);\n }\n\n this.addChangeListener(\n LayerProperty.SOURCE,\n this.handleSourcePropertyChange_\n );\n\n const source = options.source\n ? /** @type {SourceType} */ (options.source)\n : null;\n this.setSource(source);\n }\n\n /**\n * @param {Array} [array] Array of layers (to be modified in place).\n * @return {Array} Array of layers.\n */\n getLayersArray(array) {\n array = array ? array : [];\n array.push(this);\n return array;\n }\n\n /**\n * @param {Array} [states] Optional list of layer states (to be modified in place).\n * @return {Array} List of layer states.\n */\n getLayerStatesArray(states) {\n states = states ? states : [];\n states.push(this.getLayerState());\n return states;\n }\n\n /**\n * Get the layer source.\n * @return {SourceType|null} The layer source (or `null` if not yet set).\n * @observable\n * @api\n */\n getSource() {\n return /** @type {SourceType} */ (this.get(LayerProperty.SOURCE)) || null;\n }\n\n /**\n * @return {SourceType|null} The source being rendered.\n */\n getRenderSource() {\n return this.getSource();\n }\n\n /**\n * @return {import(\"../source/Source.js\").State} Source state.\n */\n getSourceState() {\n const source = this.getSource();\n return !source ? 'undefined' : source.getState();\n }\n\n /**\n * @private\n */\n handleSourceChange_() {\n this.changed();\n if (this.sourceReady_ || this.getSource().getState() !== 'ready') {\n return;\n }\n this.sourceReady_ = true;\n this.dispatchEvent('sourceready');\n }\n\n /**\n * @private\n */\n handleSourcePropertyChange_() {\n if (this.sourceChangeKey_) {\n unlistenByKey(this.sourceChangeKey_);\n this.sourceChangeKey_ = null;\n }\n this.sourceReady_ = false;\n const source = this.getSource();\n if (source) {\n this.sourceChangeKey_ = listen(\n source,\n EventType.CHANGE,\n this.handleSourceChange_,\n this\n );\n if (source.getState() === 'ready') {\n this.sourceReady_ = true;\n setTimeout(() => {\n this.dispatchEvent('sourceready');\n }, 0);\n }\n }\n this.changed();\n }\n\n /**\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with\n * an array of features.\n */\n getFeatures(pixel) {\n if (!this.renderer_) {\n return Promise.resolve([]);\n }\n return this.renderer_.getFeatures(pixel);\n }\n\n /**\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n */\n getData(pixel) {\n if (!this.renderer_ || !this.rendered) {\n return null;\n }\n return this.renderer_.getData(pixel);\n }\n\n /**\n * The layer is visible on the map view, i.e. within its min/max resolution or zoom and\n * extent, not set to `visible: false`, and not inside a layer group that is set\n * to `visible: false`.\n * @param {View|import(\"../View.js\").ViewStateLayerStateExtent} [view] View or {@link import(\"../Map.js\").FrameState}.\n * Only required when the layer is not added to a map.\n * @return {boolean} The layer is visible in the map view.\n * @api\n */\n isVisible(view) {\n let frameState;\n const map = this.getMapInternal();\n if (!view && map) {\n view = map.getView();\n }\n if (view instanceof View) {\n frameState = {\n viewState: view.getState(),\n extent: view.calculateExtent(),\n };\n } else {\n frameState = view;\n }\n if (!frameState.layerStatesArray && map) {\n frameState.layerStatesArray = map.getLayerGroup().getLayerStatesArray();\n }\n let layerState;\n if (frameState.layerStatesArray) {\n layerState = frameState.layerStatesArray.find(\n (layerState) => layerState.layer === this\n );\n } else {\n layerState = this.getLayerState();\n }\n\n const layerExtent = this.getExtent();\n\n return (\n inView(layerState, frameState.viewState) &&\n (!layerExtent || intersects(layerExtent, frameState.extent))\n );\n }\n\n /**\n * Get the attributions of the source of this layer for the given view.\n * @param {View|import(\"../View.js\").ViewStateLayerStateExtent} [view] View or {@link import(\"../Map.js\").FrameState}.\n * Only required when the layer is not added to a map.\n * @return {Array} Attributions for this layer at the given view.\n * @api\n */\n getAttributions(view) {\n if (!this.isVisible(view)) {\n return [];\n }\n let getAttributions;\n const source = this.getSource();\n if (source) {\n getAttributions = source.getAttributions();\n }\n if (!getAttributions) {\n return [];\n }\n const frameState =\n view instanceof View ? view.getViewStateAndExtent() : view;\n let attributions = getAttributions(frameState);\n if (!Array.isArray(attributions)) {\n attributions = [attributions];\n }\n return attributions;\n }\n\n /**\n * In charge to manage the rendering of the layer. One layer type is\n * bounded with one layer renderer.\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target which the renderer may (but need not) use\n * for rendering its content.\n * @return {HTMLElement|null} The rendered element.\n */\n render(frameState, target) {\n const layerRenderer = this.getRenderer();\n\n if (layerRenderer.prepareFrame(frameState)) {\n this.rendered = true;\n return layerRenderer.renderFrame(frameState, target);\n }\n return null;\n }\n\n /**\n * Called when a layer is not visible during a map render.\n */\n unrender() {\n this.rendered = false;\n }\n\n /**\n * For use inside the library only.\n * @param {import(\"../Map.js\").default|null} map Map.\n */\n setMapInternal(map) {\n if (!map) {\n this.unrender();\n }\n this.set(LayerProperty.MAP, map);\n }\n\n /**\n * For use inside the library only.\n * @return {import(\"../Map.js\").default|null} Map.\n */\n getMapInternal() {\n return this.get(LayerProperty.MAP);\n }\n\n /**\n * Sets the layer to be rendered on top of other layers on a map. The map will\n * not manage this layer in its layers collection. This\n * is useful for temporary layers. To remove an unmanaged layer from the map,\n * use `#setMap(null)`.\n *\n * To add the layer to a map and have it managed by the map, use\n * {@link module:ol/Map~Map#addLayer} instead.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n if (this.mapPrecomposeKey_) {\n unlistenByKey(this.mapPrecomposeKey_);\n this.mapPrecomposeKey_ = null;\n }\n if (!map) {\n this.changed();\n }\n if (this.mapRenderKey_) {\n unlistenByKey(this.mapRenderKey_);\n this.mapRenderKey_ = null;\n }\n if (map) {\n this.mapPrecomposeKey_ = listen(\n map,\n RenderEventType.PRECOMPOSE,\n function (evt) {\n const renderEvent =\n /** @type {import(\"../render/Event.js\").default} */ (evt);\n const layerStatesArray = renderEvent.frameState.layerStatesArray;\n const layerState = this.getLayerState(false);\n // A layer can only be added to the map once. Use either `layer.setMap()` or `map.addLayer()`, not both.\n assert(\n !layerStatesArray.some(function (arrayLayerState) {\n return arrayLayerState.layer === layerState.layer;\n }),\n 67\n );\n layerStatesArray.push(layerState);\n },\n this\n );\n this.mapRenderKey_ = listen(this, EventType.CHANGE, map.render, map);\n this.changed();\n }\n }\n\n /**\n * Set the layer source.\n * @param {SourceType|null} source The layer source.\n * @observable\n * @api\n */\n setSource(source) {\n this.set(LayerProperty.SOURCE, source);\n }\n\n /**\n * Get the renderer for this layer.\n * @return {RendererType|null} The layer renderer.\n */\n getRenderer() {\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n return this.renderer_;\n }\n\n /**\n * @return {boolean} The layer has a renderer.\n */\n hasRenderer() {\n return !!this.renderer_;\n }\n\n /**\n * Create a renderer for this layer.\n * @return {RendererType} A layer renderer.\n * @protected\n */\n createRenderer() {\n return null;\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n if (this.renderer_) {\n this.renderer_.dispose();\n delete this.renderer_;\n }\n\n this.setSource(null);\n super.disposeInternal();\n }\n}\n\n/**\n * Return `true` if the layer is visible and if the provided view state\n * has resolution and zoom levels that are in range of the layer's min/max.\n * @param {State} layerState Layer state.\n * @param {import(\"../View.js\").State} viewState View state.\n * @return {boolean} The layer is visible at the given view state.\n */\nexport function inView(layerState, viewState) {\n if (!layerState.visible) {\n return false;\n }\n const resolution = viewState.resolution;\n if (\n resolution < layerState.minResolution ||\n resolution >= layerState.maxResolution\n ) {\n return false;\n }\n const zoom = viewState.zoom;\n return zoom > layerState.minZoom && zoom <= layerState.maxZoom;\n}\n\nexport default Layer;\n","/**\n * @module ol/layer/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n OPACITY: 'opacity',\n VISIBLE: 'visible',\n EXTENT: 'extent',\n Z_INDEX: 'zIndex',\n MAX_RESOLUTION: 'maxResolution',\n MIN_RESOLUTION: 'minResolution',\n MAX_ZOOM: 'maxZoom',\n MIN_ZOOM: 'minZoom',\n SOURCE: 'source',\n MAP: 'map',\n};\n","/**\n * @module ol/layer/TileProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n PRELOAD: 'preload',\n USE_INTERIM_TILES_ON_ERROR: 'useInterimTilesOnError',\n};\n","/**\n * @module ol/layer/BaseTile\n */\nimport Layer from './Layer.js';\nimport TileProperty from './TileProperty.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} BaseTileLayerOnSignature\n */\n\n/**\n * @template {import(\"../source/Tile.js\").default} TileSourceType\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`\n * means no preloading.\n * @property {TileSourceType} [source] Source for this layer.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use {@link import(\"../Map.js\").default#addLayer map.addLayer()}.\n * @property {boolean} [useInterimTilesOnError=true] Use interim tiles on error.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Tile.js\").default} TileSourceType\n * @template {import(\"../renderer/Layer.js\").default} RendererType\n * @extends {Layer}\n * @api\n */\nclass BaseTileLayer extends Layer {\n /**\n * @param {Options} [options] Tile layer options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const baseOptions = Object.assign({}, options);\n\n delete baseOptions.preload;\n delete baseOptions.useInterimTilesOnError;\n super(baseOptions);\n\n /***\n * @type {BaseTileLayerOnSignature}\n */\n this.on;\n\n /***\n * @type {BaseTileLayerOnSignature}\n */\n this.once;\n\n /***\n * @type {BaseTileLayerOnSignature}\n */\n this.un;\n\n this.setPreload(options.preload !== undefined ? options.preload : 0);\n this.setUseInterimTilesOnError(\n options.useInterimTilesOnError !== undefined\n ? options.useInterimTilesOnError\n : true\n );\n }\n\n /**\n * Return the level as number to which we will preload tiles up to.\n * @return {number} The level to preload tiles up to.\n * @observable\n * @api\n */\n getPreload() {\n return /** @type {number} */ (this.get(TileProperty.PRELOAD));\n }\n\n /**\n * Set the level as number to which we will preload tiles up to.\n * @param {number} preload The level to preload tiles up to.\n * @observable\n * @api\n */\n setPreload(preload) {\n this.set(TileProperty.PRELOAD, preload);\n }\n\n /**\n * Whether we use interim tiles on error.\n * @return {boolean} Use interim tiles on error.\n * @observable\n * @api\n */\n getUseInterimTilesOnError() {\n return /** @type {boolean} */ (\n this.get(TileProperty.USE_INTERIM_TILES_ON_ERROR)\n );\n }\n\n /**\n * Set whether we use interim tiles on error.\n * @param {boolean} useInterimTilesOnError Use interim tiles on error.\n * @observable\n * @api\n */\n setUseInterimTilesOnError(useInterimTilesOnError) {\n this.set(TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError);\n }\n\n /**\n * Get data for a pixel location. The return type depends on the source data. For image tiles,\n * a four element RGBA array will be returned. For data tiles, the array length will match the\n * number of bands in the dataset. For requests outside the layer extent, `null` will be returned.\n * Data for a image tiles can only be retrieved if the source's `crossOrigin` property is set.\n *\n * ```js\n * // display layer data on every pointer move\n * map.on('pointermove', (event) => {\n * console.log(layer.getData(event.pixel));\n * });\n * ```\n * @param {import(\"../pixel\").Pixel} pixel Pixel.\n * @return {Uint8ClampedArray|Uint8Array|Float32Array|DataView|null} Pixel data.\n * @api\n */\n getData(pixel) {\n return super.getData(pixel);\n }\n}\n\nexport default BaseTileLayer;\n","/**\n * @module ol/renderer/canvas/TileLayer\n */\nimport CanvasLayerRenderer from './Layer.js';\nimport ImageTile from '../../ImageTile.js';\nimport ReprojTile from '../../reproj/Tile.js';\nimport TileRange from '../../TileRange.js';\nimport TileState from '../../TileState.js';\nimport {\n apply as applyTransform,\n compose as composeTransform,\n makeInverse,\n toString as toTransformString,\n} from '../../transform.js';\nimport {ascending} from '../../array.js';\nimport {\n containsCoordinate,\n createEmpty,\n equals,\n getHeight,\n getIntersection,\n getRotatedViewport,\n getTopLeft,\n getWidth,\n intersects,\n} from '../../extent.js';\nimport {fromUserExtent} from '../../proj.js';\nimport {getUid} from '../../util.js';\nimport {toSize} from '../../size.js';\n\n/**\n * @classdesc\n * Canvas renderer for tile layers.\n * @api\n * @template {import(\"../../layer/Tile.js\").default|import(\"../../layer/VectorTile.js\").default} [LayerType=import(\"../../layer/Tile.js\").default|import(\"../../layer/VectorTile.js\").default]\n * @extends {CanvasLayerRenderer}\n */\nclass CanvasTileLayerRenderer extends CanvasLayerRenderer {\n /**\n * @param {LayerType} tileLayer Tile layer.\n */\n constructor(tileLayer) {\n super(tileLayer);\n\n /**\n * Rendered extent has changed since the previous `renderFrame()` call\n * @type {boolean}\n */\n this.extentChanged = true;\n\n /**\n * @private\n * @type {?import(\"../../extent.js\").Extent}\n */\n this.renderedExtent_ = null;\n\n /**\n * @protected\n * @type {number}\n */\n this.renderedPixelRatio;\n\n /**\n * @protected\n * @type {import(\"../../proj/Projection.js\").default}\n */\n this.renderedProjection = null;\n\n /**\n * @protected\n * @type {number}\n */\n this.renderedRevision;\n\n /**\n * @protected\n * @type {!Array}\n */\n this.renderedTiles = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.newTiles_ = false;\n\n /**\n * @protected\n * @type {import(\"../../extent.js\").Extent}\n */\n this.tmpExtent = createEmpty();\n\n /**\n * @private\n * @type {import(\"../../TileRange.js\").default}\n */\n this.tmpTileRange_ = new TileRange(0, 0, 0, 0);\n }\n\n /**\n * @protected\n * @param {import(\"../../Tile.js\").default} tile Tile.\n * @return {boolean} Tile is drawable.\n */\n isDrawableTile(tile) {\n const tileLayer = this.getLayer();\n const tileState = tile.getState();\n const useInterimTilesOnError = tileLayer.getUseInterimTilesOnError();\n return (\n tileState == TileState.LOADED ||\n tileState == TileState.EMPTY ||\n (tileState == TileState.ERROR && !useInterimTilesOnError)\n );\n }\n\n /**\n * @param {number} z Tile coordinate z.\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @return {!import(\"../../Tile.js\").default} Tile.\n */\n getTile(z, x, y, frameState) {\n const pixelRatio = frameState.pixelRatio;\n const projection = frameState.viewState.projection;\n const tileLayer = this.getLayer();\n const tileSource = tileLayer.getSource();\n let tile = tileSource.getTile(z, x, y, pixelRatio, projection);\n if (tile.getState() == TileState.ERROR) {\n if (tileLayer.getUseInterimTilesOnError() && tileLayer.getPreload() > 0) {\n // Preloaded tiles for lower resolutions might have finished loading.\n this.newTiles_ = true;\n }\n }\n if (!this.isDrawableTile(tile)) {\n tile = tile.getInterimTile();\n }\n return tile;\n }\n\n /**\n * @param {import(\"../../pixel.js\").Pixel} pixel Pixel.\n * @return {Uint8ClampedArray} Data at the pixel location.\n */\n getData(pixel) {\n const frameState = this.frameState;\n if (!frameState) {\n return null;\n }\n\n const layer = this.getLayer();\n const coordinate = applyTransform(\n frameState.pixelToCoordinateTransform,\n pixel.slice()\n );\n\n const layerExtent = layer.getExtent();\n if (layerExtent) {\n if (!containsCoordinate(layerExtent, coordinate)) {\n return null;\n }\n }\n\n const pixelRatio = frameState.pixelRatio;\n const projection = frameState.viewState.projection;\n const viewState = frameState.viewState;\n const source = layer.getRenderSource();\n const tileGrid = source.getTileGridForProjection(viewState.projection);\n const tilePixelRatio = source.getTilePixelRatio(frameState.pixelRatio);\n\n for (\n let z = tileGrid.getZForResolution(viewState.resolution);\n z >= tileGrid.getMinZoom();\n --z\n ) {\n const tileCoord = tileGrid.getTileCoordForCoordAndZ(coordinate, z);\n const tile = source.getTile(\n z,\n tileCoord[1],\n tileCoord[2],\n pixelRatio,\n projection\n );\n if (\n !(tile instanceof ImageTile || tile instanceof ReprojTile) ||\n (tile instanceof ReprojTile && tile.getState() === TileState.EMPTY)\n ) {\n return null;\n }\n\n if (tile.getState() !== TileState.LOADED) {\n continue;\n }\n\n const tileOrigin = tileGrid.getOrigin(z);\n const tileSize = toSize(tileGrid.getTileSize(z));\n const tileResolution = tileGrid.getResolution(z);\n\n const col = Math.floor(\n tilePixelRatio *\n ((coordinate[0] - tileOrigin[0]) / tileResolution -\n tileCoord[1] * tileSize[0])\n );\n\n const row = Math.floor(\n tilePixelRatio *\n ((tileOrigin[1] - coordinate[1]) / tileResolution -\n tileCoord[2] * tileSize[1])\n );\n\n const gutter = Math.round(\n tilePixelRatio * source.getGutterForProjection(viewState.projection)\n );\n\n return this.getImageData(tile.getImage(), col + gutter, row + gutter);\n }\n\n return null;\n }\n\n /**\n * @param {Object>} tiles Lookup of loaded tiles by zoom level.\n * @param {number} zoom Zoom level.\n * @param {import(\"../../Tile.js\").default} tile Tile.\n * @return {boolean|void} If `false`, the tile will not be considered loaded.\n */\n loadedTileCallback(tiles, zoom, tile) {\n if (this.isDrawableTile(tile)) {\n return super.loadedTileCallback(tiles, zoom, tile);\n }\n return false;\n }\n\n /**\n * Determine whether render should be called.\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @return {boolean} Layer is ready to be rendered.\n */\n prepareFrame(frameState) {\n return !!this.getLayer().getSource();\n }\n\n /**\n * Render the layer.\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @param {HTMLElement} target Target that may be used to render content to.\n * @return {HTMLElement} The rendered element.\n */\n renderFrame(frameState, target) {\n const layerState = frameState.layerStatesArray[frameState.layerIndex];\n const viewState = frameState.viewState;\n const projection = viewState.projection;\n const viewResolution = viewState.resolution;\n const viewCenter = viewState.center;\n const rotation = viewState.rotation;\n const pixelRatio = frameState.pixelRatio;\n\n const tileLayer = this.getLayer();\n const tileSource = tileLayer.getSource();\n const sourceRevision = tileSource.getRevision();\n const tileGrid = tileSource.getTileGridForProjection(projection);\n const z = tileGrid.getZForResolution(viewResolution, tileSource.zDirection);\n const tileResolution = tileGrid.getResolution(z);\n\n let extent = frameState.extent;\n const resolution = frameState.viewState.resolution;\n const tilePixelRatio = tileSource.getTilePixelRatio(pixelRatio);\n // desired dimensions of the canvas in pixels\n const width = Math.round((getWidth(extent) / resolution) * pixelRatio);\n const height = Math.round((getHeight(extent) / resolution) * pixelRatio);\n\n const layerExtent =\n layerState.extent && fromUserExtent(layerState.extent, projection);\n if (layerExtent) {\n extent = getIntersection(\n extent,\n fromUserExtent(layerState.extent, projection)\n );\n }\n\n const dx = (tileResolution * width) / 2 / tilePixelRatio;\n const dy = (tileResolution * height) / 2 / tilePixelRatio;\n const canvasExtent = [\n viewCenter[0] - dx,\n viewCenter[1] - dy,\n viewCenter[0] + dx,\n viewCenter[1] + dy,\n ];\n\n const tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z);\n\n /**\n * @type {Object>}\n */\n const tilesToDrawByZ = {};\n tilesToDrawByZ[z] = {};\n\n const findLoadedTiles = this.createLoadedTileFinder(\n tileSource,\n projection,\n tilesToDrawByZ\n );\n\n const tmpExtent = this.tmpExtent;\n const tmpTileRange = this.tmpTileRange_;\n this.newTiles_ = false;\n const viewport = rotation\n ? getRotatedViewport(\n viewState.center,\n resolution,\n rotation,\n frameState.size\n )\n : undefined;\n for (let x = tileRange.minX; x <= tileRange.maxX; ++x) {\n for (let y = tileRange.minY; y <= tileRange.maxY; ++y) {\n if (\n rotation &&\n !tileGrid.tileCoordIntersectsViewport([z, x, y], viewport)\n ) {\n continue;\n }\n const tile = this.getTile(z, x, y, frameState);\n if (this.isDrawableTile(tile)) {\n const uid = getUid(this);\n if (tile.getState() == TileState.LOADED) {\n tilesToDrawByZ[z][tile.tileCoord.toString()] = tile;\n let inTransition = tile.inTransition(uid);\n if (inTransition && layerState.opacity !== 1) {\n // Skipping transition when layer is not fully opaque avoids visual artifacts.\n tile.endTransition(uid);\n inTransition = false;\n }\n if (\n !this.newTiles_ &&\n (inTransition || !this.renderedTiles.includes(tile))\n ) {\n this.newTiles_ = true;\n }\n }\n if (tile.getAlpha(uid, frameState.time) === 1) {\n // don't look for alt tiles if alpha is 1\n continue;\n }\n }\n\n const childTileRange = tileGrid.getTileCoordChildTileRange(\n tile.tileCoord,\n tmpTileRange,\n tmpExtent\n );\n\n let covered = false;\n if (childTileRange) {\n covered = findLoadedTiles(z + 1, childTileRange);\n }\n if (!covered) {\n tileGrid.forEachTileCoordParentTileRange(\n tile.tileCoord,\n findLoadedTiles,\n tmpTileRange,\n tmpExtent\n );\n }\n }\n }\n\n const canvasScale =\n ((tileResolution / viewResolution) * pixelRatio) / tilePixelRatio;\n\n // set forward and inverse pixel transforms\n composeTransform(\n this.pixelTransform,\n frameState.size[0] / 2,\n frameState.size[1] / 2,\n 1 / pixelRatio,\n 1 / pixelRatio,\n rotation,\n -width / 2,\n -height / 2\n );\n\n const canvasTransform = toTransformString(this.pixelTransform);\n\n this.useContainer(target, canvasTransform, this.getBackground(frameState));\n const context = this.context;\n const canvas = context.canvas;\n\n makeInverse(this.inversePixelTransform, this.pixelTransform);\n\n // set scale transform for calculating tile positions on the canvas\n composeTransform(\n this.tempTransform,\n width / 2,\n height / 2,\n canvasScale,\n canvasScale,\n 0,\n -width / 2,\n -height / 2\n );\n\n if (canvas.width != width || canvas.height != height) {\n canvas.width = width;\n canvas.height = height;\n } else if (!this.containerReused) {\n context.clearRect(0, 0, width, height);\n }\n\n if (layerExtent) {\n this.clipUnrotated(context, frameState, layerExtent);\n }\n\n if (!tileSource.getInterpolate()) {\n context.imageSmoothingEnabled = false;\n }\n\n this.preRender(context, frameState);\n\n this.renderedTiles.length = 0;\n /** @type {Array} */\n let zs = Object.keys(tilesToDrawByZ).map(Number);\n zs.sort(ascending);\n\n let clips, clipZs, currentClip;\n if (\n layerState.opacity === 1 &&\n (!this.containerReused ||\n tileSource.getOpaque(frameState.viewState.projection))\n ) {\n zs = zs.reverse();\n } else {\n clips = [];\n clipZs = [];\n }\n for (let i = zs.length - 1; i >= 0; --i) {\n const currentZ = zs[i];\n const currentTilePixelSize = tileSource.getTilePixelSize(\n currentZ,\n pixelRatio,\n projection\n );\n const currentResolution = tileGrid.getResolution(currentZ);\n const currentScale = currentResolution / tileResolution;\n const dx = currentTilePixelSize[0] * currentScale * canvasScale;\n const dy = currentTilePixelSize[1] * currentScale * canvasScale;\n const originTileCoord = tileGrid.getTileCoordForCoordAndZ(\n getTopLeft(canvasExtent),\n currentZ\n );\n const originTileExtent = tileGrid.getTileCoordExtent(originTileCoord);\n const origin = applyTransform(this.tempTransform, [\n (tilePixelRatio * (originTileExtent[0] - canvasExtent[0])) /\n tileResolution,\n (tilePixelRatio * (canvasExtent[3] - originTileExtent[3])) /\n tileResolution,\n ]);\n const tileGutter =\n tilePixelRatio * tileSource.getGutterForProjection(projection);\n const tilesToDraw = tilesToDrawByZ[currentZ];\n for (const tileCoordKey in tilesToDraw) {\n const tile = /** @type {import(\"../../ImageTile.js\").default} */ (\n tilesToDraw[tileCoordKey]\n );\n const tileCoord = tile.tileCoord;\n\n // Calculate integer positions and sizes so that tiles align\n const xIndex = originTileCoord[1] - tileCoord[1];\n const nextX = Math.round(origin[0] - (xIndex - 1) * dx);\n const yIndex = originTileCoord[2] - tileCoord[2];\n const nextY = Math.round(origin[1] - (yIndex - 1) * dy);\n const x = Math.round(origin[0] - xIndex * dx);\n const y = Math.round(origin[1] - yIndex * dy);\n const w = nextX - x;\n const h = nextY - y;\n const transition = z === currentZ;\n\n const inTransition =\n transition && tile.getAlpha(getUid(this), frameState.time) !== 1;\n let contextSaved = false;\n if (!inTransition) {\n if (clips) {\n // Clip mask for regions in this tile that already filled by a higher z tile\n currentClip = [x, y, x + w, y, x + w, y + h, x, y + h];\n for (let i = 0, ii = clips.length; i < ii; ++i) {\n if (z !== currentZ && currentZ < clipZs[i]) {\n const clip = clips[i];\n if (\n intersects(\n [x, y, x + w, y + h],\n [clip[0], clip[3], clip[4], clip[7]]\n )\n ) {\n if (!contextSaved) {\n context.save();\n contextSaved = true;\n }\n context.beginPath();\n // counter-clockwise (outer ring) for current tile\n context.moveTo(currentClip[0], currentClip[1]);\n context.lineTo(currentClip[2], currentClip[3]);\n context.lineTo(currentClip[4], currentClip[5]);\n context.lineTo(currentClip[6], currentClip[7]);\n // clockwise (inner ring) for higher z tile\n context.moveTo(clip[6], clip[7]);\n context.lineTo(clip[4], clip[5]);\n context.lineTo(clip[2], clip[3]);\n context.lineTo(clip[0], clip[1]);\n context.clip();\n }\n }\n }\n clips.push(currentClip);\n clipZs.push(currentZ);\n } else {\n context.clearRect(x, y, w, h);\n }\n }\n this.drawTileImage(\n tile,\n frameState,\n x,\n y,\n w,\n h,\n tileGutter,\n transition\n );\n if (clips && !inTransition) {\n if (contextSaved) {\n context.restore();\n }\n this.renderedTiles.unshift(tile);\n } else {\n this.renderedTiles.push(tile);\n }\n this.updateUsedTiles(frameState.usedTiles, tileSource, tile);\n }\n }\n\n this.renderedRevision = sourceRevision;\n this.renderedResolution = tileResolution;\n this.extentChanged =\n !this.renderedExtent_ || !equals(this.renderedExtent_, canvasExtent);\n this.renderedExtent_ = canvasExtent;\n this.renderedPixelRatio = pixelRatio;\n this.renderedProjection = projection;\n\n this.manageTilePyramid(\n frameState,\n tileSource,\n tileGrid,\n pixelRatio,\n projection,\n extent,\n z,\n tileLayer.getPreload()\n );\n this.scheduleExpireCache(frameState, tileSource);\n\n this.postRender(context, frameState);\n\n if (layerState.extent) {\n context.restore();\n }\n context.imageSmoothingEnabled = true;\n\n if (canvasTransform !== canvas.style.transform) {\n canvas.style.transform = canvasTransform;\n }\n\n return this.container;\n }\n\n /**\n * @param {import(\"../../ImageTile.js\").default} tile Tile.\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @param {number} x Left of the tile.\n * @param {number} y Top of the tile.\n * @param {number} w Width of the tile.\n * @param {number} h Height of the tile.\n * @param {number} gutter Tile gutter.\n * @param {boolean} transition Apply an alpha transition.\n */\n drawTileImage(tile, frameState, x, y, w, h, gutter, transition) {\n const image = this.getTileImage(tile);\n if (!image) {\n return;\n }\n const uid = getUid(this);\n const layerState = frameState.layerStatesArray[frameState.layerIndex];\n const alpha =\n layerState.opacity *\n (transition ? tile.getAlpha(uid, frameState.time) : 1);\n const alphaChanged = alpha !== this.context.globalAlpha;\n if (alphaChanged) {\n this.context.save();\n this.context.globalAlpha = alpha;\n }\n this.context.drawImage(\n image,\n gutter,\n gutter,\n image.width - 2 * gutter,\n image.height - 2 * gutter,\n x,\n y,\n w,\n h\n );\n\n if (alphaChanged) {\n this.context.restore();\n }\n if (alpha !== layerState.opacity) {\n frameState.animate = true;\n } else if (transition) {\n tile.endTransition(uid);\n }\n }\n\n /**\n * @return {HTMLCanvasElement} Image\n */\n getImage() {\n const context = this.context;\n return context ? context.canvas : null;\n }\n\n /**\n * Get the image from a tile.\n * @param {import(\"../../ImageTile.js\").default} tile Tile.\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @protected\n */\n getTileImage(tile) {\n return tile.getImage();\n }\n\n /**\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n * @protected\n */\n scheduleExpireCache(frameState, tileSource) {\n if (tileSource.canExpireCache()) {\n /**\n * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n * @param {import(\"../../Map.js\").default} map Map.\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n */\n const postRenderFunction = function (tileSource, map, frameState) {\n const tileSourceKey = getUid(tileSource);\n if (tileSourceKey in frameState.usedTiles) {\n tileSource.expireCache(\n frameState.viewState.projection,\n frameState.usedTiles[tileSourceKey]\n );\n }\n }.bind(null, tileSource);\n\n frameState.postRenderFunctions.push(\n /** @type {import(\"../../Map.js\").PostRenderFunction} */ (\n postRenderFunction\n )\n );\n }\n }\n\n /**\n * @param {!Object>} usedTiles Used tiles.\n * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n * @param {import('../../Tile.js').default} tile Tile.\n * @protected\n */\n updateUsedTiles(usedTiles, tileSource, tile) {\n // FIXME should we use tilesToDrawByZ instead?\n const tileSourceKey = getUid(tileSource);\n if (!(tileSourceKey in usedTiles)) {\n usedTiles[tileSourceKey] = {};\n }\n usedTiles[tileSourceKey][tile.getKey()] = true;\n }\n\n /**\n * Manage tile pyramid.\n * This function performs a number of functions related to the tiles at the\n * current zoom and lower zoom levels:\n * - registers idle tiles in frameState.wantedTiles so that they are not\n * discarded by the tile queue\n * - enqueues missing tiles\n * @param {import(\"../../Map.js\").FrameState} frameState Frame state.\n * @param {import(\"../../source/Tile.js\").default} tileSource Tile source.\n * @param {import(\"../../tilegrid/TileGrid.js\").default} tileGrid Tile grid.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"../../proj/Projection.js\").default} projection Projection.\n * @param {import(\"../../extent.js\").Extent} extent Extent.\n * @param {number} currentZ Current Z.\n * @param {number} preload Load low resolution tiles up to `preload` levels.\n * @param {function(import(\"../../Tile.js\").default):void} [tileCallback] Tile callback.\n * @protected\n */\n manageTilePyramid(\n frameState,\n tileSource,\n tileGrid,\n pixelRatio,\n projection,\n extent,\n currentZ,\n preload,\n tileCallback\n ) {\n const tileSourceKey = getUid(tileSource);\n if (!(tileSourceKey in frameState.wantedTiles)) {\n frameState.wantedTiles[tileSourceKey] = {};\n }\n const wantedTiles = frameState.wantedTiles[tileSourceKey];\n const tileQueue = frameState.tileQueue;\n const minZoom = tileGrid.getMinZoom();\n const rotation = frameState.viewState.rotation;\n const viewport = rotation\n ? getRotatedViewport(\n frameState.viewState.center,\n frameState.viewState.resolution,\n rotation,\n frameState.size\n )\n : undefined;\n let tileCount = 0;\n let tile, tileRange, tileResolution, x, y, z;\n for (z = minZoom; z <= currentZ; ++z) {\n tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z, tileRange);\n tileResolution = tileGrid.getResolution(z);\n for (x = tileRange.minX; x <= tileRange.maxX; ++x) {\n for (y = tileRange.minY; y <= tileRange.maxY; ++y) {\n if (\n rotation &&\n !tileGrid.tileCoordIntersectsViewport([z, x, y], viewport)\n ) {\n continue;\n }\n if (currentZ - z <= preload) {\n ++tileCount;\n tile = tileSource.getTile(z, x, y, pixelRatio, projection);\n if (tile.getState() == TileState.IDLE) {\n wantedTiles[tile.getKey()] = true;\n if (!tileQueue.isKeyQueued(tile.getKey())) {\n tileQueue.enqueue([\n tile,\n tileSourceKey,\n tileGrid.getTileCoordCenter(tile.tileCoord),\n tileResolution,\n ]);\n }\n }\n if (tileCallback !== undefined) {\n tileCallback(tile);\n }\n } else {\n tileSource.useTile(z, x, y, projection);\n }\n }\n }\n }\n tileSource.updateCacheSize(tileCount, projection);\n }\n}\n\nexport default CanvasTileLayerRenderer;\n","/**\n * @module ol/layer/Tile\n */\nimport BaseTileLayer from './BaseTile.js';\nimport CanvasTileLayerRenderer from '../renderer/canvas/TileLayer.js';\n\n/**\n * @classdesc\n * For layer sources that provide pre-rendered, tiled images in grids that are\n * organized by zoom levels for specific resolutions.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Tile.js\").default} TileSourceType\n * @extends BaseTileLayer\n * @api\n */\nclass TileLayer extends BaseTileLayer {\n /**\n * @param {import(\"./BaseTile.js\").Options} [options] Tile layer options.\n */\n constructor(options) {\n super(options);\n }\n\n createRenderer() {\n return new CanvasTileLayerRenderer(this);\n }\n}\n\nexport default TileLayer;\n","/**\n * @module ol/style/Text\n */\nimport Fill from './Fill.js';\nimport {toSize} from '../size.js';\n\n/**\n * @typedef {'point' | 'line'} TextPlacement\n * Default text placement is `'point'`. Note that\n * `'line'` requires the underlying geometry to be a {@link module:ol/geom/LineString~LineString},\n * {@link module:ol/geom/Polygon~Polygon}, {@link module:ol/geom/MultiLineString~MultiLineString} or\n * {@link module:ol/geom/MultiPolygon~MultiPolygon}.\n */\n\n/**\n * @typedef {'left' | 'center' | 'right'} TextJustify\n */\n\n/**\n * The default fill color to use if no fill was set at construction time; a\n * blackish `#333`.\n *\n * @const {string}\n */\nconst DEFAULT_FILL_COLOR = '#333';\n\n/**\n * @typedef {Object} Options\n * @property {string} [font] Font style as CSS `font` value, see:\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. Default is `'10px sans-serif'`\n * @property {number} [maxAngle=Math.PI/4] When `placement` is set to `'line'`, allow a maximum angle between adjacent characters.\n * The expected value is in radians, and the default is 45° (`Math.PI / 4`).\n * @property {number} [offsetX=0] Horizontal text offset in pixels. A positive will shift the text right.\n * @property {number} [offsetY=0] Vertical text offset in pixels. A positive will shift the text down.\n * @property {boolean} [overflow=false] For polygon labels or when `placement` is set to `'line'`, allow text to exceed\n * the width of the polygon at the label position or the length of the path that it follows.\n * @property {TextPlacement} [placement='point'] Text placement.\n * @property {number} [repeat] Repeat interval. When set, the text will be repeated at this interval, which specifies\n * the distance between two text anchors in pixels. Only available when `placement` is set to `'line'`. Overrides 'textAlign'.\n * @property {number|import(\"../size.js\").Size} [scale] Scale.\n * @property {boolean} [rotateWithView=false] Whether to rotate the text with the view.\n * @property {number} [rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {string|Array} [text] Text content or rich text content. For plain text provide a string, which can\n * contain line breaks (`\\n`). For rich text provide an array of text/font tuples. A tuple consists of the text to\n * render and the font to use (or `''` to use the text style's font). A line break has to be a separate tuple (i.e. `'\\n', ''`).\n * **Example:** `['foo', 'bold 10px sans-serif', ' bar', 'italic 10px sans-serif', ' baz', '']` will yield \"**foo** *bar* baz\".\n * **Note:** Rich text is not supported for `placement: 'line'` or the immediate rendering API.\n * @property {CanvasTextAlign} [textAlign] Text alignment. Possible values: `'left'`, `'right'`, `'center'`, `'end'` or `'start'`.\n * Default is `'center'` for `placement: 'point'`. For `placement: 'line'`, the default is to let the renderer choose a\n * placement where `maxAngle` is not exceeded.\n * @property {TextJustify} [justify] Text justification within the text box.\n * If not set, text is justified towards the `textAlign` anchor.\n * Otherwise, use options `'left'`, `'center'`, or `'right'` to justify the text within the text box.\n * **Note:** `justify` is ignored for immediate rendering and also for `placement: 'line'`.\n * @property {CanvasTextBaseline} [textBaseline='middle'] Text base line. Possible values: `'bottom'`, `'top'`, `'middle'`, `'alphabetic'`,\n * `'hanging'`, `'ideographic'`.\n * @property {import(\"./Fill.js\").default|null} [fill] Fill style. If none is provided, we'll use a dark fill-style (#333). Specify `null` for no fill.\n * @property {import(\"./Stroke.js\").default} [stroke] Stroke style.\n * @property {import(\"./Fill.js\").default} [backgroundFill] Fill style for the text background when `placement` is\n * `'point'`. Default is no fill.\n * @property {import(\"./Stroke.js\").default} [backgroundStroke] Stroke style for the text background when `placement`\n * is `'point'`. Default is no stroke.\n * @property {Array} [padding=[0, 0, 0, 0]] Padding in pixels around the text for decluttering and background. The order of\n * values in the array is `[top, right, bottom, left]`.\n */\n\n/**\n * @classdesc\n * Set text style for vector features.\n * @api\n */\nclass Text {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options || {};\n\n /**\n * @private\n * @type {string|undefined}\n */\n this.font_ = options.font;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.rotation_ = options.rotation;\n\n /**\n * @private\n * @type {boolean|undefined}\n */\n this.rotateWithView_ = options.rotateWithView;\n\n /**\n * @private\n * @type {number|import(\"../size.js\").Size|undefined}\n */\n this.scale_ = options.scale;\n\n /**\n * @private\n * @type {import(\"../size.js\").Size}\n */\n this.scaleArray_ = toSize(options.scale !== undefined ? options.scale : 1);\n\n /**\n * @private\n * @type {string|Array|undefined}\n */\n this.text_ = options.text;\n\n /**\n * @private\n * @type {CanvasTextAlign|undefined}\n */\n this.textAlign_ = options.textAlign;\n\n /**\n * @private\n * @type {TextJustify|undefined}\n */\n this.justify_ = options.justify;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.repeat_ = options.repeat;\n\n /**\n * @private\n * @type {CanvasTextBaseline|undefined}\n */\n this.textBaseline_ = options.textBaseline;\n\n /**\n * @private\n * @type {import(\"./Fill.js\").default}\n */\n this.fill_ =\n options.fill !== undefined\n ? options.fill\n : new Fill({color: DEFAULT_FILL_COLOR});\n\n /**\n * @private\n * @type {number}\n */\n this.maxAngle_ =\n options.maxAngle !== undefined ? options.maxAngle : Math.PI / 4;\n\n /**\n * @private\n * @type {TextPlacement}\n */\n this.placement_ =\n options.placement !== undefined ? options.placement : 'point';\n\n /**\n * @private\n * @type {boolean}\n */\n this.overflow_ = !!options.overflow;\n\n /**\n * @private\n * @type {import(\"./Stroke.js\").default}\n */\n this.stroke_ = options.stroke !== undefined ? options.stroke : null;\n\n /**\n * @private\n * @type {number}\n */\n this.offsetX_ = options.offsetX !== undefined ? options.offsetX : 0;\n\n /**\n * @private\n * @type {number}\n */\n this.offsetY_ = options.offsetY !== undefined ? options.offsetY : 0;\n\n /**\n * @private\n * @type {import(\"./Fill.js\").default}\n */\n this.backgroundFill_ = options.backgroundFill\n ? options.backgroundFill\n : null;\n\n /**\n * @private\n * @type {import(\"./Stroke.js\").default}\n */\n this.backgroundStroke_ = options.backgroundStroke\n ? options.backgroundStroke\n : null;\n\n /**\n * @private\n * @type {Array|null}\n */\n this.padding_ = options.padding === undefined ? null : options.padding;\n }\n\n /**\n * Clones the style.\n * @return {Text} The cloned style.\n * @api\n */\n clone() {\n const scale = this.getScale();\n return new Text({\n font: this.getFont(),\n placement: this.getPlacement(),\n repeat: this.getRepeat(),\n maxAngle: this.getMaxAngle(),\n overflow: this.getOverflow(),\n rotation: this.getRotation(),\n rotateWithView: this.getRotateWithView(),\n scale: Array.isArray(scale) ? scale.slice() : scale,\n text: this.getText(),\n textAlign: this.getTextAlign(),\n justify: this.getJustify(),\n textBaseline: this.getTextBaseline(),\n fill: this.getFill() ? this.getFill().clone() : undefined,\n stroke: this.getStroke() ? this.getStroke().clone() : undefined,\n offsetX: this.getOffsetX(),\n offsetY: this.getOffsetY(),\n backgroundFill: this.getBackgroundFill()\n ? this.getBackgroundFill().clone()\n : undefined,\n backgroundStroke: this.getBackgroundStroke()\n ? this.getBackgroundStroke().clone()\n : undefined,\n padding: this.getPadding() || undefined,\n });\n }\n\n /**\n * Get the `overflow` configuration.\n * @return {boolean} Let text overflow the length of the path they follow.\n * @api\n */\n getOverflow() {\n return this.overflow_;\n }\n\n /**\n * Get the font name.\n * @return {string|undefined} Font.\n * @api\n */\n getFont() {\n return this.font_;\n }\n\n /**\n * Get the maximum angle between adjacent characters.\n * @return {number} Angle in radians.\n * @api\n */\n getMaxAngle() {\n return this.maxAngle_;\n }\n\n /**\n * Get the label placement.\n * @return {TextPlacement} Text placement.\n * @api\n */\n getPlacement() {\n return this.placement_;\n }\n\n /**\n * Get the repeat interval of the text.\n * @return {number|undefined} Repeat interval in pixels.\n * @api\n */\n getRepeat() {\n return this.repeat_;\n }\n\n /**\n * Get the x-offset for the text.\n * @return {number} Horizontal text offset.\n * @api\n */\n getOffsetX() {\n return this.offsetX_;\n }\n\n /**\n * Get the y-offset for the text.\n * @return {number} Vertical text offset.\n * @api\n */\n getOffsetY() {\n return this.offsetY_;\n }\n\n /**\n * Get the fill style for the text.\n * @return {import(\"./Fill.js\").default} Fill style.\n * @api\n */\n getFill() {\n return this.fill_;\n }\n\n /**\n * Determine whether the text rotates with the map.\n * @return {boolean|undefined} Rotate with map.\n * @api\n */\n getRotateWithView() {\n return this.rotateWithView_;\n }\n\n /**\n * Get the text rotation.\n * @return {number|undefined} Rotation.\n * @api\n */\n getRotation() {\n return this.rotation_;\n }\n\n /**\n * Get the text scale.\n * @return {number|import(\"../size.js\").Size|undefined} Scale.\n * @api\n */\n getScale() {\n return this.scale_;\n }\n\n /**\n * Get the symbolizer scale array.\n * @return {import(\"../size.js\").Size} Scale array.\n */\n getScaleArray() {\n return this.scaleArray_;\n }\n\n /**\n * Get the stroke style for the text.\n * @return {import(\"./Stroke.js\").default} Stroke style.\n * @api\n */\n getStroke() {\n return this.stroke_;\n }\n\n /**\n * Get the text to be rendered.\n * @return {string|Array|undefined} Text.\n * @api\n */\n getText() {\n return this.text_;\n }\n\n /**\n * Get the text alignment.\n * @return {CanvasTextAlign|undefined} Text align.\n * @api\n */\n getTextAlign() {\n return this.textAlign_;\n }\n\n /**\n * Get the justification.\n * @return {TextJustify|undefined} Justification.\n * @api\n */\n getJustify() {\n return this.justify_;\n }\n\n /**\n * Get the text baseline.\n * @return {CanvasTextBaseline|undefined} Text baseline.\n * @api\n */\n getTextBaseline() {\n return this.textBaseline_;\n }\n\n /**\n * Get the background fill style for the text.\n * @return {import(\"./Fill.js\").default} Fill style.\n * @api\n */\n getBackgroundFill() {\n return this.backgroundFill_;\n }\n\n /**\n * Get the background stroke style for the text.\n * @return {import(\"./Stroke.js\").default} Stroke style.\n * @api\n */\n getBackgroundStroke() {\n return this.backgroundStroke_;\n }\n\n /**\n * Get the padding for the text.\n * @return {Array|null} Padding.\n * @api\n */\n getPadding() {\n return this.padding_;\n }\n\n /**\n * Set the `overflow` property.\n *\n * @param {boolean} overflow Let text overflow the path that it follows.\n * @api\n */\n setOverflow(overflow) {\n this.overflow_ = overflow;\n }\n\n /**\n * Set the font.\n *\n * @param {string|undefined} font Font.\n * @api\n */\n setFont(font) {\n this.font_ = font;\n }\n\n /**\n * Set the maximum angle between adjacent characters.\n *\n * @param {number} maxAngle Angle in radians.\n * @api\n */\n setMaxAngle(maxAngle) {\n this.maxAngle_ = maxAngle;\n }\n\n /**\n * Set the x offset.\n *\n * @param {number} offsetX Horizontal text offset.\n * @api\n */\n setOffsetX(offsetX) {\n this.offsetX_ = offsetX;\n }\n\n /**\n * Set the y offset.\n *\n * @param {number} offsetY Vertical text offset.\n * @api\n */\n setOffsetY(offsetY) {\n this.offsetY_ = offsetY;\n }\n\n /**\n * Set the text placement.\n *\n * @param {TextPlacement} placement Placement.\n * @api\n */\n setPlacement(placement) {\n this.placement_ = placement;\n }\n\n /**\n * Set the repeat interval of the text.\n * @param {number|undefined} [repeat] Repeat interval in pixels.\n * @api\n */\n setRepeat(repeat) {\n this.repeat_ = repeat;\n }\n\n /**\n * Set whether to rotate the text with the view.\n *\n * @param {boolean} rotateWithView Rotate with map.\n * @api\n */\n setRotateWithView(rotateWithView) {\n this.rotateWithView_ = rotateWithView;\n }\n\n /**\n * Set the fill.\n *\n * @param {import(\"./Fill.js\").default} fill Fill style.\n * @api\n */\n setFill(fill) {\n this.fill_ = fill;\n }\n\n /**\n * Set the rotation.\n *\n * @param {number|undefined} rotation Rotation.\n * @api\n */\n setRotation(rotation) {\n this.rotation_ = rotation;\n }\n\n /**\n * Set the scale.\n *\n * @param {number|import(\"../size.js\").Size|undefined} scale Scale.\n * @api\n */\n setScale(scale) {\n this.scale_ = scale;\n this.scaleArray_ = toSize(scale !== undefined ? scale : 1);\n }\n\n /**\n * Set the stroke.\n *\n * @param {import(\"./Stroke.js\").default} stroke Stroke style.\n * @api\n */\n setStroke(stroke) {\n this.stroke_ = stroke;\n }\n\n /**\n * Set the text.\n *\n * @param {string|Array|undefined} text Text.\n * @api\n */\n setText(text) {\n this.text_ = text;\n }\n\n /**\n * Set the text alignment.\n *\n * @param {CanvasTextAlign|undefined} textAlign Text align.\n * @api\n */\n setTextAlign(textAlign) {\n this.textAlign_ = textAlign;\n }\n\n /**\n * Set the justification.\n *\n * @param {TextJustify|undefined} justify Justification.\n * @api\n */\n setJustify(justify) {\n this.justify_ = justify;\n }\n\n /**\n * Set the text baseline.\n *\n * @param {CanvasTextBaseline|undefined} textBaseline Text baseline.\n * @api\n */\n setTextBaseline(textBaseline) {\n this.textBaseline_ = textBaseline;\n }\n\n /**\n * Set the background fill.\n *\n * @param {import(\"./Fill.js\").default} fill Fill style.\n * @api\n */\n setBackgroundFill(fill) {\n this.backgroundFill_ = fill;\n }\n\n /**\n * Set the background stroke.\n *\n * @param {import(\"./Stroke.js\").default} stroke Stroke style.\n * @api\n */\n setBackgroundStroke(stroke) {\n this.backgroundStroke_ = stroke;\n }\n\n /**\n * Set the padding (`[top, right, bottom, left]`).\n *\n * @param {Array|null} padding Padding.\n * @api\n */\n setPadding(padding) {\n this.padding_ = padding;\n }\n}\n\nexport default Text;\n","/**\n * @module ol/style/flat\n */\n\nimport Circle from '../style/Circle.js';\nimport Fill from './Fill.js';\nimport Icon from './Icon.js';\nimport RegularShape from './RegularShape.js';\nimport Stroke from './Stroke.js';\nimport Style from './Style.js';\nimport Text from './Text.js';\n\n/**\n * For static styling, the [layer.setStyle()]{@link module:ol/layer/Vector~VectorLayer#setStyle} method\n * can be called with an object literal that has fill, stroke, text, icon, regular shape, and/or circle properties.\n * @api\n *\n * @typedef {FlatFill & FlatStroke & FlatText & FlatIcon & FlatShape & FlatCircle} FlatStyle\n */\n\n/**\n * A flat style literal or an array of the same.\n *\n * @typedef {FlatStyle|Array} FlatStyleLike\n */\n\n/**\n * Fill style properties applied to polygon features.\n *\n * @typedef {Object} FlatFill\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [fill-color] The fill color.\n */\n\n/**\n * Stroke style properties applied to line strings and polygon boundaries. To apply a stroke, at least one of\n * `stroke-color` or `stroke-width` must be provided.\n *\n * @typedef {Object} FlatStroke\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [stroke-color] The stroke color.\n * @property {number} [stroke-width] Stroke pixel width.\n * @property {CanvasLineCap} [stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [stroke-line-dash] Line dash pattern.\n * @property {number} [stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [stroke-miter-limit=10] Miter limit.\n */\n\n/**\n * Label style properties applied to all features. At a minimum, a `text-value` must be provided.\n *\n * @typedef {Object} FlatText\n * @property {string|Array} [text-value] Text content or rich text content. For plain text provide a string, which can\n * contain line breaks (`\\n`). For rich text provide an array of text/font tuples. A tuple consists of the text to\n * render and the font to use (or `''` to use the text style's font). A line break has to be a separate tuple (i.e. `'\\n', ''`).\n * **Example:** `['foo', 'bold 10px sans-serif', ' bar', 'italic 10px sans-serif', ' baz', '']` will yield \"**foo** *bar* baz\".\n * **Note:** Rich text is not supported for `'text-placement': 'line'` or the immediate rendering API.\n * @property {string} [text-font] Font style as CSS `font` value, see:\n * https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/font. Default is `'10px sans-serif'`\n * @property {number} [text-max-angle=Math.PI/4] When `text-placement` is set to `'line'`, allow a maximum angle between adjacent characters.\n * The expected value is in radians, and the default is 45° (`Math.PI / 4`).\n * @property {number} [text-offset-x=0] Horizontal text offset in pixels. A positive will shift the text right.\n * @property {number} [text-offset-y=0] Vertical text offset in pixels. A positive will shift the text down.\n * @property {boolean} [text-overflow=false] For polygon labels or when `placement` is set to `'line'`, allow text to exceed\n * the width of the polygon at the label position or the length of the path that it follows.\n * @property {import(\"./Text.js\").TextPlacement} [text-placement='point'] Text placement.\n * @property {number} [text-repeat] Repeat interval in pixels. When set, the text will be repeated at this interval. Only available when\n * `text-placement` is set to `'line'`. Overrides `text-align`.\n * @property {number|import(\"../size.js\").Size} [text-scale] Scale.\n * @property {boolean} [text-rotate-with-view=false] Whether to rotate the text with the view.\n * @property {number} [text-rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {CanvasTextAlign} [text-align] Text alignment. Possible values: `'left'`, `'right'`, `'center'`, `'end'` or `'start'`.\n * Default is `'center'` for `'text-placement': 'point'`. For `'text-placement': 'line'`, the default is to let the renderer choose a\n * placement where `text-max-angle` is not exceeded.\n * @property {import('./Text.js').TextJustify} [text-justify] Text justification within the text box.\n * If not set, text is justified towards the `textAlign` anchor.\n * Otherwise, use options `'left'`, `'center'`, or `'right'` to justify the text within the text box.\n * **Note:** `text-justify` is ignored for immediate rendering and also for `'text-placement': 'line'`.\n * @property {CanvasTextBaseline} [text-baseline='middle'] Text base line. Possible values: `'bottom'`, `'top'`, `'middle'`, `'alphabetic'`,\n * `'hanging'`, `'ideographic'`.\n * @property {Array} [text-padding=[0, 0, 0, 0]] Padding in pixels around the text for decluttering and background. The order of\n * values in the array is `[top, right, bottom, left]`.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [text-fill-color] The fill color. Specify `'none'` to avoid hit detection on the fill.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [text-background-fill-color] The fill color.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [text-stroke-color] The stroke color.\n * @property {CanvasLineCap} [text-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [text-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [text-stroke-line-dash] Line dash pattern.\n * @property {number} [text-stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [text-stroke-miter-limit=10] Miter limit.\n * @property {number} [text-stroke-width] Stroke pixel width.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [text-background-stroke-color] The stroke color.\n * @property {CanvasLineCap} [text-background-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [text-background-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [text-background-stroke-line-dash] Line dash pattern.\n * @property {number} [text-background-stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [text-background-stroke-miter-limit=10] Miter limit.\n * @property {number} [text-background-stroke-width] Stroke pixel width.\n */\n\n/**\n * Icon style properties applied to point features. One of `icon-src` or `icon-img` must be provided to render\n * points with an icon.\n *\n * @typedef {Object} FlatIcon\n * @property {string} [icon-src] Image source URI.\n * @property {HTMLImageElement|HTMLCanvasElement} [icon-img] Image object for the icon. If the `icon-src` option is not provided then the\n * provided image must already be loaded. And in that case, it is required\n * to provide the size of the image, with the `icon-img-size` option.\n * @property {import(\"../size.js\").Size} [icon-img-size] Image size in pixels. Only required if `icon-img` is set and `icon-src` is not.\n * The provided size needs to match the actual size of the image.\n * @property {Array} [icon-anchor=[0.5, 0.5]] Anchor. Default value is the icon center.\n * @property {import(\"./Icon.js\").IconOrigin} [icon-anchor-origin='top-left'] Origin of the anchor: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {import(\"./Icon.js\").IconAnchorUnits} [icon-anchor-x-units='fraction'] Units in which the anchor x value is\n * specified. A value of `'fraction'` indicates the x value is a fraction of the icon. A value of `'pixels'` indicates\n * the x value in pixels.\n * @property {import(\"./Icon.js\").IconAnchorUnits} [icon-anchor-y-units='fraction'] Units in which the anchor y value is\n * specified. A value of `'fraction'` indicates the y value is a fraction of the icon. A value of `'pixels'` indicates\n * the y value in pixels.\n * @property {import(\"../color.js\").Color|string} [icon-color] Color to tint the icon. If not specified,\n * the icon will be left as is.\n * @property {null|string} [icon-cross-origin] The `crossOrigin` attribute for loaded images. Note that you must provide a\n * `icon-cross-origin` value if you want to access pixel data with the Canvas renderer.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image for more detail.\n * @property {Array} [icon-offset=[0, 0]] Offset, which, together with the size and the offset origin, define the\n * sub-rectangle to use from the original icon image.\n * @property {Array} [icon-displacement=[0,0]] Displacement of the icon.\n * @property {import(\"./Icon.js\").IconOrigin} [icon-offset-origin='top-left'] Origin of the offset: `bottom-left`, `bottom-right`,\n * `top-left` or `top-right`.\n * @property {number} [icon-opacity=1] Opacity of the icon.\n * @property {number|import(\"../size.js\").Size} [icon-scale=1] Scale.\n * @property {number} [icon-width] Width of the icon. If not specified, the actual image width will be used. Cannot be combined\n * with `scale`.\n * @property {number} [icon-height] Height of the icon. If not specified, the actual image height will be used. Cannot be combined\n * with `scale`.\n * @property {number} [icon-rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {boolean} [icon-rotate-with-view=false] Whether to rotate the icon with the view.\n * @property {import(\"../size.js\").Size} [icon-size] Icon size in pixel. Can be used together with `icon-offset` to define the\n * sub-rectangle to use from the origin (sprite) icon image.\n * @property {\"declutter\"|\"obstacle\"|\"none\"|undefined} [icon-declutter-mode] Declutter mode\n */\n\n/**\n * Regular shape style properties for rendering point features. At least `shape-points` must be provided.\n *\n * @typedef {Object} FlatShape\n * @property {number} [shape-points] Number of points for stars and regular polygons. In case of a polygon, the number of points\n * is the number of sides.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [shape-fill-color] The fill color.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [shape-stroke-color] The stroke color.\n * @property {number} [shape-stroke-width] Stroke pixel width.\n * @property {CanvasLineCap} [shape-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [shape-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [shape-stroke-line-dash] Line dash pattern.\n * @property {number} [shape-stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [shape-stroke-miter-limit=10] Miter limit.\n * @property {number} [shape-radius] Radius of a regular polygon.\n * @property {number} [shape-radius1] First radius of a star. Ignored if radius is set.\n * @property {number} [shape-radius2] Second radius of a star.\n * @property {number} [shape-angle=0] Shape's angle in radians. A value of 0 will have one of the shape's point facing up.\n * @property {Array} [shape-displacement=[0,0]] Displacement of the shape\n * @property {number} [shape-rotation=0] Rotation in radians (positive rotation clockwise).\n * @property {boolean} [shape-rotate-with-view=false] Whether to rotate the shape with the view.\n * @property {number|import(\"../size.js\").Size} [shape-scale=1] Scale. Unless two dimensional scaling is required a better\n * result may be obtained with appropriate settings for `shape-radius`, `shape-radius1` and `shape-radius2`.\n * @property {\"declutter\"|\"obstacle\"|\"none\"|undefined} [shape-declutter-mode] Declutter mode.\n */\n\n/**\n * Circle style properties for rendering point features. At least `circle-radius` must be provided.\n *\n * @typedef {Object} FlatCircle\n * @property {number} [circle-radius] Circle radius.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [circle-fill-color] The fill color.\n * @property {import(\"../color.js\").Color|import(\"../colorlike.js\").ColorLike} [circle-stroke-color] The stroke color.\n * @property {number} [circle-stroke-width] Stroke pixel width.\n * @property {CanvasLineCap} [circle-stroke-line-cap='round'] Line cap style: `butt`, `round`, or `square`.\n * @property {CanvasLineJoin} [circle-stroke-line-join='round'] Line join style: `bevel`, `round`, or `miter`.\n * @property {Array} [circle-stroke-line-dash] Line dash pattern.\n * @property {number} [circle-stroke-line-dash-offset=0] Line dash offset.\n * @property {number} [circle-stroke-miter-limit=10] Miter limit.\n * @property {Array} [circle-displacement=[0,0]] displacement\n * @property {number|import(\"../size.js\").Size} [circle-scale=1] Scale. A two dimensional scale will produce an ellipse.\n * Unless two dimensional scaling is required a better result may be obtained with an appropriate setting for `circle-radius`.\n * @property {number} [circle-rotation=0] Rotation in radians\n * (positive rotation clockwise, meaningful only when used in conjunction with a two dimensional scale).\n * @property {boolean} [circle-rotate-with-view=false] Whether to rotate the shape with the view\n * (meaningful only when used in conjunction with a two dimensional scale).\n * @property {\"declutter\"|\"obstacle\"|\"none\"|undefined} [circle-declutter-mode] Declutter mode\n */\n\n/**\n * @param {FlatStyle} flatStyle A flat style literal.\n * @return {import(\"./Style.js\").default} A style instance.\n */\nexport function toStyle(flatStyle) {\n const style = new Style({\n fill: getFill(flatStyle, ''),\n stroke: getStroke(flatStyle, ''),\n text: getText(flatStyle),\n image: getImage(flatStyle),\n });\n\n return style;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} prefix The property prefix.\n * @return {Fill|null|undefined} The fill (if any).\n */\nfunction getFill(flatStyle, prefix) {\n const color = flatStyle[prefix + 'fill-color'];\n if (!color) {\n return;\n }\n if (color === 'none') {\n return null;\n }\n\n return new Fill({color: color});\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @param {string} prefix The property prefix.\n * @return {Stroke|undefined} The stroke (if any).\n */\nfunction getStroke(flatStyle, prefix) {\n const width = flatStyle[prefix + 'stroke-width'];\n const color = flatStyle[prefix + 'stroke-color'];\n if (!width && !color) {\n return;\n }\n\n return new Stroke({\n width: width,\n color: color,\n lineCap: flatStyle[prefix + 'stroke-line-cap'],\n lineJoin: flatStyle[prefix + 'stroke-line-join'],\n lineDash: flatStyle[prefix + 'stroke-line-dash'],\n lineDashOffset: flatStyle[prefix + 'stroke-line-dash-offset'],\n miterLimit: flatStyle[prefix + 'stroke-miter-limit'],\n });\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @return {Text|undefined} The text (if any).\n */\nfunction getText(flatStyle) {\n const value = flatStyle['text-value'];\n if (!value) {\n return;\n }\n\n const text = new Text({\n text: value,\n font: flatStyle['text-font'],\n maxAngle: flatStyle['text-max-angle'],\n offsetX: flatStyle['text-offset-x'],\n offsetY: flatStyle['text-offset-y'],\n overflow: flatStyle['text-overflow'],\n placement: flatStyle['text-placement'],\n repeat: flatStyle['text-repeat'],\n scale: flatStyle['text-scale'],\n rotateWithView: flatStyle['text-rotate-with-view'],\n rotation: flatStyle['text-rotation'],\n textAlign: flatStyle['text-align'],\n justify: flatStyle['text-justify'],\n textBaseline: flatStyle['text-baseline'],\n padding: flatStyle['text-padding'],\n fill: getFill(flatStyle, 'text-'),\n backgroundFill: getFill(flatStyle, 'text-background-'),\n stroke: getStroke(flatStyle, 'text-'),\n backgroundStroke: getStroke(flatStyle, 'text-background-'),\n });\n\n return text;\n}\n\n/**\n * @param {FlatStyle} flatStyle The flat style.\n * @return {import(\"./Image.js\").default|undefined} The image (if any).\n */\nfunction getImage(flatStyle) {\n const iconSrc = flatStyle['icon-src'];\n const iconImg = flatStyle['icon-img'];\n if (iconSrc || iconImg) {\n const icon = new Icon({\n src: iconSrc,\n img: iconImg,\n imgSize: flatStyle['icon-img-size'],\n anchor: flatStyle['icon-anchor'],\n anchorOrigin: flatStyle['icon-anchor-origin'],\n anchorXUnits: flatStyle['icon-anchor-x-units'],\n anchorYUnits: flatStyle['icon-anchor-y-units'],\n color: flatStyle['icon-color'],\n crossOrigin: flatStyle['icon-cross-origin'],\n offset: flatStyle['icon-offset'],\n displacement: flatStyle['icon-displacement'],\n opacity: flatStyle['icon-opacity'],\n scale: flatStyle['icon-scale'],\n width: flatStyle['icon-width'],\n height: flatStyle['icon-height'],\n rotation: flatStyle['icon-rotation'],\n rotateWithView: flatStyle['icon-rotate-with-view'],\n size: flatStyle['icon-size'],\n declutterMode: flatStyle['icon-declutter-mode'],\n });\n return icon;\n }\n\n const shapePoints = flatStyle['shape-points'];\n if (shapePoints) {\n const prefix = 'shape-';\n const shape = new RegularShape({\n points: shapePoints,\n fill: getFill(flatStyle, prefix),\n stroke: getStroke(flatStyle, prefix),\n radius: flatStyle['shape-radius'],\n radius1: flatStyle['shape-radius1'],\n radius2: flatStyle['shape-radius2'],\n angle: flatStyle['shape-angle'],\n displacement: flatStyle['shape-displacement'],\n rotation: flatStyle['shape-rotation'],\n rotateWithView: flatStyle['shape-rotate-with-view'],\n scale: flatStyle['shape-scale'],\n declutterMode: flatStyle['shape-declutter-mode'],\n });\n\n return shape;\n }\n\n const circleRadius = flatStyle['circle-radius'];\n if (circleRadius) {\n const prefix = 'circle-';\n const circle = new Circle({\n radius: circleRadius,\n fill: getFill(flatStyle, prefix),\n stroke: getStroke(flatStyle, prefix),\n displacement: flatStyle['circle-displacement'],\n scale: flatStyle['circle-scale'],\n rotation: flatStyle['circle-rotation'],\n rotateWithView: flatStyle['circle-rotate-with-view'],\n declutterMode: flatStyle['circle-declutter-mode'],\n });\n\n return circle;\n }\n\n return;\n}\n\n/**\n * @return {import('./flat.js').FlatStyle} The default flat style.\n */\nexport function createDefaultStyle() {\n return {\n 'fill-color': 'rgba(255,255,255,0.4)',\n 'stroke-color': '#3399CC',\n 'stroke-width': 1.25,\n 'circle-radius': 5,\n 'circle-fill-color': 'rgba(255,255,255,0.4)',\n 'circle-stroke-width': 1.25,\n 'circle-stroke-color': '#3399CC',\n };\n}\n","/**\n * @module ol/layer/BaseVector\n */\nimport Layer from './Layer.js';\nimport RBush from 'rbush';\nimport Style, {\n createDefaultStyle,\n toFunction as toStyleFunction,\n} from '../style/Style.js';\nimport {toStyle} from '../style/flat.js';\n\n/**\n * @template {import(\"../source/Vector.js\").default|import(\"../source/VectorTile.js\").default} VectorSourceType\n * @typedef {Object} Options\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"../extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will be\n * visible.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"../render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the viewport extent used by the\n * renderer when getting features from the vector source for the rendering or hit-detection.\n * Recommended value: the size of the largest symbol, line width or label.\n * @property {VectorSourceType} [source] Source.\n * @property {import(\"../Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use [map.addLayer()]{@link import(\"../Map.js\").default#addLayer}.\n * @property {boolean} [declutter=false] Declutter images and text. Decluttering is applied to all\n * image and text styles of all Vector and VectorTile layers that have set this to `true`. The priority\n * is defined by the z-index of the layer, the `zIndex` of the style and the render order of features.\n * Higher z-index means higher priority. Within the same z-index, a feature rendered before another has\n * higher priority.\n *\n * As an optimization decluttered features from layers with the same `className` are rendered above\n * the fill and stroke styles of all of those layers regardless of z-index. To opt out of this\n * behavior and place declutterd features with their own layer configure the layer with a `className`\n * other than `ol-layer`.\n * @property {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style. When set to `null`, only\n * features that have their own style will be rendered. See {@link module:ol/style/Style~Style} for the default style\n * which will be used if this is not set.\n * @property {import(\"./Base.js\").BackgroundColor} [background] Background color for the layer. If not specified, no background\n * will be rendered.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will\n * be recreated during animations. This means that no vectors will be shown clipped, but the\n * setting will have a performance impact for large amounts of vector data. When set to `false`,\n * batches will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will\n * be recreated during interactions. See also `updateWhileAnimating`.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n RENDER_ORDER: 'renderOrder',\n};\n\n/**\n * @classdesc\n * Vector data that is rendered client-side.\n * Note that any property set in the options is set as a {@link module:ol/Object~BaseObject}\n * property on the layer object; for example, setting `title: 'My Title'` in the\n * options means that `title` is observable, and has get/set accessors.\n *\n * @template {import(\"../source/Vector.js\").default|import(\"../source/VectorTile.js\").default} VectorSourceType\n * @template {import(\"../renderer/canvas/VectorLayer.js\").default|import(\"../renderer/canvas/VectorTileLayer.js\").default|import(\"../renderer/canvas/VectorImageLayer.js\").default|import(\"../renderer/webgl/PointsLayer.js\").default} RendererType\n * @extends {Layer}\n * @api\n */\nclass BaseVectorLayer extends Layer {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const baseOptions = Object.assign({}, options);\n\n delete baseOptions.style;\n delete baseOptions.renderBuffer;\n delete baseOptions.updateWhileAnimating;\n delete baseOptions.updateWhileInteracting;\n super(baseOptions);\n\n /**\n * @private\n * @type {boolean}\n */\n this.declutter_ =\n options.declutter !== undefined ? options.declutter : false;\n\n /**\n * @type {number}\n * @private\n */\n this.renderBuffer_ =\n options.renderBuffer !== undefined ? options.renderBuffer : 100;\n\n /**\n * User provided style.\n * @type {import(\"../style/Style.js\").StyleLike}\n * @private\n */\n this.style_ = null;\n\n /**\n * Style function for use within the library.\n * @type {import(\"../style/Style.js\").StyleFunction|undefined}\n * @private\n */\n this.styleFunction_ = undefined;\n\n this.setStyle(options.style);\n\n /**\n * @type {boolean}\n * @private\n */\n this.updateWhileAnimating_ =\n options.updateWhileAnimating !== undefined\n ? options.updateWhileAnimating\n : false;\n\n /**\n * @type {boolean}\n * @private\n */\n this.updateWhileInteracting_ =\n options.updateWhileInteracting !== undefined\n ? options.updateWhileInteracting\n : false;\n }\n\n /**\n * @return {boolean} Declutter.\n */\n getDeclutter() {\n return this.declutter_;\n }\n\n /**\n * Get the topmost feature that intersects the given pixel on the viewport. Returns a promise\n * that resolves with an array of features. The array will either contain the topmost feature\n * when a hit was detected, or it will be empty.\n *\n * The hit detection algorithm used for this method is optimized for performance, but is less\n * accurate than the one used in [map.getFeaturesAtPixel()]{@link import(\"../Map.js\").default#getFeaturesAtPixel}.\n * Text is not considered, and icons are only represented by their bounding box instead of the exact\n * image.\n *\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @return {Promise>} Promise that resolves with an array of features.\n * @api\n */\n getFeatures(pixel) {\n return super.getFeatures(pixel);\n }\n\n /**\n * @return {number|undefined} Render buffer.\n */\n getRenderBuffer() {\n return this.renderBuffer_;\n }\n\n /**\n * @return {function(import(\"../Feature.js\").default, import(\"../Feature.js\").default): number|null|undefined} Render\n * order.\n */\n getRenderOrder() {\n return /** @type {import(\"../render.js\").OrderFunction|null|undefined} */ (\n this.get(Property.RENDER_ORDER)\n );\n }\n\n /**\n * Get the style for features. This returns whatever was passed to the `style`\n * option at construction or to the `setStyle` method.\n * @return {import(\"../style/Style.js\").StyleLike|null|undefined} Layer style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the style function.\n * @return {import(\"../style/Style.js\").StyleFunction|undefined} Layer style function.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @return {boolean} Whether the rendered layer should be updated while\n * animating.\n */\n getUpdateWhileAnimating() {\n return this.updateWhileAnimating_;\n }\n\n /**\n * @return {boolean} Whether the rendered layer should be updated while\n * interacting.\n */\n getUpdateWhileInteracting() {\n return this.updateWhileInteracting_;\n }\n\n /**\n * Render declutter items for this layer\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderDeclutter(frameState) {\n if (!frameState.declutterTree) {\n frameState.declutterTree = new RBush(9);\n }\n /** @type {*} */ (this.getRenderer()).renderDeclutter(frameState);\n }\n\n /**\n * @param {import(\"../render.js\").OrderFunction|null|undefined} renderOrder\n * Render order.\n */\n setRenderOrder(renderOrder) {\n this.set(Property.RENDER_ORDER, renderOrder);\n }\n\n /**\n * Set the style for features. This can be a single style object, an array\n * of styles, or a function that takes a feature and resolution and returns\n * an array of styles. If set to `null`, the layer has no style (a `null` style),\n * so only features that have their own styles will be rendered in the layer. Call\n * `setStyle()` without arguments to reset to the default style. See\n * [the ol/style/Style module]{@link module:ol/style/Style~Style} for information on the default style.\n *\n * If your layer has a static style, you can use [flat style]{@link module:ol/style/flat~FlatStyle} object\n * literals instead of using the `Style` and symbolizer constructors (`Fill`, `Stroke`, etc.):\n * ```js\n * vectorLayer.setStyle({\n * \"fill-color\": \"yellow\",\n * \"stroke-color\": \"black\",\n * \"stroke-width\": 4\n * })\n * ```\n *\n * @param {import(\"../style/Style.js\").StyleLike|import(\"../style/flat.js\").FlatStyleLike|null} [style] Layer style.\n * @api\n */\n setStyle(style) {\n /**\n * @type {import(\"../style/Style.js\").StyleLike|null}\n */\n let styleLike;\n\n if (style === undefined) {\n styleLike = createDefaultStyle;\n } else if (style === null) {\n styleLike = null;\n } else if (typeof style === 'function') {\n styleLike = style;\n } else if (style instanceof Style) {\n styleLike = style;\n } else if (Array.isArray(style)) {\n const len = style.length;\n\n /**\n * @type {Array