{"version":3,"sources":["../node_modules/lodash/isInteger.js","../node_modules/lodash/toInteger.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/isSymbol.js","../node_modules/d3-contour/node_modules/d3-array/src/ascending.js","../node_modules/d3-contour/node_modules/d3-array/src/bisect.js","../node_modules/d3-contour/node_modules/d3-array/src/bisector.js","../node_modules/d3-contour/node_modules/d3-array/src/cross.js","../node_modules/d3-contour/node_modules/d3-array/src/array.js","../node_modules/d3-contour/node_modules/d3-array/src/ticks.js","../node_modules/d3-contour/src/array.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/array.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/ascending.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/constant.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/contains.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/noop.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/contours.js","../node_modules/canvas-heatmap/node_modules/d3-contour/src/area.js","../node_modules/canvas-heatmap/src/verify.js","../node_modules/canvas-heatmap/src/functions.js","../node_modules/canvas-heatmap/src/fillcanvas.js","../node_modules/canvas-heatmap/src/canvas-heatmap.js","../node_modules/interactive-slider/src/verify.js","../node_modules/interactive-slider/src/functions.js","../node_modules/interactive-slider/src/interactive-slider.js","../node_modules/detect-element-overflow/dist/esm/index.js","../node_modules/react-fit/dist/esm/shared/utils.js","../node_modules/react-fit/dist/esm/Fit.js","../node_modules/unist-util-stringify-position/index.js","../node_modules/vfile-message/index.js","../node_modules/vfile/lib/minpath.browser.js","../node_modules/vfile/lib/minproc.browser.js","../node_modules/vfile/lib/minurl.shared.js","../node_modules/vfile/lib/minurl.browser.js","../node_modules/vfile/lib/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/bail/index.js","../node_modules/unified/node_modules/is-plain-obj/index.js","../node_modules/trough/index.js","../node_modules/unified/lib/index.js","../node_modules/mdast-util-to-string/index.js","../node_modules/micromark-util-chunked/index.js","../node_modules/micromark-util-combine-extensions/index.js","../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","../node_modules/micromark-util-character/index.js","../node_modules/micromark-factory-space/index.js","../node_modules/micromark/lib/initialize/content.js","../node_modules/micromark/lib/initialize/document.js","../node_modules/micromark-core-commonmark/lib/blank-line.js","../node_modules/micromark-util-subtokenize/index.js","../node_modules/micromark-core-commonmark/lib/content.js","../node_modules/micromark/lib/initialize/flow.js","../node_modules/micromark/lib/initialize/text.js","../node_modules/micromark-util-resolve-all/index.js","../node_modules/micromark/lib/create-tokenizer.js","../node_modules/micromark-core-commonmark/lib/thematic-break.js","../node_modules/micromark-core-commonmark/lib/list.js","../node_modules/micromark-core-commonmark/lib/block-quote.js","../node_modules/micromark-factory-destination/index.js","../node_modules/micromark-factory-label/index.js","../node_modules/micromark-factory-title/index.js","../node_modules/micromark-factory-whitespace/index.js","../node_modules/micromark-util-normalize-identifier/index.js","../node_modules/micromark-core-commonmark/lib/definition.js","../node_modules/micromark-core-commonmark/lib/code-indented.js","../node_modules/micromark-core-commonmark/lib/heading-atx.js","../node_modules/micromark-core-commonmark/lib/setext-underline.js","../node_modules/micromark-util-html-tag-name/index.js","../node_modules/micromark-core-commonmark/lib/html-flow.js","../node_modules/micromark-core-commonmark/lib/code-fenced.js","../node_modules/decode-named-character-reference/node_modules/character-entities/index.js","../node_modules/decode-named-character-reference/index.js","../node_modules/micromark-core-commonmark/lib/character-reference.js","../node_modules/micromark-core-commonmark/lib/character-escape.js","../node_modules/micromark-core-commonmark/lib/line-ending.js","../node_modules/micromark-core-commonmark/lib/label-end.js","../node_modules/micromark-core-commonmark/lib/label-start-image.js","../node_modules/micromark-util-classify-character/index.js","../node_modules/micromark-core-commonmark/lib/attention.js","../node_modules/micromark-core-commonmark/lib/autolink.js","../node_modules/micromark-core-commonmark/lib/html-text.js","../node_modules/micromark-core-commonmark/lib/label-start-link.js","../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../node_modules/micromark-core-commonmark/lib/code-text.js","../node_modules/micromark/lib/constructs.js","../node_modules/micromark/lib/preprocess.js","../node_modules/micromark-util-decode-numeric-character-reference/index.js","../node_modules/micromark-util-decode-string/index.js","../node_modules/mdast-util-from-markdown/lib/index.js","../node_modules/micromark/lib/postprocess.js","../node_modules/micromark/lib/parse.js","../node_modules/remark-parse/index.js","../node_modules/remark-parse/lib/index.js","../node_modules/unist-builder/index.js","../node_modules/unist-util-is/index.js","../node_modules/unist-util-visit-parents/index.js","../node_modules/unist-util-visit/index.js","../node_modules/unist-util-position/index.js","../node_modules/mdast-util-definitions/index.js","../node_modules/mdast-util-to-hast/lib/traverse.js","../node_modules/micromark-util-encode/index.js","../node_modules/micromark-util-sanitize-uri/index.js","../node_modules/mdast-util-to-hast/lib/wrap.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../node_modules/mdast-util-to-hast/lib/revert.js","../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../node_modules/trim-lines/index.js","../node_modules/mdast-util-to-hast/lib/handlers/index.js","../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../node_modules/mdast-util-to-hast/lib/handlers/break.js","../node_modules/mdast-util-to-hast/lib/handlers/code.js","../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../node_modules/mdast-util-to-hast/lib/handlers/html.js","../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/image.js","../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../node_modules/mdast-util-to-hast/lib/handlers/link.js","../node_modules/mdast-util-to-hast/lib/handlers/list.js","../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../node_modules/mdast-util-to-hast/lib/handlers/root.js","../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../node_modules/mdast-util-to-hast/lib/handlers/table.js","../node_modules/mdast-util-to-hast/lib/handlers/text.js","../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../node_modules/mdast-util-to-hast/lib/index.js","../node_modules/unist-util-generated/index.js","../node_modules/mdast-util-to-hast/lib/footer.js","../node_modules/remark-rehype/lib/index.js","../node_modules/react-markdown/node_modules/property-information/lib/util/schema.js","../node_modules/react-markdown/node_modules/property-information/lib/util/merge.js","../node_modules/react-markdown/node_modules/property-information/lib/normalize.js","../node_modules/react-markdown/node_modules/property-information/lib/util/info.js","../node_modules/react-markdown/node_modules/property-information/lib/util/types.js","../node_modules/react-markdown/node_modules/property-information/lib/util/defined-info.js","../node_modules/react-markdown/node_modules/property-information/lib/util/create.js","../node_modules/react-markdown/node_modules/property-information/lib/xlink.js","../node_modules/react-markdown/node_modules/property-information/lib/xml.js","../node_modules/react-markdown/node_modules/property-information/lib/util/case-sensitive-transform.js","../node_modules/react-markdown/node_modules/property-information/lib/util/case-insensitive-transform.js","../node_modules/react-markdown/node_modules/property-information/lib/xmlns.js","../node_modules/react-markdown/node_modules/property-information/lib/aria.js","../node_modules/react-markdown/node_modules/property-information/lib/html.js","../node_modules/react-markdown/node_modules/property-information/lib/svg.js","../node_modules/react-markdown/node_modules/property-information/index.js","../node_modules/react-markdown/lib/rehype-filter.js","../node_modules/react-markdown/lib/uri-transformer.js","../node_modules/hast-util-whitespace/index.js","../node_modules/react-markdown/node_modules/property-information/lib/find.js","../node_modules/react-markdown/node_modules/property-information/lib/hast-to-react.js","../node_modules/react-markdown/lib/ast-to-react.js","../node_modules/react-markdown/node_modules/comma-separated-tokens/index.js","../node_modules/react-markdown/node_modules/space-separated-tokens/index.js","../node_modules/react-markdown/lib/react-markdown.js","../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/esm/locale/en-US/index.js","../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/esm/_lib/toInteger/index.js","../node_modules/date-fns/esm/addMilliseconds/index.js","../node_modules/date-fns/esm/subMilliseconds/index.js","../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/esm/_lib/format/formatters/index.js","../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../node_modules/date-fns/esm/format/index.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/shared/propTypes.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/shared/dates.js","../node_modules/react-time-picker/dist/shared/propTypes.js","../node_modules/react-time-picker/dist/shared/utils.js","../node_modules/react-date-picker/dist/shared/utils.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/shared/dateFormatter.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/TileGroup.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/Tile.js","../node_modules/react-date-picker/dist/shared/propTypes.js","../node_modules/react-time-picker/dist/TimeInput/Input.js","../node_modules/mdurl/encode.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/Flex.js","../node_modules/react-clock/dist/shared/propTypes.js","../node_modules/react-date-picker/dist/DateInput/Input.js","../node_modules/react-time-picker/dist/shared/dates.js","../node_modules/react-datetime-picker/dist/shared/propTypes.js","../node_modules/react-datetime-picker/dist/entry.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/CenturyView.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/shared/utils.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/DecadeView.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/YearView.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView.js","../node_modules/update-input-width/dist/esm/index.js","../node_modules/react-datetime-picker/dist/shared/utils.js","../node_modules/react-datetime-picker/dist/DateTimePicker.js","../node_modules/make-event-props/dist/esm/index.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/entry.nostyle.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/Calendar.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/Calendar/Navigation.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/CenturyView/Decades.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/CenturyView/Decade.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/DecadeView/Years.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/DecadeView/Year.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/YearView/Months.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/YearView/Month.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/Days.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/Day.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/Weekdays.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/WeekNumbers.js","../node_modules/react-datetime-picker/node_modules/react-calendar/dist/MonthView/WeekNumber.js","../node_modules/react-clock/dist/entry.nostyle.js","../node_modules/react-clock/dist/Clock.js","../node_modules/react-clock/dist/Hand.js","../node_modules/react-clock/dist/shared/utils.js","../node_modules/react-clock/dist/Mark.js","../node_modules/react-clock/dist/shared/dates.js","../node_modules/react-datetime-picker/dist/DateTimeInput.js","../node_modules/react-date-picker/dist/DateInput/DayInput.js","../node_modules/react-date-picker/dist/DateInput/MonthInput.js","../node_modules/react-date-picker/dist/DateInput/MonthSelect.js","../node_modules/react-date-picker/dist/shared/dateFormatter.js","../node_modules/react-date-picker/dist/DateInput/YearInput.js","../node_modules/react-time-picker/dist/TimeInput/Hour12Input.js","../node_modules/react-time-picker/dist/shared/dateFormatter.js","../node_modules/react-time-picker/dist/TimeInput/Hour24Input.js","../node_modules/react-time-picker/dist/TimeInput/MinuteInput.js","../node_modules/react-time-picker/dist/TimeInput/SecondInput.js","../node_modules/react-time-picker/dist/TimeInput/AmPm.js","../node_modules/react-datetime-picker/dist/Divider.js","../node_modules/react-datetime-picker/dist/DateTimeInput/NativeInput.js","../node_modules/react-datetime-picker/dist/shared/dateFormatter.js","../node_modules/react-datetime-picker/dist/shared/dates.js","../node_modules/unified/node_modules/is-buffer/index.js","../node_modules/extend/index.js","../node_modules/vfile/node_modules/is-buffer/index.js","../node_modules/react-markdown/node_modules/react-is/index.js","../node_modules/react-markdown/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/style-to-object/index.js","../node_modules/inline-style-parser/index.js","../node_modules/react-syntax-highlighter/dist/esm/languages/hljs/javascript.js","../node_modules/react-syntax-highlighter/dist/esm/languages/hljs/python.js","../node_modules/react-syntax-highlighter/dist/esm/languages/hljs/r.js","../node_modules/react-syntax-highlighter/dist/esm/styles/hljs/github.js"],"names":["toInteger","require","module","exports","value","toFinite","result","remainder","toNumber","baseTrim","isObject","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","test","slice","trimmedEndIndex","reTrimStart","string","replace","reWhitespace","index","length","charAt","baseGetTag","isObjectLike","a","b","NaN","ascendingBisect","compare","f","d","x","ascending","left","lo","hi","mid","right","bisector","array","Array","prototype","map","Math","sqrt","ring","hole","c","i","n","ringContains","point","y","contains","j","pi","xi","yi","pj","xj","yj","segmentContains","p","q","r","collinear","cases","dx","dy","threshold","thresholdSturges","smooth","smoothLinear","contours","values","tz","isArray","sort","domain","extent","start","stop","tickStep","range","floor","contour","polygons","holes","callback","t0","t1","t2","t3","fragmentByStart","fragmentByEnd","forEach","stitch","line","g","end","startIndex","endIndex","push","concat","unshift","isorings","area","polygon","type","coordinates","v0","xt","yt","v1","size","_","arguments","_0","_1","Error","thresholds","constant","call","noop","verifyString","verifyNumber","number","isNaN","verifyNone","verifyBool","bool","verifyColors","colors","verifyFunction","verifyDiv","div","select","_groups","verifyData","data","z","hex","s","round","min","max","getRGBAColor","colorCache","cacheKey","has","get","loc","set","low","high","color1","rgba","color2","factor","rgb","closest","num","arr","curr","diff","abs","val","newdiff","isNumeric","parseFloat","isFinite","indexOfClosest","filter","getFileIndex","scales","formatDate","lang","months","shortMonths","year","getFullYear","month","getMonth","date","getDate","hour","getHours","getMinutes","String","formatNumber","decimals","fact","toExponential","languageOptions","name","de","decimal","thousands","grouping","currency","dateTime","time","periods","days","shortDays","en","fr","es","it","console","error","scientificNotation","canvasGrid","scaleX","scaleY","xDomain","yDomain","context","options","putImgDataSingleMatrix","putImgDataMultMatrix","canvasContour","prepContours","fill","baseContour","mainContour","nanContour","geometry","plotdata","fixedColor","color","v","step","zMin","zMax","fillStyle","beginPath","moveTo","getXfromIndex","getYfromIndex","lineTo","closePath","e","highh","lowh","highw","loww","l","rgbacolor","dataypix","dataxpix","indexypix","indexxpix","canvasHeight","canvasWidth","pixelMapping","imgData","createImageData","yReverse","xReverse","putImageData","ypix","xpix","xstart","ceil","xend","ystart","yend","k","pixelMappingArray","xTime","Date","getTime","yTime","processOptions","userOptions","defaultOptions","default","verify","node","getBoundingClientRect","width","height","undefined","marginLeft","fontSize","legendRight","marginRight","marginBottom","title","marginTop","JSON","parse","stringify","trim","substring","convertToRGB","Map","prepareContours","nullData","zDomain","thresholdStep","cr","flat","nullValues","replaceNull","getDomain","minarr","maxarr","dataExtents","xFileDomain","yFileDomain","zFileDomain","h","xext","yext","includes","apply","addSVG","append","attr","style","addCanvas","getContext","addXAxis","svg","ax","xrange","xAxisLabel","xLabel","xUnit","scaleTime","xLog","scaleLog","scaleLinear","ref","copy","base","axis","axisBottom","ticks","tickFormat","multiFormat","format","text","addYAxis","yrange","yAxisLabel","yLabel","yUnit","yLog","axisLeft","addTitle","addBackground","backgroundColor","addLegendRight","defs","ndp","t5","t4","svgGradient","zLabel","zAxisLabel","zUnit","addTooltip","zoombox","xAxis","yAxis","tooltip","symbolGenerator","symbol","symbolTriangle","vpi","levels","language","on","event","xval","yval","hoverX","invert","layerX","offsetX","hoverY","layerY","offsetY","idx","process","xu","yu","zu","zval","html","decimalPlaces","hover","mousex","mousey","selectAll","remove","yp","click","addZoom","zoom","d3zoom","t","transform","zoomIdentity","rescaleX","scale","rescaleY","clearRect","zoomx","zoomboxx","zoomy","zoomboxy","downloadGraph","str","XMLSerializer","serializeToString","document","getElementById","canvasout","createElement","contextout","image","Image","onerror","alert","onload","drawImage","download","href","toDataURL","src","encodeURIComponent","autoDownSample","ads","l1","l2","d1","d2","z_ds","y_ds","zz_ds","x_ds","formatMillisecond","timeFormat","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","timeSecond","timeMinute","timeHour","timeDay","timeMonth","timeWeek","timeYear","heatmap","timeFormatDefaultLocale","setDownloadGraph","setDownloadGraphDiv","autoDownsample","setTimeout","verifyType","verifyInput","input","optionList","warn","handleWidth","addAxis","tickPadding","addAvailability","plotAvailability","availability","enter","barHeight","barColor","addFocus","handleHeight","addHandles","drag","d3drag","id","this","upper","lower","plotTooltip","onChange","plotHandles","handles","mouseover","mousemove","mouseout","pointer","tooltipText","tooltipwidth","addEventbox","Axis","gX","zoomed","zoomEnd","onclick","onZoom","moveHandles","focushandle","slider","getRect","element","detectElementOverflow","container","top","bottom","consoleOnDev","method","warnOnDev","_len2","message","_key2","_excluded","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_setPrototypeOf","o","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","constructor","_possibleConstructorReturn","self","_typeof","_assertThisInitialized","ReferenceError","getPrototypeOf","_objectWithoutProperties","source","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","ownKeys","object","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","Symbol","iterator","isBrowser","window","isDisplayContentsSupported","CSS","supports","isMutationObserverSupported","capitalize","toUpperCase","findScrollContainer","parent","parentElement","getComputedStyle","overflow","split","every","documentElement","alignAxis","_ref","invertAxis","secondary","scrollContainer","spacing","scrollContainerCollisions","documentCollisions","isX","startProperty","endProperty","sizeProperty","overflowStartProperty","overflowEndProperty","scrollProperty","uppercasedSizeProperty","offsetSizeProperty","clientSizeProperty","minSizeProperty","scrollbarWidth","startSpacing","availableStartSpace","endSpacing","availableEndSpace","offsetSize","displayStart","displayEnd","displayIfFits","availableSpace","display","fits","displayStartIfFits","displayEndIfFits","moreSpaceStart","minSize","shrinkToSize","newSize","displayWhereverShrinkedFits","alignBothAxis","args","invertSecondaryAxis","commonArgs","alignMainAxis","alignSecondaryAxis","Fit","_Component","subClass","superClass","create","_inherits","protoProps","staticProps","_super","_this","_len","_key","fit","MutationObserver","onMutation","_assertThisInitialize","elementWidth","clientWidth","elementHeight","clientHeight","position","parentPosition","_this$props","mainAxis","findDOMNode","mutationObserver","observe","attributes","attributeFilter","_this2","children","child","React","Children","only","firstChild","Component","propTypes","PropTypes","oneOf","oneOfType","shape","isRequired","defaultProps","stringifyPosition","column","pos","VFileMessage","reason","place","origin","parts","stack","fatal","ruleId","actual","expected","file","url","note","path","basename","ext","assertPath","seenNonSlash","charCodeAt","firstNonSlashEnd","extIndex","dirname","unmatchedSlash","extname","startPart","startDot","preDotState","code","join","joined","segments","normalize","sep","absolute","allowAboveRoot","lastSlashIndex","lastSegmentLength","lastSlash","dots","lastIndexOf","normalizeString","proc","cwd","isUrl","fileURLOrPath","urlToPath","URL","protocol","hostname","pathname","third","decodeURIComponent","getPathFromURLPosix","order","VFile","buffer","messages","history","stored","prop","assertNonEmpty","assertPart","stem","encoding","toString","part","_toArray","arrayWithHoles","iterableToArray","unsupportedIterableToArray","nonIterableRest","bail","isPlainObject","toStringTag","wrap","middleware","called","parameters","fnExpectsCallback","done","exception","Promise","then","output","unified","frozen","transformers","fns","pipeline","run","middlewareIndex","pop","next","fn","use","middelware","trough","attachers","namespace","freezeIndex","processor","assertUnfrozen","own","Parser","Compiler","freeze","attacher","transformer","Number","POSITIVE_INFINITY","settings","addPlugin","addList","addPreset","assign","add","plugin","plugins","entry","isPlainObj","extend","doc","vfile","assertParser","newable","assertCompiler","assertNode","compile","executor","resolve","reject","tree","runSync","complete","assertDone","isBuffer","processSync","destination","hasOwnProperty","asyncName","looksLikeAVFile","includeImageAlt","one","alt","all","splice","list","items","chunkStart","from","combineExtensions","extensions","syntaxExtension","extension","hook","constructs","existing","before","asciiAlpha","regexCheck","asciiDigit","asciiHexDigit","asciiAlphanumeric","asciiPunctuation","asciiAtext","asciiControl","markdownLineEndingOrSpace","markdownLineEnding","markdownSpace","unicodeWhitespace","unicodePunctuation","regex","fromCharCode","factorySpace","effects","ok","limit","prefix","consume","exit","content","tokenize","previous","contentStart","attempt","parser","contentInitial","lineStart","token","contentType","childFlow","childToken","lineStartOffset","continued","item","containerState","continuation","documentContinue","checkNewContainers","_closeFlow","closeFlow","indexBeforeExits","events","indexBeforeFlow","exitContainers","documentContinued","currentConstruct","concrete","flowStart","interrupt","_gfmTableDynamicInterruptHack","check","containerConstruct","thereIsANewContainer","thereIsNoNewContainer","lazy","now","offset","containerContinue","flow","_tokenizer","flowContinue","writeToChild","eof","stream","sliceStream","defineSkip","write","seen","nok","disable","null","blankLine","partial","subtokenize","lineIndex","otherIndex","otherEvent","subevents","more","jumps","_isInFirstContentOfListItem","subcontent","_container","eventIndex","startPosition","startPositions","tokenizer","childEvents","gaps","current","adjust","breaks","_gfmTasklistFirstContentOfListItem","contentEnd","continuationConstruct","contentContinue","prefixed","tail","sliceSerialize","initial","flowInitial","afterConstruct","resolver","resolveAll","createResolver","initializeFactory","field","notText","atBreak","resolveAllLineSuffixes","extraResolver","chunks","bufferIndex","tabs","chunk","_index","_bufferIndex","createTokenizer","initialize","columnStart","resolveAllConstructs","accountForPotentialSkip","fields","constructFactory","info","addResult","onsuccessfulcheck","expandTabs","atTab","serializeChunks","main","state","view","startBufferIndex","endBufferIndex","sliceChunks","chunkIndex","go","restore","onreturn","returnState","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","def","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","resolveTo","thematicBreak","marker","sequence","initialSize","kind","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","furtherBlankLines","notInCurrentItem","indentConstruct","blockQuote","open","after","factoryDestination","literalType","literalMarkerType","rawType","stringType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","factoryLabel","markerType","label","labelEscape","factoryTitle","atFirstTitleBreak","atTitleBreak","titleEscape","factoryWhitespace","normalizeIdentifier","toLowerCase","definition","identifier","labelAfter","titleConstruct","defined","codeIndented","afterStartPrefix","afterPrefix","indentedContent","headingAtx","fenceOpenInside","headingBreak","setextUnderline","paragraph","closingSequence","closingSequenceEnd","heading","htmlBlockNames","htmlRawNames","htmlFlow","startTag","declarationStart","tagCloseStart","continuationDeclarationInside","tagName","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","htmlLineEnd","continuationRawEndTag","codeFenced","closingFenceConstruct","sizeOpen","nonLazyLine","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","meta","characterEntities","AElig","AMP","Aacute","Abreve","Acirc","Acy","Afr","Agrave","Alpha","Amacr","And","Aogon","Aopf","ApplyFunction","Aring","Ascr","Assign","Atilde","Auml","Backslash","Barv","Barwed","Bcy","Because","Bernoullis","Beta","Bfr","Bopf","Breve","Bscr","Bumpeq","CHcy","COPY","Cacute","Cap","CapitalDifferentialD","Cayleys","Ccaron","Ccedil","Ccirc","Cconint","Cdot","Cedilla","CenterDot","Cfr","Chi","CircleDot","CircleMinus","CirclePlus","CircleTimes","ClockwiseContourIntegral","CloseCurlyDoubleQuote","CloseCurlyQuote","Colon","Colone","Congruent","Conint","ContourIntegral","Copf","Coproduct","CounterClockwiseContourIntegral","Cross","Cscr","Cup","CupCap","DD","DDotrahd","DJcy","DScy","DZcy","Dagger","Darr","Dashv","Dcaron","Dcy","Del","Delta","Dfr","DiacriticalAcute","DiacriticalDot","DiacriticalDoubleAcute","DiacriticalGrave","DiacriticalTilde","Diamond","DifferentialD","Dopf","Dot","DotDot","DotEqual","DoubleContourIntegral","DoubleDot","DoubleDownArrow","DoubleLeftArrow","DoubleLeftRightArrow","DoubleLeftTee","DoubleLongLeftArrow","DoubleLongLeftRightArrow","DoubleLongRightArrow","DoubleRightArrow","DoubleRightTee","DoubleUpArrow","DoubleUpDownArrow","DoubleVerticalBar","DownArrow","DownArrowBar","DownArrowUpArrow","DownBreve","DownLeftRightVector","DownLeftTeeVector","DownLeftVector","DownLeftVectorBar","DownRightTeeVector","DownRightVector","DownRightVectorBar","DownTee","DownTeeArrow","Downarrow","Dscr","Dstrok","ENG","ETH","Eacute","Ecaron","Ecirc","Ecy","Edot","Efr","Egrave","Element","Emacr","EmptySmallSquare","EmptyVerySmallSquare","Eogon","Eopf","Epsilon","Equal","EqualTilde","Equilibrium","Escr","Esim","Eta","Euml","Exists","ExponentialE","Fcy","Ffr","FilledSmallSquare","FilledVerySmallSquare","Fopf","ForAll","Fouriertrf","Fscr","GJcy","GT","Gamma","Gammad","Gbreve","Gcedil","Gcirc","Gcy","Gdot","Gfr","Gg","Gopf","GreaterEqual","GreaterEqualLess","GreaterFullEqual","GreaterGreater","GreaterLess","GreaterSlantEqual","GreaterTilde","Gscr","Gt","HARDcy","Hacek","Hat","Hcirc","Hfr","HilbertSpace","Hopf","HorizontalLine","Hscr","Hstrok","HumpDownHump","HumpEqual","IEcy","IJlig","IOcy","Iacute","Icirc","Icy","Idot","Ifr","Igrave","Im","Imacr","ImaginaryI","Implies","Int","Integral","Intersection","InvisibleComma","InvisibleTimes","Iogon","Iopf","Iota","Iscr","Itilde","Iukcy","Iuml","Jcirc","Jcy","Jfr","Jopf","Jscr","Jsercy","Jukcy","KHcy","KJcy","Kappa","Kcedil","Kcy","Kfr","Kopf","Kscr","LJcy","LT","Lacute","Lambda","Lang","Laplacetrf","Larr","Lcaron","Lcedil","Lcy","LeftAngleBracket","LeftArrow","LeftArrowBar","LeftArrowRightArrow","LeftCeiling","LeftDoubleBracket","LeftDownTeeVector","LeftDownVector","LeftDownVectorBar","LeftFloor","LeftRightArrow","LeftRightVector","LeftTee","LeftTeeArrow","LeftTeeVector","LeftTriangle","LeftTriangleBar","LeftTriangleEqual","LeftUpDownVector","LeftUpTeeVector","LeftUpVector","LeftUpVectorBar","LeftVector","LeftVectorBar","Leftarrow","Leftrightarrow","LessEqualGreater","LessFullEqual","LessGreater","LessLess","LessSlantEqual","LessTilde","Lfr","Ll","Lleftarrow","Lmidot","LongLeftArrow","LongLeftRightArrow","LongRightArrow","Longleftarrow","Longleftrightarrow","Longrightarrow","Lopf","LowerLeftArrow","LowerRightArrow","Lscr","Lsh","Lstrok","Lt","Mcy","MediumSpace","Mellintrf","Mfr","MinusPlus","Mopf","Mscr","Mu","NJcy","Nacute","Ncaron","Ncedil","Ncy","NegativeMediumSpace","NegativeThickSpace","NegativeThinSpace","NegativeVeryThinSpace","NestedGreaterGreater","NestedLessLess","NewLine","Nfr","NoBreak","NonBreakingSpace","Nopf","Not","NotCongruent","NotCupCap","NotDoubleVerticalBar","NotElement","NotEqual","NotEqualTilde","NotExists","NotGreater","NotGreaterEqual","NotGreaterFullEqual","NotGreaterGreater","NotGreaterLess","NotGreaterSlantEqual","NotGreaterTilde","NotHumpDownHump","NotHumpEqual","NotLeftTriangle","NotLeftTriangleBar","NotLeftTriangleEqual","NotLess","NotLessEqual","NotLessGreater","NotLessLess","NotLessSlantEqual","NotLessTilde","NotNestedGreaterGreater","NotNestedLessLess","NotPrecedes","NotPrecedesEqual","NotPrecedesSlantEqual","NotReverseElement","NotRightTriangle","NotRightTriangleBar","NotRightTriangleEqual","NotSquareSubset","NotSquareSubsetEqual","NotSquareSuperset","NotSquareSupersetEqual","NotSubset","NotSubsetEqual","NotSucceeds","NotSucceedsEqual","NotSucceedsSlantEqual","NotSucceedsTilde","NotSuperset","NotSupersetEqual","NotTilde","NotTildeEqual","NotTildeFullEqual","NotTildeTilde","NotVerticalBar","Nscr","Ntilde","Nu","OElig","Oacute","Ocirc","Ocy","Odblac","Ofr","Ograve","Omacr","Omega","Omicron","Oopf","OpenCurlyDoubleQuote","OpenCurlyQuote","Or","Oscr","Oslash","Otilde","Otimes","Ouml","OverBar","OverBrace","OverBracket","OverParenthesis","PartialD","Pcy","Pfr","Phi","Pi","PlusMinus","Poincareplane","Popf","Pr","Precedes","PrecedesEqual","PrecedesSlantEqual","PrecedesTilde","Prime","Product","Proportion","Proportional","Pscr","Psi","QUOT","Qfr","Qopf","Qscr","RBarr","REG","Racute","Rang","Rarr","Rarrtl","Rcaron","Rcedil","Rcy","Re","ReverseElement","ReverseEquilibrium","ReverseUpEquilibrium","Rfr","Rho","RightAngleBracket","RightArrow","RightArrowBar","RightArrowLeftArrow","RightCeiling","RightDoubleBracket","RightDownTeeVector","RightDownVector","RightDownVectorBar","RightFloor","RightTee","RightTeeArrow","RightTeeVector","RightTriangle","RightTriangleBar","RightTriangleEqual","RightUpDownVector","RightUpTeeVector","RightUpVector","RightUpVectorBar","RightVector","RightVectorBar","Rightarrow","Ropf","RoundImplies","Rrightarrow","Rscr","Rsh","RuleDelayed","SHCHcy","SHcy","SOFTcy","Sacute","Sc","Scaron","Scedil","Scirc","Scy","Sfr","ShortDownArrow","ShortLeftArrow","ShortRightArrow","ShortUpArrow","Sigma","SmallCircle","Sopf","Sqrt","Square","SquareIntersection","SquareSubset","SquareSubsetEqual","SquareSuperset","SquareSupersetEqual","SquareUnion","Sscr","Star","Sub","Subset","SubsetEqual","Succeeds","SucceedsEqual","SucceedsSlantEqual","SucceedsTilde","SuchThat","Sum","Sup","Superset","SupersetEqual","Supset","THORN","TRADE","TSHcy","TScy","Tab","Tau","Tcaron","Tcedil","Tcy","Tfr","Therefore","Theta","ThickSpace","ThinSpace","Tilde","TildeEqual","TildeFullEqual","TildeTilde","Topf","TripleDot","Tscr","Tstrok","Uacute","Uarr","Uarrocir","Ubrcy","Ubreve","Ucirc","Ucy","Udblac","Ufr","Ugrave","Umacr","UnderBar","UnderBrace","UnderBracket","UnderParenthesis","Union","UnionPlus","Uogon","Uopf","UpArrow","UpArrowBar","UpArrowDownArrow","UpDownArrow","UpEquilibrium","UpTee","UpTeeArrow","Uparrow","Updownarrow","UpperLeftArrow","UpperRightArrow","Upsi","Upsilon","Uring","Uscr","Utilde","Uuml","VDash","Vbar","Vcy","Vdash","Vdashl","Vee","Verbar","Vert","VerticalBar","VerticalLine","VerticalSeparator","VerticalTilde","VeryThinSpace","Vfr","Vopf","Vscr","Vvdash","Wcirc","Wedge","Wfr","Wopf","Wscr","Xfr","Xi","Xopf","Xscr","YAcy","YIcy","YUcy","Yacute","Ycirc","Ycy","Yfr","Yopf","Yscr","Yuml","ZHcy","Zacute","Zcaron","Zcy","Zdot","ZeroWidthSpace","Zeta","Zfr","Zopf","Zscr","aacute","abreve","ac","acE","acd","acirc","acute","acy","aelig","af","afr","agrave","alefsym","aleph","alpha","amacr","amalg","amp","and","andand","andd","andslope","andv","ang","ange","angle","angmsd","angmsdaa","angmsdab","angmsdac","angmsdad","angmsdae","angmsdaf","angmsdag","angmsdah","angrt","angrtvb","angrtvbd","angsph","angst","angzarr","aogon","aopf","ap","apE","apacir","ape","apid","apos","approx","approxeq","aring","ascr","ast","asymp","asympeq","atilde","auml","awconint","awint","bNot","backcong","backepsilon","backprime","backsim","backsimeq","barvee","barwed","barwedge","bbrk","bbrktbrk","bcong","bcy","bdquo","becaus","because","bemptyv","bepsi","bernou","beta","beth","between","bfr","bigcap","bigcirc","bigcup","bigodot","bigoplus","bigotimes","bigsqcup","bigstar","bigtriangledown","bigtriangleup","biguplus","bigvee","bigwedge","bkarow","blacklozenge","blacksquare","blacktriangle","blacktriangledown","blacktriangleleft","blacktriangleright","blank","blk12","blk14","blk34","block","bne","bnequiv","bnot","bopf","bot","bowtie","boxDL","boxDR","boxDl","boxDr","boxH","boxHD","boxHU","boxHd","boxHu","boxUL","boxUR","boxUl","boxUr","boxV","boxVH","boxVL","boxVR","boxVh","boxVl","boxVr","boxbox","boxdL","boxdR","boxdl","boxdr","boxh","boxhD","boxhU","boxhd","boxhu","boxminus","boxplus","boxtimes","boxuL","boxuR","boxul","boxur","boxv","boxvH","boxvL","boxvR","boxvh","boxvl","boxvr","bprime","breve","brvbar","bscr","bsemi","bsim","bsime","bsol","bsolb","bsolhsub","bull","bullet","bump","bumpE","bumpe","bumpeq","cacute","cap","capand","capbrcup","capcap","capcup","capdot","caps","caret","caron","ccaps","ccaron","ccedil","ccirc","ccups","ccupssm","cdot","cedil","cemptyv","cent","centerdot","cfr","chcy","checkmark","chi","cir","cirE","circ","circeq","circlearrowleft","circlearrowright","circledR","circledS","circledast","circledcirc","circleddash","cire","cirfnint","cirmid","cirscir","clubs","clubsuit","colon","colone","coloneq","comma","commat","comp","compfn","complement","complexes","cong","congdot","conint","copf","coprod","copysr","crarr","cross","cscr","csub","csube","csup","csupe","ctdot","cudarrl","cudarrr","cuepr","cuesc","cularr","cularrp","cup","cupbrcap","cupcap","cupcup","cupdot","cupor","cups","curarr","curarrm","curlyeqprec","curlyeqsucc","curlyvee","curlywedge","curren","curvearrowleft","curvearrowright","cuvee","cuwed","cwconint","cwint","cylcty","dArr","dHar","dagger","daleth","darr","dash","dashv","dbkarow","dblac","dcaron","dcy","dd","ddagger","ddarr","ddotseq","deg","delta","demptyv","dfisht","dfr","dharl","dharr","diam","diamond","diamondsuit","diams","die","digamma","disin","divide","divideontimes","divonx","djcy","dlcorn","dlcrop","dollar","dopf","dot","doteq","doteqdot","dotminus","dotplus","dotsquare","doublebarwedge","downarrow","downdownarrows","downharpoonleft","downharpoonright","drbkarow","drcorn","drcrop","dscr","dscy","dsol","dstrok","dtdot","dtri","dtrif","duarr","duhar","dwangle","dzcy","dzigrarr","eDDot","eDot","eacute","easter","ecaron","ecir","ecirc","ecolon","ecy","edot","ee","efDot","efr","eg","egrave","egs","egsdot","el","elinters","ell","els","elsdot","emacr","empty","emptyset","emptyv","emsp13","emsp14","emsp","eng","ensp","eogon","eopf","epar","eparsl","eplus","epsi","epsilon","epsiv","eqcirc","eqcolon","eqsim","eqslantgtr","eqslantless","equals","equest","equiv","equivDD","eqvparsl","erDot","erarr","escr","esdot","esim","eta","eth","euml","euro","excl","exist","expectation","exponentiale","fallingdotseq","fcy","female","ffilig","fflig","ffllig","ffr","filig","fjlig","fllig","fltns","fnof","fopf","forall","fork","forkv","fpartint","frac12","frac13","frac14","frac15","frac16","frac18","frac23","frac25","frac34","frac35","frac38","frac45","frac56","frac58","frac78","frasl","frown","fscr","gE","gEl","gacute","gamma","gammad","gap","gbreve","gcirc","gcy","gdot","ge","gel","geq","geqq","geqslant","ges","gescc","gesdot","gesdoto","gesdotol","gesl","gesles","gfr","gg","ggg","gimel","gjcy","gl","glE","gla","glj","gnE","gnap","gnapprox","gne","gneq","gneqq","gnsim","gopf","grave","gscr","gsim","gsime","gsiml","gt","gtcc","gtcir","gtdot","gtlPar","gtquest","gtrapprox","gtrarr","gtrdot","gtreqless","gtreqqless","gtrless","gtrsim","gvertneqq","gvnE","hArr","hairsp","half","hamilt","hardcy","harr","harrcir","harrw","hbar","hcirc","hearts","heartsuit","hellip","hercon","hfr","hksearow","hkswarow","hoarr","homtht","hookleftarrow","hookrightarrow","hopf","horbar","hscr","hslash","hstrok","hybull","hyphen","iacute","ic","icirc","icy","iecy","iexcl","iff","ifr","igrave","ii","iiiint","iiint","iinfin","iiota","ijlig","imacr","imagline","imagpart","imath","imof","imped","in","incare","infin","infintie","inodot","int","intcal","integers","intercal","intlarhk","intprod","iocy","iogon","iopf","iota","iprod","iquest","iscr","isin","isinE","isindot","isins","isinsv","isinv","itilde","iukcy","iuml","jcirc","jcy","jfr","jmath","jopf","jscr","jsercy","jukcy","kappa","kappav","kcedil","kcy","kfr","kgreen","khcy","kjcy","kopf","kscr","lAarr","lArr","lAtail","lBarr","lE","lEg","lHar","lacute","laemptyv","lagran","lambda","langd","langle","lap","laquo","larr","larrb","larrbfs","larrfs","larrhk","larrlp","larrpl","larrsim","larrtl","lat","latail","late","lates","lbarr","lbbrk","lbrace","lbrack","lbrke","lbrksld","lbrkslu","lcaron","lcedil","lceil","lcub","lcy","ldca","ldquo","ldquor","ldrdhar","ldrushar","ldsh","le","leftarrow","leftarrowtail","leftharpoondown","leftharpoonup","leftleftarrows","leftrightarrow","leftrightarrows","leftrightharpoons","leftrightsquigarrow","leftthreetimes","leg","leq","leqq","leqslant","les","lescc","lesdot","lesdoto","lesdotor","lesg","lesges","lessapprox","lessdot","lesseqgtr","lesseqqgtr","lessgtr","lesssim","lfisht","lfloor","lfr","lg","lgE","lhard","lharu","lharul","lhblk","ljcy","ll","llarr","llcorner","llhard","lltri","lmidot","lmoust","lmoustache","lnE","lnap","lnapprox","lne","lneq","lneqq","lnsim","loang","loarr","lobrk","longleftarrow","longleftrightarrow","longmapsto","longrightarrow","looparrowleft","looparrowright","lopar","lopf","loplus","lotimes","lowast","lowbar","loz","lozenge","lozf","lpar","lparlt","lrarr","lrcorner","lrhar","lrhard","lrm","lrtri","lsaquo","lscr","lsh","lsim","lsime","lsimg","lsqb","lsquo","lsquor","lstrok","lt","ltcc","ltcir","ltdot","lthree","ltimes","ltlarr","ltquest","ltrPar","ltri","ltrie","ltrif","lurdshar","luruhar","lvertneqq","lvnE","mDDot","macr","male","malt","maltese","mapsto","mapstodown","mapstoleft","mapstoup","mcomma","mcy","mdash","measuredangle","mfr","mho","micro","midast","midcir","middot","minus","minusb","minusd","minusdu","mlcp","mldr","mnplus","models","mopf","mp","mscr","mstpos","mu","multimap","mumap","nGg","nGt","nGtv","nLeftarrow","nLeftrightarrow","nLl","nLt","nLtv","nRightarrow","nVDash","nVdash","nabla","nacute","nang","nap","napE","napid","napos","napprox","natur","natural","naturals","nbsp","nbump","nbumpe","ncap","ncaron","ncedil","ncong","ncongdot","ncup","ncy","ndash","ne","neArr","nearhk","nearr","nearrow","nedot","nequiv","nesear","nesim","nexist","nexists","nfr","ngE","nge","ngeq","ngeqq","ngeqslant","nges","ngsim","ngt","ngtr","nhArr","nharr","nhpar","ni","nis","nisd","niv","njcy","nlArr","nlE","nlarr","nldr","nle","nleftarrow","nleftrightarrow","nleq","nleqq","nleqslant","nles","nless","nlsim","nlt","nltri","nltrie","nmid","nopf","not","notin","notinE","notindot","notinva","notinvb","notinvc","notni","notniva","notnivb","notnivc","npar","nparallel","nparsl","npart","npolint","npr","nprcue","npre","nprec","npreceq","nrArr","nrarr","nrarrc","nrarrw","nrightarrow","nrtri","nrtrie","nsc","nsccue","nsce","nscr","nshortmid","nshortparallel","nsim","nsime","nsimeq","nsmid","nspar","nsqsube","nsqsupe","nsub","nsubE","nsube","nsubset","nsubseteq","nsubseteqq","nsucc","nsucceq","nsup","nsupE","nsupe","nsupset","nsupseteq","nsupseteqq","ntgl","ntilde","ntlg","ntriangleleft","ntrianglelefteq","ntriangleright","ntrianglerighteq","nu","numero","numsp","nvDash","nvHarr","nvap","nvdash","nvge","nvgt","nvinfin","nvlArr","nvle","nvlt","nvltrie","nvrArr","nvrtrie","nvsim","nwArr","nwarhk","nwarr","nwarrow","nwnear","oS","oacute","oast","ocir","ocirc","ocy","odash","odblac","odiv","odot","odsold","oelig","ofcir","ofr","ogon","ograve","ogt","ohbar","ohm","oint","olarr","olcir","olcross","oline","olt","omacr","omega","omicron","omid","ominus","oopf","opar","operp","oplus","or","orarr","ord","orderof","ordf","ordm","origof","oror","orslope","orv","oscr","oslash","osol","otilde","otimes","otimesas","ouml","ovbar","par","para","parallel","parsim","parsl","pcy","percnt","period","permil","perp","pertenk","pfr","phi","phiv","phmmat","phone","pitchfork","piv","planck","planckh","plankv","plus","plusacir","plusb","pluscir","plusdo","plusdu","pluse","plusmn","plussim","plustwo","pm","pointint","popf","pound","pr","prE","prap","prcue","pre","prec","precapprox","preccurlyeq","preceq","precnapprox","precneqq","precnsim","precsim","prime","primes","prnE","prnap","prnsim","prod","profalar","profline","profsurf","propto","prsim","prurel","pscr","psi","puncsp","qfr","qint","qopf","qprime","qscr","quaternions","quatint","quest","questeq","quot","rAarr","rArr","rAtail","rBarr","rHar","race","racute","radic","raemptyv","rang","rangd","rangle","raquo","rarr","rarrap","rarrb","rarrbfs","rarrc","rarrfs","rarrhk","rarrlp","rarrpl","rarrsim","rarrtl","rarrw","ratail","ratio","rationals","rbarr","rbbrk","rbrace","rbrack","rbrke","rbrksld","rbrkslu","rcaron","rcedil","rceil","rcub","rcy","rdca","rdldhar","rdquo","rdquor","rdsh","real","realine","realpart","reals","rect","reg","rfisht","rfloor","rfr","rhard","rharu","rharul","rho","rhov","rightarrow","rightarrowtail","rightharpoondown","rightharpoonup","rightleftarrows","rightleftharpoons","rightrightarrows","rightsquigarrow","rightthreetimes","risingdotseq","rlarr","rlhar","rlm","rmoust","rmoustache","rnmid","roang","roarr","robrk","ropar","ropf","roplus","rotimes","rpar","rpargt","rppolint","rrarr","rsaquo","rscr","rsh","rsqb","rsquo","rsquor","rthree","rtimes","rtri","rtrie","rtrif","rtriltri","ruluhar","rx","sacute","sbquo","sc","scE","scap","scaron","sccue","sce","scedil","scirc","scnE","scnap","scnsim","scpolint","scsim","scy","sdot","sdotb","sdote","seArr","searhk","searr","searrow","sect","semi","seswar","setminus","setmn","sext","sfr","sfrown","sharp","shchcy","shcy","shortmid","shortparallel","shy","sigma","sigmaf","sigmav","sim","simdot","sime","simeq","simg","simgE","siml","simlE","simne","simplus","simrarr","slarr","smallsetminus","smashp","smeparsl","smid","smile","smt","smte","smtes","softcy","sol","solb","solbar","sopf","spades","spadesuit","spar","sqcap","sqcaps","sqcup","sqcups","sqsub","sqsube","sqsubset","sqsubseteq","sqsup","sqsupe","sqsupset","sqsupseteq","squ","square","squarf","squf","srarr","sscr","ssetmn","ssmile","sstarf","star","starf","straightepsilon","straightphi","strns","sub","subE","subdot","sube","subedot","submult","subnE","subne","subplus","subrarr","subset","subseteq","subseteqq","subsetneq","subsetneqq","subsim","subsub","subsup","succ","succapprox","succcurlyeq","succeq","succnapprox","succneqq","succnsim","succsim","sum","sung","sup1","sup2","sup3","sup","supE","supdot","supdsub","supe","supedot","suphsol","suphsub","suplarr","supmult","supnE","supne","supplus","supset","supseteq","supseteqq","supsetneq","supsetneqq","supsim","supsub","supsup","swArr","swarhk","swarr","swarrow","swnwar","szlig","tau","tbrk","tcaron","tcedil","tcy","tdot","telrec","tfr","there4","therefore","theta","thetasym","thetav","thickapprox","thicksim","thinsp","thkap","thksim","thorn","tilde","times","timesb","timesbar","timesd","tint","toea","topbot","topcir","topf","topfork","tosa","tprime","trade","triangle","triangledown","triangleleft","trianglelefteq","triangleq","triangleright","trianglerighteq","tridot","trie","triminus","triplus","trisb","tritime","trpezium","tscr","tscy","tshcy","tstrok","twixt","twoheadleftarrow","twoheadrightarrow","uArr","uHar","uacute","uarr","ubrcy","ubreve","ucirc","ucy","udarr","udblac","udhar","ufisht","ufr","ugrave","uharl","uharr","uhblk","ulcorn","ulcorner","ulcrop","ultri","umacr","uml","uogon","uopf","uparrow","updownarrow","upharpoonleft","upharpoonright","uplus","upsi","upsih","upsilon","upuparrows","urcorn","urcorner","urcrop","uring","urtri","uscr","utdot","utilde","utri","utrif","uuarr","uuml","uwangle","vArr","vBar","vBarv","vDash","vangrt","varepsilon","varkappa","varnothing","varphi","varpi","varpropto","varr","varrho","varsigma","varsubsetneq","varsubsetneqq","varsupsetneq","varsupsetneqq","vartheta","vartriangleleft","vartriangleright","vcy","vdash","vee","veebar","veeeq","vellip","verbar","vert","vfr","vltri","vnsub","vnsup","vopf","vprop","vrtri","vscr","vsubnE","vsubne","vsupnE","vsupne","vzigzag","wcirc","wedbar","wedge","wedgeq","weierp","wfr","wopf","wp","wr","wreath","wscr","xcap","xcirc","xcup","xdtri","xfr","xhArr","xharr","xlArr","xlarr","xmap","xnis","xodot","xopf","xoplus","xotime","xrArr","xrarr","xscr","xsqcup","xuplus","xutri","xvee","xwedge","yacute","yacy","ycirc","ycy","yen","yfr","yicy","yopf","yscr","yucy","yuml","zacute","zcaron","zcy","zdot","zeetrf","zeta","zfr","zhcy","zigrarr","zopf","zscr","zwj","zwnj","decodeNamedCharacterReference","characterReference","numeric","characterEscape","lineEnding","labelEnd","labelStart","_balanced","_inactive","balanced","afterLabelEnd","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","close","media","group","insideSpan","destinationAfter","afterLabel","labelStartImage","classifyCharacter","attention","attentionMarkers","_open","_close","openingSequence","nextEvents","movePoint","autolink","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","htmlText","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","declaration","commentStart","commentStartDash","comment","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","labelStartLink","hardBreakEscape","codeText","tailExitIndex","headEnterIndex","resolveText","search","decodeNumericCharacterReference","characterEscapeOrReference","decodeString","decode","$0","$1","$2","head","fromMarkdown","config","configure","transforms","canContainEols","opener","link","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","emphasis","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","listItem","listItemValue","onenterlistitemvalue","listOrdered","onenterlistordered","listUnordered","reference","onenterreference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","strong","closer","atxHeadingSequence","onexitatxheadingsequence","onexitautolinkemail","onexitautolinkprotocol","characterEscapeValue","onexitdata","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","onexitcharacterreferencevalue","onexitcodefenced","codeFencedFence","onexitcodefencedfence","onexitcodefencedfenceinfo","onexitcodefencedfencemeta","onexitcodeindented","onexitcodetext","onexitdefinitiondestinationstring","onexitdefinitionlabelstring","onexitdefinitiontitlestring","onexithardbreak","onexithtmlflow","onexithtmltext","onexitimage","onexitlabel","labelText","onexitlabeltext","onexitlineending","onexitlink","onexitreferencestring","onexitresourcedestinationstring","onexitresourcetitlestring","resource","onexitresource","onexitsetextheading","setextHeadingLineSequence","onexitsetextheadinglinesequence","setextHeadingText","onexitsetextheadingtext","mdastExtensions","tokenStack","listStack","resume","setData","getData","prepareList","handler","defaultOnError","firstBlankLineIndex","containerBalance","listSpread","tailIndex","tailEvent","_spread","errorHandler","onExitError","depth","referenceType","ancestor","fragment","ordered","spread","checked","compiler","postprocess","defaultConstructs","atCarriageReturn","match","endPosition","lastIndex","exec","preprocess","combined","remarkParse","u","convert","castFactory","anyFactory","propsFactory","tests","checks","visitParents","visitor","reverse","is","factory","parents","visit","subresult","grandparents","toResult","pointStart","pointEnd","clean","unknown","augment","handlers","passThrough","returnNode","unknownHandler","nodes","characterReferences","sanitizeUri","encode","skip","normalizeUri","questionMark","numberSign","slash","loose","footnoteReference","counter","safeId","footnoteOrder","footnoteCounts","reuseCounter","clobberPrefix","dataFootnoteRef","ariaDescribedBy","revert","subtype","suffix","contents","listItemLoose","trimLine","codePointAt","blockquote","break","className","delete","footnote","footnoteById","no","dangerous","imageReference","inlineCode","linkReference","listLoose","wrapped","disabled","properties","root","table","rows","align","row","out","cellIndex","cell","last","lines","trimLines","toml","ignore","yaml","footnoteDefinition","allowDangerousHtml","footnoteLabel","footnoteLabelTagName","footnoteLabelProperties","footnoteBackLabel","cache","definitions","hName","hProperties","hChildren","ctx","toHast","foot","listItems","referenceIndex","backReferences","backReference","dataFootnoteBackref","ariaLabel","tailTail","dataFootnotes","footer","remarkRehype","bridge","mutate","Schema","property","normal","space","merge","Info","attribute","boolean","booleanish","overloadedBoolean","commaSeparated","spaceSeparated","commaOrSpaceSeparated","mustUseProperty","powers","increment","types","DefinedInfo","mask","mark","xlink","xLinkActuate","xLinkArcRole","xLinkHref","xLinkRole","xLinkShow","xLinkTitle","xLinkType","xml","xmlLang","xmlBase","xmlSpace","caseSensitiveTransform","caseInsensitiveTransform","xmlns","xmlnsxlink","xmlnsXLink","aria","ariaActiveDescendant","ariaAtomic","ariaAutoComplete","ariaBusy","ariaChecked","ariaColCount","ariaColIndex","ariaColSpan","ariaControls","ariaCurrent","ariaDetails","ariaDisabled","ariaDropEffect","ariaErrorMessage","ariaExpanded","ariaFlowTo","ariaGrabbed","ariaHasPopup","ariaHidden","ariaInvalid","ariaKeyShortcuts","ariaLabelledBy","ariaLevel","ariaLive","ariaModal","ariaMultiLine","ariaMultiSelectable","ariaOrientation","ariaOwns","ariaPlaceholder","ariaPosInSet","ariaPressed","ariaReadOnly","ariaRelevant","ariaRequired","ariaRoleDescription","ariaRowCount","ariaRowIndex","ariaRowSpan","ariaSelected","ariaSetSize","ariaSort","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","role","acceptcharset","classname","htmlfor","httpequiv","abbr","accept","acceptCharset","accessKey","action","allow","allowFullScreen","allowPaymentRequest","allowUserMedia","as","async","autoCapitalize","autoComplete","autoFocus","autoPlay","capture","charSet","cite","cols","colSpan","contentEditable","controls","controlsList","coords","crossOrigin","decoding","defer","dir","dirName","draggable","encType","enterKeyHint","form","formAction","formEncType","formMethod","formNoValidate","formTarget","headers","hidden","hrefLang","htmlFor","httpEquiv","imageSizes","imageSrcSet","inputMode","integrity","isMap","itemId","itemProp","itemRef","itemScope","itemType","loading","loop","manifest","maxLength","minLength","multiple","muted","nonce","noModule","noValidate","onAbort","onAfterPrint","onAuxClick","onBeforePrint","onBeforeUnload","onBlur","onCancel","onCanPlay","onCanPlayThrough","onClick","onClose","onContextLost","onContextMenu","onContextRestored","onCopy","onCueChange","onCut","onDblClick","onDrag","onDragEnd","onDragEnter","onDragExit","onDragLeave","onDragOver","onDragStart","onDrop","onDurationChange","onEmptied","onEnded","onError","onFocus","onFormData","onHashChange","onInput","onInvalid","onKeyDown","onKeyPress","onKeyUp","onLanguageChange","onLoad","onLoadedData","onLoadedMetadata","onLoadEnd","onLoadStart","onMessage","onMessageError","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onOffline","onOnline","onPageHide","onPageShow","onPaste","onPause","onPlay","onPlaying","onPopState","onProgress","onRateChange","onRejectionHandled","onReset","onResize","onScroll","onSecurityPolicyViolation","onSeeked","onSeeking","onSelect","onSlotChange","onStalled","onStorage","onSubmit","onSuspend","onTimeUpdate","onToggle","onUnhandledRejection","onUnload","onVolumeChange","onWaiting","onWheel","optimum","pattern","ping","placeholder","playsInline","poster","preload","readOnly","referrerPolicy","rel","required","reversed","rowSpan","sandbox","scope","scoped","seamless","selected","sizes","slot","span","spellCheck","srcDoc","srcLang","srcSet","tabIndex","translate","typeMustMatch","useMap","aLink","archive","background","bgColor","border","borderColor","bottomMargin","cellPadding","cellSpacing","char","charOff","classId","clear","codeBase","codeType","compact","declare","face","frame","frameBorder","hSpace","leftMargin","longDesc","lowSrc","marginHeight","marginWidth","noResize","noHref","noShade","noWrap","profile","prompt","rev","rightMargin","rules","scheme","scrolling","standby","summary","topMargin","valueType","version","vAlign","vLink","vSpace","allowTransparency","autoCorrect","autoSave","disablePictureInPicture","disableRemotePlayback","results","security","unselectable","accentHeight","alignmentBaseline","arabicForm","baselineShift","capHeight","clipPath","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","dataType","dominantBaseline","enableBackground","fillOpacity","fillRule","floodColor","floodOpacity","fontFamily","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","horizAdvX","horizOriginX","horizOriginY","imageRendering","letterSpacing","lightingColor","markerEnd","markerMid","markerStart","navDown","navDownLeft","navDownRight","navLeft","navNext","navPrev","navRight","navUp","navUpLeft","navUpRight","onActivate","onBegin","onEnd","onFocusIn","onFocusOut","onMouseWheel","onRepeat","onShow","overlinePosition","overlineThickness","paintOrder","panose1","pointerEvents","renderingIntent","shapeRendering","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeOpacity","strokeWidth","textAnchor","textDecoration","textRendering","typeOf","underlinePosition","underlineThickness","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","vHanging","vIdeographic","vMathematical","vectorEffect","vertAdvY","vertOriginX","vertOriginY","wordSpacing","writingMode","xHeight","playbackOrder","timelineBegin","about","accumulate","additive","alphabetic","amplitude","ascent","attributeName","attributeType","azimuth","bandwidth","baseFrequency","baseProfile","bbox","begin","bias","by","calcMode","clip","clipPathUnits","contentScriptType","contentStyleType","cursor","cx","cy","defaultAction","descent","diffuseConstant","direction","dur","divisor","edgeMode","editable","elevation","exponent","externalResourcesRequired","filterRes","filterUnits","focusable","focusHighlight","fx","fy","g1","g2","glyphRef","gradientTransform","gradientUnits","hanging","hatchContentUnits","hatchUnits","ideographic","initialVisibility","in2","intercept","k1","k2","k3","k4","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","kerning","lengthAdjust","limitingConeAngle","local","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","mathematical","mediaCharacterEncoding","mediaContentEncodings","mediaSize","mediaTime","mode","numOctaves","observer","opacity","operator","orient","orientation","overlay","pathLength","patternContentUnits","patternTransform","patternUnits","phase","pitch","points","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","propagate","radius","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","requiredFonts","requiredFormats","restart","rotate","ry","seed","side","slope","snapshotTime","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stroke","surfaceScale","syncBehavior","syncBehaviorDefault","syncMaster","syncTolerance","syncToleranceDefault","systemLanguage","tableValues","targetX","targetY","textLength","transformBehavior","to","u1","u2","unicode","viewBox","viewTarget","visibility","widths","x1","x2","xChannelSelector","y1","y2","yChannelSelector","zoomAndPan","htmlBase","svgBase","rehypeFilter","allowedElements","disallowedElements","allowElement","parent_","unwrapDisallowed","protocols","whitespace","thing","valid","kebab","camelcase","hastToReact","tableElements","Set","childrenToReact","childIndex","toReact","skipHtml","parentSchema","schema","addProperty","listDepth","component","components","basic","Fragment","ReactIs","isValidElementType","linkTarget","transformLinkUri","inline","level","transformImageUri","getInputElement","getElementsBeforeCount","textAlign","isHeader","sourcePos","rawSourcePos","sourcePosition","includeElementIndex","siblingCount","count","Type","rest","dashes","find","padRight","padLeft","commas","styleReplacer","parseStyle","deprecated","renderers","astPlugins","escapeHtml","allowNode","allowedTypes","disallowedTypes","includeNodeIndex","ReactMarkdown","deprecation","remarkPlugins","remarkRehypeOptions","rehypePlugins","hastNode","uri","first","func","arrayOf","any","requiredArgs","isDate","toDate","argument","argStr","isValid","dirtyDate","formatDistanceLocale","lessThanXSeconds","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","tokenValue","addSuffix","comparison","buildFormatLongFn","defaultWidth","formats","formatLong","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findIndex","findKey","valueCallback","predicate","locale","formatRelative","_date","_baseDate","_options","localize","ordinalNumber","dirtyNumber","rem100","era","narrow","abbreviated","wide","quarter","day","dayPeriod","am","midnight","noon","morning","afternoon","evening","night","parsePattern","parseResult","weekStartsOn","firstWeekContainsDate","addMilliseconds","dirtyAmount","timestamp","amount","subMilliseconds","addLeadingZeros","targetLength","sign","formatters","signedYear","getUTCFullYear","M","getUTCMonth","getUTCDate","dayPeriodEnumValue","getUTCHours","H","m","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","pow","startOfUTCISOWeek","getUTCDay","setUTCDate","setUTCHours","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","dayPeriodEnum","formatTimezoneShort","dirtyDelimiter","absOffset","hours","minutes","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","G","unit","lightFormatters","Y","signedWeekYear","weekYear","R","Q","L","w","week","getUTCWeek","I","isoWeek","getUTCISOWeek","D","dayOfYear","setUTCMonth","startOfYearTimestamp","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","B","K","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","O","originalDate","T","dateLongFormatter","timeLongFormatter","longFormatters","P","dateTimeFormat","datePattern","timePattern","getTimezoneOffsetInMilliseconds","utcDate","UTC","getSeconds","getMilliseconds","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","defaultLocale","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","tileProps","tileGroupProps","isView","isClassName","isViews","isValue","isMaxDate","isMinDate","isCalendarType","_propTypes","__esModule","allViews","propName","componentName","minDate","maxDate","instanceOf","allowedViews","views","activeStartDate","tileClassName","tileContent","classes","objectOf","tileDisabled","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","err","_iterableToArrayLimit","_nonIterableRest","getYear","getMonthIndex","getDay","getDayOfWeek","getBeginOfCenturyYear","getBeginOfCentury","getEndOfCentury","getCenturyRange","getBeginOfPreviousCentury","getEndOfPreviousCentury","getBeginOfNextCentury","getBeginOfDecadeYear","getBeginOfDecade","getEndOfDecade","getDecadeRange","getBeginOfPreviousDecade","getEndOfPreviousDecade","getBeginOfNextDecade","getBeginOfYear","getEndOfYear","getYearRange","getBeginOfPreviousYear","getEndOfPreviousYear","getBeginOfNextYear","getBeginOfMonth","getEndOfMonth","getBeginOfWeek","getMonthRange","getBeginOfPreviousMonth","getEndOfPreviousMonth","getBeginOfNextMonth","getBeginOfDay","getEndOfDay","getDayRange","getWeekNumber","dayInWeekOne","beginOfFirstWeek","calendarType","calendarTypeForWeekNumber","beginOfWeek","getBegin","getBeginPrevious","rangeType","getBeginNext","getEnd","getEndPrevious","getRange","getValueRange","date1","date2","rawNextValue","getDaysInMonth","monthIndex","getCenturyLabel","toYearLabel","getDecadeLabel","isWeekend","weekday","FRIDAY","SATURDAY","SUNDAY","getISOLocalMonth","getISOLocalDate","getEndPrevious2","getBeginNext2","getBeginPrevious2","_map2","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","beginOfCenturyYear","beginOfDecadeYear","previousDecadeYear","nextDecadeYear","previousYear","nextYear","getDifferentMonth","previousMonthIndex","previousMonth","nextMonth","_ref2","isValueType","isTime","allValueTypes","hourOptionalSecondsRegExp","callIfDefined","getAmPmLabels","_dateFormatter","_toConsumableArray","isValidNumber","ninesRegExp","RegExp","amPmFormatter","getFormatter","amString","pmString","_amString$split2","am1","am2","_pmString$split2","pm1","pm2","_len3","_key3","safeMin","safeMax","formatShortWeekday","formatWeekday","formatMonthYear","formatLongDate","_getUserLocale","getSafeFormatter","toLocaleString","safeDate","setHours","toSafeHour","TileGroup","_react","_interopRequireDefault","_Flex","_utils","_propTypes2","_extends","dateTransform","dateType","Tile","tile","tiles","getTileClasses","newObj","desc","_interopRequireWildcard","_mergeClassNames","_getPrototypeOf2","nextProps","prevState","nextState","tileClassNameProps","tileContentProps","formatAbbr","maxDateTransform","minDateTransform","_this$state","Input","_updateInputWidth","requestAnimationFrame","makeOnKeyPress","getSelection","preventDefault","nameForClass","_onKeyUp","_ref$placeholder","showLeadingZeros","hasLeadingZero","fonts","font","getFontShorthand","addEventListener","updateInputWidthOnFontLoad","encodeCache","exclude","keepEscaped","nextCode","defaultChars","ch","getEncodeCache","componentChars","componentWillMount","getDerivedStateFromProps","setState","componentWillReceiveProps","bind","componentWillUpdate","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","displayName","newApiName","componentDidUpdate","maybeSnapshot","snapshot","__suppressDeprecationWarning","Flex","toPercent","otherProps","flexDirection","flexWrap","cloneElement","flexBasis","maxWidth","isMarkWidth","isMarkLength","isHandWidth","isOppositeHandLength","isHandLength","isNumberBetween","isDefined","_getRequireWildcardCache","hasPropertyDescriptor","WeakMap","convert12to24","hour12","amPm","hour24","convert24to12","_DateTimePicker","_default","_Decades","doRangesOverlap","isRangeWithinRange","isValueWithinRange","mergeFunctions","_dates","functions","greaterRange","smallerRange","range1","range2","dateRange","valueRange","isRangeStart","isRangeEnd","_Years","_Months","MonthView","_Days","_Weekdays","_WeekNumbers","showFixedNumberOfWeeks","calendarTypeProps","onClickWeekNumber","showWeekNumbers","childProps","alignItems","flexGrow","setActiveRange","showNeighboringMonth","allowedVariants","measureText","canvas","updateInputWidth","_utils2","_reactLifecyclesCompat","_makeEventProps","_reactFit","_entry","_entry2","_DateTimeInput","baseClassName","outsideActionEvents","DateTimePicker","_PureComponent","wrapper","closeWidgets","prevValue","valueWithHour","isCalendarOpen","isClockOpen","openCalendar","openClock","stopPropagation","isCalendarOpenProps","isClockOpenProps","handleOutsideActionListeners","_this$props2","onCalendarClose","onCalendarOpen","onClockClose","onClockOpen","shouldListen","_this$state2","fnName","eventName","onOutsideAction","_this$props3","amPmAriaLabel","calendarAriaLabel","calendarIcon","clearAriaLabel","clearIcon","dayAriaLabel","dayPlaceholder","disableCalendar","hourAriaLabel","hourPlaceholder","maxDetail","minuteAriaLabel","minutePlaceholder","monthAriaLabel","monthPlaceholder","nativeInputAriaLabel","secondAriaLabel","secondPlaceholder","yearAriaLabel","yearPlaceholder","_this$state3","valueFrom","ariaLabelProps","placeholderProps","isWidgetOpen","resetValue","toggleCalendar","_this$props4","calendarClassName","calendarProps","onDateChange","disableClock","_this$props5","clockClassName","clockProps","maxDetailIndex","renderMinuteHand","renderSecondHand","_this3","_this$props6","_this$state4","eventProps","renderInputs","renderCalendar","renderClock","PureComponent","iconProps","CalendarIcon","ClearIcon","clipboardEvents","compositionEvents","keyboardEvents","focusEvents","formEvents","genericEvents","mouseEvents","selectionEvents","touchEvents","uiEvents","wheelEvents","mediaEvents","imageEvents","animationEvents","transitionEvents","otherEvents","allEvents","makeEventProps","getArgs","_Calendar","_CenturyView","_DecadeView","_YearView","_MonthView","_Navigation","datesAreDifferent","getLimitedViews","minDetail","isViewAllowed","getView","getValueType","getValueFrom","rawValueFrom","valueFromDate","getDetailValueFrom","detailValueFrom","getValueTo","rawValueTo","valueToDate","getDetailValueTo","valueTo","detailValueTo","getDetailValueArray","Calendar","onActiveDateChange","drillDownAvailable","onDrillDown","nextView","drillUpAvailable","onDrillUp","nextValue","selectRange","previousValue","getProcessedValue","nextActiveStartDate","getActiveStartDate","activeStartDateProps","viewProps","valueProps","returnValue","processFunction","renderChildren","commonProps","clickAction","drillDown","onClickDecade","onClickYear","onClickMonth","_this$props7","onClickDay","showNavigation","_this$props8","navigationAriaLabel","navigationLabel","next2AriaLabel","next2Label","nextAriaLabel","nextLabel","prev2AriaLabel","prev2Label","prevAriaLabel","prevLabel","drillUp","setActiveStartDate","_this$props9","valueArray","renderNavigation","renderContent","_this$props10","_this$props11","Navigation","shouldShowPrevNext2Buttons","previousActiveStartDate","previousActiveStartDate2","nextActiveStartDate2","prevButtonDisabled","previousActiveEndDate","prev2ButtonDisabled","nextButtonDisabled","next2ButtonDisabled","Decades","_TileGroup","_Decade","Decade","_Tile","Years","_Year","Year","Months","_Month","Month","Days","_Day","hasFixedNumberOfWeeks","daysInMonth","activeEndDate","currentMonthIndex","Day","Weekdays","anyDate","beginOfMonth","weekdays","weekdayDate","WeekNumbers","_WeekNumber","numberOfWeeks","dates","weekNumbers","flexShrink","weekNumber","weekIndex","WeekNumber","_Clock","Clock","_Hand","_Mark","hourHandLength","hourHandOppositeLength","hourHandWidth","hourMarksLength","hourMarksWidth","minuteHandLength","minuteHandOppositeLength","minuteHandWidth","minuteMarksLength","minuteMarksWidth","renderHourMarks","renderMinuteMarks","renderNumbers","secondHandLength","secondHandOppositeLength","secondHandWidth","toISOString","minuteMarks","renderMinuteMarksFn","hourMarks","renderHourMarksFn","oppositeLength","renderHourHandFn","renderMinuteHandFn","renderSecondHandFn","Hand","variable","Mark","hourString","minuteString","hourRegExp","secondString","_dateUtils","_DayInput","_MonthInput","_MonthSelect","_YearInput","_Hour12Input","_Hour24Input","_MinuteInput","_SecondInput","_AmPm","_Divider","_NativeInput","defaultMinDate","defaultMaxDate","isSameDate","getMonthHuman","getValueFromRange","valueOrArrayOfValues","parseAndValidateDate","rawValue","valueDate","getDetailValue","isValidInput","findInput","nextElement","focus","DateTimeInput","minute","second","currentTarget","dateDivider","timeDivider","getAttribute","_event$target","onChangeExternal","_value$split2","valueTime","_valueDate$split2","yearString","monthString","dayString","_valueTime$split2","formElements","dayInput","monthInput","yearInput","hour12Input","hour24Input","minuteInput","secondInput","amPmInput","formElementsWithoutSelect","formElement","checkValidity","currentMatch","showLeadingZerosFromFormat","commonInputProps","renderHour12","renderHour24","_this$state5","onChangeAmPm","_convert24to2","elementFunctions","allowMultipleInstances","usedFunctions","matches","reduce","divider","res","renderFunction","elementFunction","_renderCustomInputs","renderDay","renderMonth","renderYear","renderHour","renderMinute","renderSecond","renderAmPm","onChangeNative","renderNativeInput","renderCustomInputs","useGrouping","datePlaceholder","timePlaceholder","formatTime","_this$state6","getHoursMinutesSeconds","_this$state7","maxTime","minTime","DayInput","_Input","currentMonthMaxDays","isSameMonth","maxDay","minDay","MonthInput","isSameYear","maxMonth","minMonth","MonthSelect","_short","formatShortMonth","YearInput","maxYear","minYear","yearStep","Hour12Input","maxHour","maxHourResult","minHour","_convert24to4","minHourResult","value12","Hour24Input","MinuteInput","_ref$showLeadingZeros","isSameHour","maxMinute","minMinute","SecondInput","isSameMinute","maxSecond","minSecond","AmPm","amDisabled","pmDisabled","_getAmPmLabels2","amLabel","pmLabel","Divider","NativeInput","nativeValueParser","receivedValue","getHoursMinutes","getISOLocalDateTime","hasOwn","toStr","gOPD","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","copyIsArray","clone","deep","for","$$typeof","ContextConsumer","ContextProvider","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","SuspenseList","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isSuspenseList","getModuleId","declarations","hasIterator","len","COMMENT_REGEX","NEWLINE_REGEX","WHITESPACE_REGEX","PROPERTY_REGEX","COLON_REGEX","VALUE_REGEX","SEMICOLON_REGEX","TRIM_REGEX","lineno","updatePosition","Position","errorsList","msg","filename","silent","re","comments","ret","decl","decls","javascript","python"],"mappings":"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A,UAEFC,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChD3B,OAAQ,CACN,UACA,aACA,OACA,QACA,MACA,OACA,UACA,UACA,YACA,UACA,WACA,eAEFC,YAAa,CACX,OACA,UACA,OACA,MACA,MACA,OACA,OACA,UACA,OACA,MACA,MACA,WAGJ6B,GAAI,CACFX,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,KAAM,MAChBC,KAAM,CACJ,UACA,QACA,SACA,eACA,SACA,UACA,aAEFC,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChD3B,OAAQ,CACN,QACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,aACA,UACA,YACA,aAEFC,YAAa,CACX,QACA,MACA,MACA,MACA,OACA,MACA,MACA,SACA,OACA,MACA,MACA,QAGJ8B,GAAI,CACFZ,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,KAAM,MAChBC,KAAM,CACJ,WACA,YACA,aACA,eACA,aACA,aACA,UAEFC,UAAW,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,OACrD3B,OAAQ,CACN,UACA,WACA,QACA,SACA,SACA,SACA,SACA,SACA,YACA,UACA,WACA,YAEFC,YAAa,CACX,OACA,QACA,MACA,MACA,OACA,SACA,SACA,KACA,OACA,MACA,MACA,SAIN,OAAIgB,KAAQlB,EACHA,EAAKkB,IAEZe,QAAQC,MAAM,aAAehB,EAAO,oBAC7BlB,EAAI,KAIFmC,EAAqB,SAACnE,EAAKC,GACtC,OAAQD,GAAO,MAAUC,EAAM,MAAYD,GAAO,KAASC,EAAM,KC5XtDmE,EAAa,SACxBzE,EACA0E,EACAC,EACAC,EACAC,EACAC,EACAC,GAEoB,IAAhB/E,EAAKvH,OACPuM,EACEhF,EAAK,GACL0E,EACAC,EACAC,EACAC,E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,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,YAAa,cACvBC,KAAM,CACJ,UACA,SACA,WACA,WACA,aACA,UACA,WAEFC,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChD3B,OAAQ,CACN,SACA,UACA,UACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEFC,YAAa,CACX,MACA,MACA,SACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QAGJ2B,GAAI,CACFT,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,KAAM,MAChBC,KAAM,CACJ,SACA,SACA,UACA,YACA,WACA,SACA,YAEFC,UAAW,CAAC,MAAO,MAAO,OAAQ,OAAQ,QAAS,MAAO,OAC1D3B,OAAQ,CACN,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEFC,YAAa,CACX,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QAGJ4B,GAAI,CACFV,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,KAAM,MAChBC,KAAM,CACJ,WACA,QACA,QACA,WACA,QACA,WACA,UAEFC,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAChD3B,OAAQ,CACN,UACA,aACA,OACA,QACA,MACA,OACA,UACA,UACA,YACA,UACA,WACA,eAEFC,YAAa,CACX,OACA,UACA,OACA,MACA,MACA,OACA,OACA,UACA,OACA,MACA,MACA,WAGJ6B,GAAI,CACFX,QAAS,IACTC,UAAW,IACXC,SAAU,CAAC,GACXC,SAAU,CAAC,SAAK,IAChBC,SAAU,iBACVjB,KAAM,WACNkB,KAAM,WACNC,QAAS,CAAC,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","file":"static/js/4.00f9fb89.chunk.js","sourcesContent":["var toInteger = require('./toInteger');\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\nmodule.exports = isInteger;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","export default x => () => x;\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport ascending from \"./ascending.js\";\nimport area from \"./area.js\";\nimport constant from \"./constant.js\";\nimport contains from \"./contains.js\";\nimport noop from \"./noop.js\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","import { select } from \"d3\";\n\nexport const verifyString = (string) => {\n if (string === false) return true;\n return typeof string === \"string\";\n};\n\nexport const verifyNumber = (number) => {\n return typeof number === \"number\" && !isNaN(number);\n};\n\nexport const verifyNone = (number) => {\n return true;\n};\n\nexport const verifyBool = (bool) => {\n return typeof bool === \"boolean\";\n};\n\nexport const verifyColors = (colors) => {\n return true;\n};\n\nexport const verifyFunction = (f) => {\n return typeof f === \"function\";\n};\n\nexport const verifyDiv = (div) => {\n if (select(\"#\" + div)._groups[0][0] === null) {\n throw new Error(\n \"Div with ID: \" + div + \" not found, graph could not be added.\"\n );\n }\n};\n\nexport const verifyData = (data) => {\n for (let i = 0; i < data.length; i++) {\n if (typeof data[i] !== \"object\" || data[i] === null) {\n throw new Error(\n \"Input data in not an object, data input must conform to {x: [], y: [], z: [[]]}.\"\n );\n }\n if (!(\"x\" in data[i] && \"y\" in data[i] && \"z\" in data[i])) {\n throw new Error(\n \"Input data is badly formatted, data input must conform to {x: [], y: [], z: [[]]}.\"\n );\n }\n if (data[i].x.length !== data[i].z[0].length) {\n throw new Error(\n \"Input data is badly formatted, x-array length must equal z-array dimension.\"\n );\n }\n if (data[i].y.length !== data[i].z.length) {\n throw new Error(\n \"Input data is badly formatted, y-array length must equal z-array dimension.\"\n );\n }\n }\n};\n","export const convertToRGB = (hex) => {\n function trim(s) {\n return s.charAt(0) === \"#\" ? s.substring(1, 7) : s;\n }\n var color = [];\n color[0] = parseInt(trim(hex).substring(0, 2), 16);\n color[1] = parseInt(trim(hex).substring(2, 4), 16);\n color[2] = parseInt(trim(hex).substring(4, 6), 16);\n color[3] = 255;\n return color;\n};\n\nexport const convertToHex = (rgb) => {\n return \"#\" + hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);\n}\n\nconst hex = (c) => {\n var s = \"0123456789abcdef\";\n var i = parseInt(c, 10);\n if (i === 0 || isNaN(c)) return \"00\";\n i = Math.round(Math.min(Math.max(0, i), 255));\n return s.charAt((i - (i % 16)) / 16) + s.charAt(i % 16);\n}\n\nexport const getRGBAColor = (value, min, max, colors, colorCache) => {\n if (value === null || isNaN(value)) return [255, 255, 255, 0];\n if (value < min || value > max) return [0, 0, 0, 0];\n const cacheKey = `${value}`;\n if (colorCache.has(cacheKey)) {\n return colorCache.get(cacheKey);\n }\n const range = max - min;\n const loc = (value - min) / range;\n if (loc < 0 || loc > 1) {\n colorCache.set(cacheKey, [255, 255, 255, 0]);\n return [255, 255, 255, 0];\n }\n let low = 0;\n let high = colors.length - 1;\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (loc < colors[mid].point) {\n high = mid - 1;\n } else if (loc > colors[mid + 1].point) {\n low = mid + 1;\n } else {\n low = mid;\n break;\n }\n }\n const index = low;\n const { rgba: color1 } = colors[index];\n const { rgba: color2 } = colors[index + 1];\n const factor = (loc - colors[index].point) / (colors[index + 1].point - colors[index].point);\n const rgb = [\n color1[0] + (color2[0] - color1[0]) * factor,\n color1[1] + (color2[1] - color1[1]) * factor,\n color1[2] + (color2[2] - color1[2]) * factor,\n 255\n ];\n colorCache.set(cacheKey, rgb);\n return rgb;\n};\n\nexport const closest = (num, arr) => {\n var curr = 0;\n var diff = Math.abs(num - arr[curr]);\n for (var val = 0; val < arr.length; val++) {\n var newdiff = Math.abs(num - arr[val]);\n if (newdiff < diff) {\n diff = newdiff;\n curr = val;\n }\n }\n return curr;\n};\n\nexport const isNumeric = (n) => {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\nexport const indexOfClosest = (num, arr) => {\n if (!isNumeric(num)) {\n return false;\n }\n arr = arr.filter((a) => isNumeric(a));\n var index = 0;\n var diff = Math.abs(num - arr[0]);\n for (var val = 0; val < arr.length; val++) {\n var newdiff = Math.abs(num - arr[val]);\n if (newdiff < diff) {\n diff = newdiff;\n index = val;\n }\n }\n return index;\n};\n\nexport const getFileIndex = (scales, p) => {\n for (var i = 0; i < scales.length; i++) {\n if (p >= Math.min(...scales[i]) && p <= Math.max(...scales[i])) {\n return i;\n }\n }\n return NaN;\n};\n\nexport const formatDate = (a, lang) => {\n var months = lang.shortMonths\n var year = a.getFullYear();\n var month = months[a.getMonth()];\n var date = a.getDate();\n var hour = a.getHours();\n var min = a.getMinutes();\n return `${hour < 10 ? \"0\" + hour : hour}:${\n min < 10 ? \"0\" + min : min\n } ${date} ${month} ${String(year).slice(-2)}`;\n};\n\nexport const formatNumber = (num, decimals = 3) => {\n num = parseFloat(num);\n var fact = 10 ** Math.round(parseFloat(decimals))\n if (num > 9999 || (num < 0.01 && num > -0.01) || num < -9999) {\n num = num.toExponential(decimals);\n } else {\n num = Math.round(num * fact) / fact;\n }\n return num;\n};\n\nexport const languageOptions = (name) => {\n var lang = {\n de: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: ['Vormittag', 'Nachmittag'],\n days: [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\",\n ],\n shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n months: [\n \"Januar\",\n \"Februar\",\n \"März\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\",\n ],\n shortMonths: [\n \"Jan\",\n \"Feb\",\n \"Mär\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dez\",\n ],\n },\n en: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n shortDays: [\"Sun\", \"Mon\", \"Tues\", \"Weds\", \"Thurs\", \"Fri\", \"Sat\"],\n months: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n shortMonths: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n },\n fr: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\n \"Dimanche\",\n \"Lundi\",\n \"Mardi\",\n \"Mercredi\",\n \"Jeudi\",\n \"Vendredi\",\n \"Samedi\",\n ],\n shortDays: [\"Di\", \"Lu\", \"Ma\", \"Me\", \"Je\", \"Ve\", \"Sa\"],\n months: [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n ],\n shortMonths: [\n \"Janv\",\n \"Févr\",\n \"Mars\",\n \"Avr\",\n \"Mai\",\n \"Juin\",\n \"Juil\",\n \"Août\",\n \"Sept\",\n \"Oct\",\n \"Nov\",\n \"Déc\",\n ],\n },\n es: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\n \"Domingo\",\n \"Lunes\",\n \"Martes\",\n \"Miércoles\",\n \"Jueves\",\n \"Viernes\",\n \"Sábado\",\n ],\n shortDays: [\"Do\", \"Lu\", \"Ma\", \"Mi\", \"Ju\", \"Vi\", \"Sa\"],\n months: [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\",\n ],\n shortMonths: [\n \"Enero\",\n \"Feb\",\n \"Mar\",\n \"Abr\",\n \"Mayo\",\n \"Jun\",\n \"Jul\",\n \"Agosto\",\n \"Sept\",\n \"Oct\",\n \"Nov\",\n \"Dic\",\n ],\n },\n it: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\n \"Domenica\",\n \"Lunedì\",\n \"Martedì\",\n \"Mercoledì\",\n \"Giovedì\",\n \"Venerdì\",\n \"Sabato\",\n ],\n shortDays: [\"Do\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n months: [\n \"Gennaio\",\n \"Febbraio\",\n \"Marzo\",\n \"Aprile\",\n \"Maggio\",\n \"Giugno\",\n \"Luglio\",\n \"Agosto\",\n \"Settembre\",\n \"Ottobre\",\n \"Novembre\",\n \"Dicembre\",\n ],\n shortMonths: [\n \"Genn\",\n \"Febbr\",\n \"Mar\",\n \"Apr\",\n \"Magg\",\n \"Giugno\",\n \"Luglio\",\n \"Ag\",\n \"Sett\",\n \"Ott\",\n \"Nov\",\n \"Dic\",\n ],\n },\n };\n if (name in lang) {\n return lang[name];\n } else {\n console.error(\"Language: \" + name + \" not recognised.\");\n return lang[\"en\"];\n }\n};\n\nexport const scientificNotation = (min, max) => {\n return (min > -0.0001 && max < 0.0001) || (min < -10000 || max > 10000)\n};\n","import { getRGBAColor, indexOfClosest, isNumeric } from \"./functions\";\n\nexport const canvasGrid = (\n data,\n scaleX,\n scaleY,\n xDomain,\n yDomain,\n context,\n options\n) => {\n if (data.length === 1) {\n putImgDataSingleMatrix(\n data[0],\n scaleX,\n scaleY,\n xDomain,\n yDomain,\n context,\n options\n );\n } else {\n putImgDataMultMatrix(\n data,\n scaleX,\n scaleY,\n xDomain,\n yDomain,\n context,\n options\n );\n }\n};\n\nexport const canvasContour = (\n data,\n scaleX,\n scaleY,\n context,\n options,\n prepContours\n) => {\n const colorScale = (v) => {\n return getRGBAColor(v, options.zMin, options.zMax, options.colors, options.colorCache);\n };\n\n for (var i = 0; i < data.length; i++) {\n fill(prepContours.baseContour[i], data[i], false);\n prepContours.mainContour[i].forEach((contour, index) => {\n if (index !== 0) fill(contour, data[i], false);\n });\n fill(prepContours.nanContour[i], data[i], [255, 255, 255]);\n }\n\n function fill(geometry, plotdata, fixedColor) {\n try {\n var color = colorScale(geometry.value + prepContours.step);\n if (fixedColor) color = fixedColor;\n context.fillStyle = `rgb(\n ${color[0]},\n ${color[1]},\n ${color[2]})`;\n geometry.coordinates.forEach((a) => {\n a.forEach((b) => {\n context.beginPath();\n context.moveTo(\n scaleX(getXfromIndex(b[0][0], plotdata, options)),\n scaleY(getYfromIndex(b[0][1], plotdata, options))\n );\n b.forEach((c) => {\n context.lineTo(\n scaleX(getXfromIndex(c[0], plotdata, options)),\n scaleY(getYfromIndex(c[1], plotdata, options))\n );\n });\n context.closePath();\n context.fill();\n });\n });\n } catch (e) {\n console.error(\"Failed to plot contour\");\n }\n }\n};\n\nconst pixelMapping = (data, scaleX, scaleY, options) => {\n var dataypix = data.y.map((dy) => scaleY(dy));\n var dataxpix = data.x.map((dx) => scaleX(dx));\n\n var indexypix = [];\n var indexxpix = [];\n\n // Currently using closest (needs to be improved)\n for (var i = 0; i < options.canvasHeight; i++) {\n indexypix.push(indexOfClosest(i, dataypix));\n }\n\n for (var j = 0; j < options.canvasWidth; j++) {\n indexxpix.push(indexOfClosest(j, dataxpix));\n }\n return { indexxpix, indexypix };\n};\n\nfunction pixelMappingArray(\n data,\n scaleX,\n scaleY,\n highh,\n lowh,\n highw,\n loww,\n options\n) {\n // Currently using closest (needs to be improved)\n\n var index = [];\n for (var i = 0; i < data.length; i++) {\n let ypix = data[i].y.map((dy) => scaleY(dy));\n let xpix = data[i].x.map((dx) => scaleX(dx));\n\n let indexxpix = [];\n let xstart = Math.max(...[0, Math.ceil(Math.min(...xpix)), loww]);\n let xend = Math.min(\n ...[options.canvasWidth, Math.floor(Math.max(...xpix)), highw]\n );\n\n let indexypix = [];\n let ystart = Math.max(...[0, Math.ceil(Math.min(...ypix)), lowh]);\n let yend = Math.min(\n ...[options.canvasHeight, Math.floor(Math.max(...ypix)), highh]\n );\n\n for (var j = xstart; j < xend; j++) {\n indexxpix.push([j, indexOfClosest(j, xpix)]);\n }\n\n for (var k = ystart; k < yend; k++) {\n indexypix.push([k, indexOfClosest(k, ypix)]);\n }\n\n index.push({ indexxpix, indexypix });\n }\n return index;\n}\n\nconst putImgDataSingleMatrix = (\n arr,\n scaleX,\n scaleY,\n xDomain,\n yDomain,\n context,\n options\n) => {\n const colorScale = (v) => {\n return getRGBAColor(v, options.zMin, options.zMax, options.colors, options.colorCache);\n };\n var { indexxpix, indexypix } = pixelMapping(arr, scaleX, scaleY, options);\n var imgData = context.createImageData(\n options.canvasWidth,\n options.canvasHeight\n );\n var highh, lowh, highw, loww;\n if (options.yReverse) {\n highh = Math.min(options.canvasHeight, Math.floor(scaleY(yDomain[1])));\n lowh = Math.max(0, Math.floor(scaleY(yDomain[0])));\n } else {\n highh = Math.min(options.canvasHeight, Math.floor(scaleY(yDomain[0])));\n lowh = Math.max(0, Math.floor(scaleY(yDomain[1])));\n }\n if (options.xReverse) {\n highw = Math.min(options.canvasWidth, Math.floor(scaleX(xDomain[0])));\n loww = Math.max(0, Math.floor(scaleX(xDomain[1])));\n } else {\n highw = Math.min(options.canvasWidth, Math.floor(scaleX(xDomain[1])));\n loww = Math.max(0, Math.floor(scaleX(xDomain[0])));\n }\n var i, j, l, rgbacolor;\n for (j = lowh; j < highh; j++) {\n for (l = loww; l < highw; l++) {\n if (isNumeric(indexypix[j]) && isNumeric(indexxpix[l])) {\n rgbacolor = colorScale(arr.z[indexypix[j]][indexxpix[l]]);\n i = (options.canvasWidth * j + l) * 4;\n imgData.data[i + 0] = rgbacolor[0];\n imgData.data[i + 1] = rgbacolor[1];\n imgData.data[i + 2] = rgbacolor[2];\n imgData.data[i + 3] = rgbacolor[3];\n }\n }\n }\n context.putImageData(imgData, 1, 0);\n};\n\nconst putImgDataMultMatrix = (\n arr,\n scaleX,\n scaleY,\n xDomain,\n yDomain,\n context,\n options\n) => {\n const colorScale = (v) => {\n return getRGBAColor(v, options.zMin, options.zMax, options.colors, options.colorCache);\n };\n var imgData = context.createImageData(\n options.canvasWidth,\n options.canvasHeight\n );\n var highh, lowh, highw, loww;\n if (options.yReverse) {\n highh = Math.min(options.canvasHeight, Math.floor(scaleY(yDomain[1])));\n lowh = Math.max(0, Math.floor(scaleY(yDomain[0])));\n } else {\n highh = Math.min(options.canvasHeight, Math.floor(scaleY(yDomain[0])));\n lowh = Math.max(0, Math.floor(scaleY(yDomain[1])));\n }\n if (options.xReverse) {\n highw = Math.min(options.canvasWidth, Math.floor(scaleX(xDomain[0])));\n loww = Math.max(0, Math.floor(scaleX(xDomain[1])));\n } else {\n highw = Math.min(options.canvasWidth, Math.floor(scaleX(xDomain[1])));\n loww = Math.max(0, Math.floor(scaleX(xDomain[0])));\n }\n var index = pixelMappingArray(\n arr,\n scaleX,\n scaleY,\n highh,\n lowh,\n highw,\n loww,\n options\n );\n var rgbacolor, l;\n for (var i = 0; i < index.length; i++) {\n for (var j = 0; j < index[i].indexypix.length; j++) {\n for (var k = 0; k < index[i].indexxpix.length; k++) {\n if ((index[i].indexypix[j], index[i].indexxpix[k])) {\n rgbacolor = colorScale(\n arr[i].z[index[i].indexypix[j][1]][index[i].indexxpix[k][1]]\n );\n l =\n (options.canvasWidth * index[i].indexypix[j][0] +\n index[i].indexxpix[k][0]) *\n 4;\n imgData.data[l + 0] = rgbacolor[0];\n imgData.data[l + 1] = rgbacolor[1];\n imgData.data[l + 2] = rgbacolor[2];\n imgData.data[l + 3] = rgbacolor[3];\n }\n }\n }\n }\n context.putImageData(imgData, 1, 0);\n};\n\nconst getXfromIndex = (index, plotdata, options) => {\n if (index <= plotdata.x.length - 1) {\n if (options.xTime) {\n return new Date(\n (plotdata.x[Math.ceil(index)].getTime() -\n plotdata.x[Math.floor(index)].getTime()) *\n (index - Math.floor(index)) +\n plotdata.x[Math.floor(index)].getTime()\n );\n } else {\n return (\n (plotdata.x[Math.ceil(index)] - plotdata.x[Math.floor(index)]) *\n (index - Math.floor(index)) +\n plotdata.x[Math.floor(index)]\n );\n }\n } else {\n return plotdata.x[plotdata.x.length - 1];\n }\n};\n\nconst getYfromIndex = (index, plotdata, options) => {\n if (index <= plotdata.y.length - 1) {\n if (options.yTime) {\n return new Date(\n (plotdata.y[Math.ceil(index)].getTime() -\n plotdata.y[Math.floor(index)].getTime()) *\n (index - Math.floor(index)) +\n plotdata.y[Math.floor(index)].getTime()\n );\n } else {\n return (\n (plotdata.y[Math.ceil(index)] - plotdata.y[Math.floor(index)]) *\n (index - Math.floor(index)) +\n plotdata.y[Math.floor(index)]\n );\n }\n } else {\n return plotdata.y[plotdata.y.length - 1];\n }\n};\n","import {\n select,\n extent,\n scaleTime,\n scaleLog,\n scaleLinear,\n axisBottom,\n axisLeft,\n timeFormat,\n timeSecond,\n timeMinute,\n timeHour,\n timeDay,\n timeMonth,\n timeYear,\n timeWeek,\n symbol,\n symbolTriangle,\n zoomIdentity,\n range,\n format,\n zoom as d3zoom,\n timeFormatDefaultLocale,\n} from \"d3\";\nimport { contours } from \"d3-contour\";\nimport {\n verifyString,\n verifyBool,\n verifyNumber,\n verifyNone,\n verifyColors,\n verifyDiv,\n verifyData,\n verifyFunction,\n} from \"./verify\";\nimport {\n convertToRGB,\n convertToHex,\n getFileIndex,\n closest,\n formatDate,\n formatNumber,\n isNumeric,\n languageOptions,\n scientificNotation,\n} from \"./functions\";\nimport { canvasGrid, canvasContour } from \"./fillcanvas\";\n\nconst heatmap = (div, data, options = {}) => {\n if (!Array.isArray(data)) data = [data];\n try {\n select(\"#svg_\" + div).remove();\n select(\"#canvas_\" + div).remove();\n select(\"#tooltip_\" + div).remove();\n } catch (e) {}\n\n try {\n verifyDiv(div);\n verifyData(data);\n\n options = processOptions(div, data, options);\n\n const { xDomain, yDomain, zDomain, xFileDomain, yFileDomain } =\n dataExtents(data);\n\n if (options.zMin === false) options.zMin = zDomain[0];\n if (options.zMax === false) options.zMax = zDomain[1];\n\n const context = addCanvas(div, options);\n const svg = addSVG(div, options);\n\n timeFormatDefaultLocale(languageOptions(options.language));\n\n var xAxis = addXAxis(svg, xDomain, options);\n var yAxis = addYAxis(svg, yDomain, options);\n\n if (options.addTitle) addTitle(svg, div, options);\n if (options.backgroundColor) addBackground(div, options);\n if (options.legendRight) addLegendRight(svg, div, options);\n if (options.setDownloadGraph)\n options.setDownloadGraph(() => downloadGraph(div, options));\n if (options.setDownloadGraphDiv)\n select(\"#\" + options.setDownloadGraphDiv).on(\"click\", function () {\n downloadGraph(div, options);\n });\n\n var contour;\n var nullData;\n var prepContours;\n if (options.contour) {\n contour = options.autoDownsample\n ? data.map((d) => autoDownSample(d, options.autoDownsample))\n : data;\n nullData = replaceNull(contour, options.zMax);\n prepContours = prepareContours(contour, nullData, zDomain, options);\n }\n\n var { zoombox } = addZoom(\n svg,\n data,\n contour,\n prepContours,\n div,\n xAxis,\n yAxis,\n xDomain,\n yDomain,\n zDomain,\n context,\n options\n );\n\n if (options.tooltip)\n addTooltip(\n svg,\n data,\n div,\n zoombox,\n xAxis,\n yAxis,\n xFileDomain,\n yFileDomain,\n options\n );\n\n setTimeout(() => {\n context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n if (options.contour) {\n canvasContour(\n contour,\n xAxis.ax,\n yAxis.ax,\n context,\n options,\n prepContours\n );\n } else {\n canvasGrid(\n data,\n xAxis.ax,\n yAxis.ax,\n xDomain,\n yDomain,\n context,\n options\n );\n }\n }, 0);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst processOptions = (div, data, userOptions) => {\n var defaultOptions = [\n { name: \"language\", default: \"en\", verify: verifyString },\n { name: \"xLabel\", default: false, verify: verifyString },\n { name: \"yLabel\", default: false, verify: verifyString },\n { name: \"zLabel\", default: false, verify: verifyString },\n { name: \"xUnit\", default: false, verify: verifyString },\n { name: \"yUnit\", default: false, verify: verifyString },\n { name: \"zUnit\", default: false, verify: verifyString },\n { name: \"xLog\", default: false, verify: verifyBool },\n { name: \"yLog\", default: false, verify: verifyBool },\n { name: \"decimalPlaces\", default: 3, verify: verifyNumber },\n { name: \"tooltip\", default: true, verify: verifyBool },\n { name: \"levels\", default: false, verify: verifyBool },\n { name: \"title\", default: false, verify: verifyString },\n { name: \"zMin\", default: false, verify: verifyNone },\n { name: \"zMax\", default: false, verify: verifyNone },\n { name: \"fontSize\", default: 12, verify: verifyNumber },\n { name: \"contour\", default: false, verify: verifyBool },\n { name: \"yReverse\", default: false, verify: verifyBool },\n { name: \"xReverse\", default: false, verify: verifyBool },\n { name: \"marginTop\", default: 10, verify: verifyNumber },\n { name: \"marginLeft\", default: 46, verify: verifyNumber },\n { name: \"marginBottom\", default: 46, verify: verifyNumber },\n { name: \"marginRight\", default: 70, verify: verifyNumber },\n { name: \"legendRight\", default: true, verify: verifyBool },\n { name: \"thresholdStep\", default: 20, verify: verifyNumber },\n { name: \"backgroundColor\", default: false, verify: verifyString },\n { name: \"autoDownsample\", default: false, verify: verifyNumber },\n { name: \"setDownloadGraph\", default: false, verify: verifyFunction },\n { name: \"setDownloadGraphDiv\", default: false, verify: verifyString },\n { name: \"hover\", default: false, verify: verifyFunction },\n { name: \"click\", default: false, verify: verifyFunction },\n\n {\n name: \"colors\",\n default: [\n { color: \"#0000ff\", point: 0 },\n { color: \"#ff0000\", point: 1 },\n ],\n verify: verifyColors,\n },\n {\n name: \"width\",\n default: select(\"#\" + div)\n .node()\n .getBoundingClientRect().width,\n verify: verifyNumber,\n },\n {\n name: \"height\",\n default:\n select(\"#\" + div)\n .node()\n .getBoundingClientRect().height - 5,\n verify: verifyNumber,\n },\n ];\n\n var options = {};\n for (let i = 0; i < defaultOptions.length; i++) {\n if (defaultOptions[i].name in userOptions) {\n if (userOptions[defaultOptions[i].name] === undefined) {\n options[defaultOptions[i].name] = defaultOptions[i].default;\n } else if (\n defaultOptions[i].verify(userOptions[defaultOptions[i].name])\n ) {\n options[defaultOptions[i].name] = userOptions[defaultOptions[i].name];\n } else {\n console.error(\n `${userOptions[defaultOptions[i].name]} is not a valid input for ${\n defaultOptions[i].name\n }`\n );\n options[defaultOptions[i].name] = defaultOptions[i].default;\n }\n } else {\n options[defaultOptions[i].name] = defaultOptions[i].default;\n }\n }\n\n if (!(\"marginLeft\" in userOptions))\n options.marginLeft = options.fontSize * 4 + 10;\n if (!(\"marginRight\" in userOptions)) {\n if (options.legendRight) {\n options.marginRight = options.fontSize * 5 + 12;\n } else {\n options.marginRight = 10;\n }\n }\n if (!(\"marginBottom\" in userOptions))\n options.marginBottom = options.fontSize * 3 + 10;\n if (!(\"marginTop\" in userOptions)) {\n if (options.title) {\n options.marginTop = options.fontSize + 2;\n } else {\n options.marginTop = 10;\n }\n }\n\n if (!(typeof options.zMin === \"number\" && !isNaN(options.zMin)))\n options.zMin = false;\n\n if (!(typeof options.zMax === \"number\" && !isNaN(options.zMax)))\n options.zMax = false;\n\n options.xTime = false;\n options.yTime = false;\n if (data[0].x[0] instanceof Date) options.xTime = true;\n if (data[0].y[0] instanceof Date) options.yTime = true;\n\n options.colors = JSON.parse(JSON.stringify(options.colors));\n options.colors = options.colors.map((c) => {\n if (Array.isArray(c.color)) {\n c.rgba = JSON.parse(JSON.stringify(c.color));\n c.color = convertToHex(c.color);\n } else {\n c.rgba = convertToRGB(c.color);\n }\n return c;\n });\n options.colorCache = new Map();\n\n options.canvasWidth = Math.floor(\n options.width - options.marginLeft - options.marginRight\n );\n options.canvasHeight = Math.floor(\n options.height - options.marginTop - options.marginBottom\n );\n return options;\n};\n\nconst prepareContours = (data, nullData, zDomain, options) => {\n var thresholds = range(\n zDomain[0],\n zDomain[1],\n (zDomain[1] - zDomain[0]) / options.thresholdStep\n );\n var step = (zDomain[1] - zDomain[0]) / options.thresholdStep;\n\n var baseContour = [];\n var mainContour = [];\n var nanContour = [];\n\n for (var i = 0; i < data.length; i++) {\n let cr = contours()\n .size([data[i].z[0].length, data[i].z.length])\n .smooth(false);\n let c = contours().size([data[i].z[0].length, data[i].z.length]);\n let values = data[i].z.flat();\n let nullValues = nullData[i].z.flat();\n baseContour.push(cr.thresholds(thresholds)(values)[0]);\n mainContour.push(c.thresholds(thresholds)(values));\n nanContour.push(cr.thresholds([options.zMax * 1000])(nullValues)[0]);\n }\n return { baseContour, mainContour, nanContour, step };\n};\n\nconst replaceNull = (data, zMax) => {\n var nullData = JSON.parse(JSON.stringify(data));\n for (var i = 0; i < data.length; i++) {\n for (var y = 1; y < data[i].z.length - 1; y++) {\n for (var x = 1; x < data[i].z[y].length - 1; x++) {\n if (data[i].z[y][x] === null || !isNumeric(data[i].z[y][x])) {\n if (data[i].z[y][x] !== null) data[i].z[y][x] = null;\n nullData[i].z[y][x] = zMax * 10;\n nullData[i].z[y][x + 1] = zMax * 10;\n nullData[i].z[y - 1][x + 1] = zMax * 10;\n nullData[i].z[y - 1][x] = zMax * 10;\n nullData[i].z[y - 1][x - 1] = zMax * 10;\n nullData[i].z[y][x - 1] = zMax * 10;\n nullData[i].z[y + 1][x - 1] = zMax * 10;\n nullData[i].z[y + 1][x] = zMax * 10;\n nullData[i].z[y + 1][x + 1] = zMax * 10;\n }\n }\n }\n }\n return nullData;\n};\n\nconst getDomain = (domain) => {\n var minarr = domain.map((d) => d[0]);\n var maxarr = domain.map((d) => d[1]);\n var min = extent(minarr)[0];\n var max = extent(maxarr)[1];\n return [min, max];\n};\n\nconst dataExtents = (data) => {\n var xDomain, yDomain, zDomain;\n var xFileDomain = [];\n var yFileDomain = [];\n var zFileDomain = [];\n for (var h = 0; h < data.length; h++) {\n let xext = extent(data[h].x);\n let yext = extent(data[h].y);\n if (\n !xFileDomain.map((x) => x[0]).includes(xext[0]) ||\n !xFileDomain.map((x) => x[1]).includes(xext[1])\n ) {\n xFileDomain.push(xext);\n }\n if (\n !yFileDomain.map((y) => y[0]).includes(yext[0]) ||\n !yFileDomain.map((y) => y[1]).includes(yext[1])\n ) {\n yFileDomain.push(yext);\n }\n\n zFileDomain.push(\n extent(\n [].concat.apply([], data[h].z).filter((f) => {\n return !isNaN(parseFloat(f)) && isFinite(f);\n })\n )\n );\n }\n xDomain = getDomain(xFileDomain);\n yDomain = getDomain(yFileDomain);\n zDomain = getDomain(zFileDomain);\n return { xDomain, yDomain, zDomain, xFileDomain, yFileDomain, zFileDomain };\n};\n\nconst addSVG = (div, options) => {\n return select(\"#\" + div)\n .append(\"svg\")\n .attr(\"id\", \"svg_\" + div)\n .attr(\"width\", options.width)\n .style(\"z-index\", 2)\n .style(\"position\", \"absolute\")\n .attr(\"height\", options.height)\n .append(\"g\")\n .attr(\n \"transform\",\n \"translate(\" + options.marginLeft + \",\" + options.marginTop + \")\"\n );\n};\n\nconst addCanvas = (div, options) => {\n var left = \"0px\";\n if (options.contour) left = \"1px\";\n const canvas = select(\"#\" + div)\n .append(\"canvas\")\n .attr(\"width\", options.canvasWidth)\n .attr(\"height\", options.canvasHeight)\n .style(\"margin-left\", options.marginLeft + \"px\")\n .style(\"margin-top\", options.marginTop + \"px\")\n .style(\"pointer-events\", \"none\")\n .style(\"z-index\", 1)\n .style(\"position\", \"absolute\")\n .style(\"left\", left)\n .style(\"cursor\", \"grab\")\n .attr(\"id\", \"canvas_\" + div)\n .attr(\"class\", \"canvas-plot\");\n return canvas.node().getContext(\"2d\");\n};\n\nconst addXAxis = (svg, xDomain, options) => {\n var ax;\n var xrange = [0, options.canvasWidth];\n var xAxisLabel =\n \"\" +\n (options.xLabel ? options.xLabel : \"\") +\n (options.xUnit ? \" (\" + options.xUnit + \")\" : \"\");\n if (options.xReverse) xrange = [options.canvasWidth, 0];\n if (options.xTime) {\n xAxisLabel = \"\";\n ax = scaleTime().range(xrange).domain(xDomain);\n } else if (options.xLog) {\n ax = scaleLog().range(xrange).domain(xDomain);\n } else {\n ax = scaleLinear().range(xrange).domain(xDomain);\n }\n var ref = ax.copy();\n var base = ax.copy();\n var axis = axisBottom(ax).ticks(3);\n if (options.xTime) {\n axis.tickFormat(multiFormat);\n } else if (scientificNotation(xDomain[0], xDomain[1])) {\n axis.tickFormat(format(\".1e\"));\n }\n\n var g = svg\n .append(\"g\")\n .attr(\"class\", \"x axis\")\n .attr(\"id\", \"axis--x\")\n .attr(\"transform\", \"translate(0,\" + options.canvasHeight + \")\")\n .style(\"font-size\", `${options.fontSize}px`)\n .call(axis);\n\n if (xAxisLabel !== \"\") {\n svg\n .append(\"text\")\n .attr(\n \"transform\",\n \"translate(\" +\n options.canvasWidth / 2 +\n \" ,\" +\n (options.canvasHeight + options.marginBottom / 1.5) +\n \")\"\n )\n .attr(\"x\", 6)\n .attr(\"dx\", `${options.fontSize}px`)\n .style(\"font-size\", `${options.fontSize}px`)\n .style(\"text-anchor\", \"end\")\n .text(xAxisLabel);\n\n /*gX.selectAll(\"text\").attr(\"transform\", function (d) {\n return (\n \"rotate(-45)translate(-\" +\n this.getBBox().width * (3 / 4) +\n \",-\" +\n this.getBBox().height * (3 / 4) +\n \")\"\n );\n });*/\n }\n\n return { ax, ref, base, axis, g };\n};\n\nconst addYAxis = (svg, yDomain, options) => {\n var ax;\n var yrange = [options.canvasHeight, 0];\n var yAxisLabel =\n \"\" +\n (options.yLabel ? options.yLabel : \"\") +\n (options.yUnit ? \" (\" + options.yUnit + \")\" : \"\");\n if (options.yReverse) yrange = [0, options.canvasHeight];\n if (options.yTime) {\n yAxisLabel = \"\";\n ax = scaleTime().range(yrange).domain(yDomain);\n } else if (options.yLog) {\n ax = scaleLog().range(yrange).domain(yDomain);\n } else {\n ax = scaleLinear().range(yrange).domain(yDomain);\n }\n var ref = ax.copy();\n var base = ax.copy();\n var axis = axisLeft(ax).ticks(3);\n if (options.yTime) {\n axis.tickFormat(multiFormat);\n } else if (scientificNotation(yDomain[0], yDomain[1])) {\n axis.tickFormat(format(\".1e\"));\n }\n\n var g = svg\n .append(\"g\")\n .attr(\"class\", \"y axis\")\n .attr(\"id\", \"axis--y\")\n .style(\"font-size\", `${options.fontSize}px`)\n .call(axis);\n\n if (yAxisLabel !== \"\") {\n svg\n .append(\"text\")\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"y\", 0 - options.marginLeft)\n .attr(\"x\", 0 - options.canvasHeight / 2)\n .attr(\"dy\", `${options.fontSize}px`)\n .style(\"font-size\", `${options.fontSize}px`)\n .style(\"text-anchor\", \"middle\")\n .text(yAxisLabel);\n }\n return { ax, ref, base, axis, g };\n};\n\nconst addTitle = (svg, div, options) => {\n svg\n .append(\"text\")\n .attr(\"x\", options.canvasWidth / 2)\n .attr(\"y\", 2 - options.marginTop / 2)\n .attr(\"id\", \"title_\" + div)\n .attr(\"text-anchor\", \"middle\")\n .style(\"font-size\", `${options.fontSize}px`)\n .style(\"text-decoration\", \"underline\")\n .style(\"opacity\", \"0\")\n .text(options.title);\n};\n\nconst addBackground = (div, options) => {\n select(\"#\" + div)\n .append(\"svg\")\n .attr(\"id\", \"background_\" + div)\n .attr(\"width\", options.width)\n .style(\"z-index\", 0)\n .style(\"position\", \"absolute\")\n .attr(\"height\", options.height)\n .append(\"g\")\n .append(\"rect\")\n .attr(\"x\", 1)\n .attr(\"width\", options.width)\n .attr(\"height\", options.height)\n .attr(\"fill\", options.backgroundColor);\n};\n\nconst addLegendRight = (svg, div, options) => {\n var defs = svg.append(\"defs\");\n var ndp = 100;\n if (options.zMax - options.zMin < 0.1) ndp = 1000;\n if (options.zMax - options.zMin < 0.01) ndp = 10000;\n var t1 = Math.round(options.zMax * ndp) / ndp,\n t5 = Math.round(options.zMin * ndp) / ndp,\n t3 = Math.round(((t1 + t5) / 2) * ndp) / ndp,\n t2 = Math.round(((t1 + t3) / 2) * ndp) / ndp,\n t4 = Math.round(((t3 + t5) / 2) * ndp) / ndp;\n\n if (scientificNotation(options.zMin, options.zMax)) {\n t1 = t1.toExponential();\n t2 = t2.toExponential();\n t3 = t3.toExponential();\n t4 = t4.toExponential();\n t5 = t5.toExponential();\n }\n\n var svgGradient = defs\n .append(\"linearGradient\")\n .attr(\"id\", \"svgGradient_\" + div)\n .attr(\"x1\", \"0\")\n .attr(\"x2\", \"0\")\n .attr(\"y1\", \"0\")\n .attr(\"y2\", \"1\");\n\n for (var g = options.colors.length - 1; g > -1; g--) {\n svgGradient\n .append(\"stop\")\n .attr(\"class\", \"end\")\n .attr(\"offset\", 1 - options.colors[g].point)\n .attr(\"stop-color\", options.colors[g].color)\n .attr(\"stop-opacity\", 1);\n }\n\n svg\n .append(\"g\")\n .append(\"rect\")\n .attr(\"width\", options.marginRight / 6)\n .attr(\"height\", options.canvasHeight)\n .attr(\"x\", options.canvasWidth + options.marginRight / 6)\n .attr(\"y\", 0)\n .attr(\"fill\", `url(#svgGradient_${div})`);\n\n svg\n .append(\"text\")\n .attr(\"x\", options.canvasWidth + 2 + options.marginRight / 3)\n .attr(\"y\", 10)\n .style(\"font-size\", `${options.fontSize}px`)\n .text(t1);\n\n svg\n .append(\"text\")\n .attr(\"x\", options.canvasWidth + 2 + options.marginRight / 3)\n .attr(\"y\", options.canvasHeight * 0.25 + 3)\n .style(\"font-size\", `${options.fontSize}px`)\n .text(t2);\n\n svg\n .append(\"text\")\n .attr(\"x\", options.canvasWidth + 2 + options.marginRight / 3)\n .attr(\"y\", options.canvasHeight * 0.75 + 3)\n .style(\"font-size\", `${options.fontSize}px`)\n .text(t4);\n\n svg\n .append(\"text\")\n .attr(\"x\", options.canvasWidth + 2 + options.marginRight / 3)\n .attr(\"y\", options.canvasHeight)\n .style(\"font-size\", `${options.fontSize}px`)\n .text(t5);\n\n if (options.zLabel) {\n var zAxisLabel =\n options.zLabel + (options.zUnit ? \" (\" + options.zUnit + \")\" : \"\");\n svg\n .append(\"text\")\n .attr(\"transform\", \"rotate(-90)\")\n .attr(\"y\", options.canvasWidth + options.marginRight - 5)\n .attr(\"x\", 0 - options.canvasHeight / 2)\n .attr(\"dz\", \"1em\")\n .style(\"text-anchor\", \"middle\")\n .style(\"font-size\", `${options.fontSize}px`)\n .text(zAxisLabel);\n }\n};\n\nconst addTooltip = (\n svg,\n data,\n div,\n zoombox,\n xAxis,\n yAxis,\n xFileDomain,\n yFileDomain,\n options\n) => {\n var tooltip = select(\"#\" + div)\n .append(\"div\")\n .style(\"opacity\", 0)\n .style(\"z-index\", 2)\n .style(\"pointer-events\", \"none\")\n .attr(\"id\", \"tooltip_\" + div)\n .attr(\"class\", \"tooltip\");\n\n // Add axis locators\n var symbolGenerator = symbol().type(symbolTriangle).size(25);\n svg\n .append(\"g\")\n .attr(\"transform\", \"rotate(90)\")\n .append(\"g\")\n .style(\"opacity\", 0)\n .attr(\"id\", \"zpointer_\" + div)\n .attr(\n \"transform\",\n \"translate(\" +\n options.canvasHeight +\n \",-\" +\n (options.canvasWidth - 16 + options.marginRight / 3) +\n \")\"\n )\n .append(\"path\")\n .attr(\"d\", symbolGenerator());\n\n // Add vertical point identifier\n var vpi = svg\n .append(\"g\")\n .style(\"opacity\", 0)\n .style(\"pointer-events\", \"none\")\n .attr(\"id\", \"xline_\" + div);\n if (options.levels)\n vpi\n .append(\"line\")\n .attr(\"y1\", 0)\n .attr(\"y2\", options.canvasHeight)\n .style(\"stroke-width\", 1)\n .style(\"stroke\", \"white\")\n .style(\"fill\", \"none\");\n\n var lang = languageOptions(options.language);\n\n zoombox.on(\"mousemove\", (event) => {\n try {\n var hoverX = xAxis.ax.invert(\n event.layerX - options.marginLeft || event.offsetX - options.marginLeft\n );\n var hoverY = yAxis.ax.invert(\n event.layerY - options.marginTop || event.offsetY - options.marginTop\n );\n\n var idx = Math.max(\n getFileIndex(xFileDomain, hoverX),\n getFileIndex(yFileDomain, hoverY)\n );\n var process = data[idx];\n\n var yi = closest(hoverY, process.y);\n var xi = closest(hoverX, process.x);\n\n var xval, yval;\n var xu = \"\";\n var yu = \"\";\n var zu = \"\";\n var zval = process.z[yi][xi];\n\n if (options.xTime) {\n xval = formatDate(process.x[xi], lang);\n } else {\n xval = formatNumber(process.x[xi]);\n if (typeof options.xUnit === \"string\") xu = options.xUnit;\n }\n\n if (options.yTime) {\n yval = formatDate(process.y[yi], lang);\n } else {\n yval = formatNumber(process.y[yi]);\n if (typeof options.yUnit === \"string\") yu = options.yUnit;\n }\n\n if (typeof options.zUnit === \"string\") zu = options.zUnit;\n\n var html =\n \"<table><tbody>\" +\n `<tr><td>x:</td><td>${xval} ${xu}</td></tr>` +\n `<tr><td>y:</td><td>${yval} ${yu}</td></tr>` +\n `<tr><td>z:</td><td>${formatNumber(\n zval,\n options.decimalPlaces\n )} ${zu}</td></tr>` +\n \"</tbody></table>\";\n\n tooltip\n .html(html)\n .style(\"left\", xAxis.ax(process.x[xi]) + options.marginLeft + 10 + \"px\")\n .style(\"top\", yAxis.ax(process.y[yi]) + options.marginTop - 20 + \"px\")\n .style(\"opacity\", 1);\n\n select(\"#zpointer_\" + div)\n .attr(\n \"transform\",\n \"translate(\" +\n ((zval - options.zMax) / (options.zMin - options.zMax)) *\n options.canvasHeight +\n \",-\" +\n (options.canvasWidth - 16 + options.marginRight / 3) +\n \")\"\n )\n .style(\"opacity\", 1);\n if (options.hover) options.hover({ mousex: xi, mousey: yi, idx });\n\n // Add vertical point identifier\n if (options.levels) {\n vpi.selectAll(\"circle\").remove();\n for (var yp of process.y) {\n if (yAxis.ax(yp) >= 0 && yAxis.ax(yp) <= options.canvasHeight) {\n vpi\n .append(\"circle\")\n .attr(\"cy\", yAxis.ax(yp))\n .attr(\"r\", 2)\n .style(\"fill\", \"white\");\n }\n }\n vpi\n .attr(\n \"transform\",\n \"translate(\" +\n xAxis.ax(process.x[xi]) +\n options.marginLeft +\n 10 +\n \",0)\"\n )\n .style(\"opacity\", 0.7);\n }\n } catch (e) {\n vpi.style(\"opacity\", 0);\n tooltip.style(\"opacity\", 0);\n select(\"#zpointer_\" + div).style(\"opacity\", 0);\n if (options.hover) options.hover({ mousex: false, mousey: false });\n }\n });\n\n zoombox.on(\"click\", (event) => {\n try {\n var hoverX = xAxis.ax.invert(\n event.layerX - options.marginLeft || event.offsetX - options.marginLeft\n );\n var hoverY = yAxis.ax.invert(\n event.layerY - options.marginTop || event.offsetY - options.marginTop\n );\n var idx = Math.max(\n getFileIndex(xFileDomain, hoverX),\n getFileIndex(yFileDomain, hoverY)\n );\n var process = data[idx];\n var yi = closest(hoverY, process.y);\n var xi = closest(hoverX, process.x);\n if (options.click) options.click({ mousex: xi, mousey: yi, idx });\n } catch (e) {\n if (options.click) options.click({ mousex: false, mousey: false });\n }\n });\n\n zoombox.on(\"mouseout\", () => {\n vpi.style(\"opacity\", 0);\n tooltip.style(\"opacity\", 0);\n select(\"#zpointer_\" + div).style(\"opacity\", 0);\n if (options.hover) options.hover({ mousex: false, mousey: false });\n });\n};\n\nconst addZoom = (\n svg,\n data,\n contour,\n prepContours,\n div,\n xAxis,\n yAxis,\n xDomain,\n yDomain,\n zDomain,\n context,\n options\n) => {\n var zoom = d3zoom()\n .extent([\n [0, 0],\n [options.canvasWidth, options.canvasHeight],\n ])\n .on(\"zoom\", normalzoom);\n\n var zoomx = d3zoom()\n .extent([\n [0, 0],\n [options.canvasWidth, options.canvasHeight],\n ])\n .on(\"zoom\", normalzoomx);\n\n var zoomy = d3zoom()\n .extent([\n [0, 0],\n [options.canvasWidth, options.canvasHeight],\n ])\n .on(\"zoom\", normalzoomy);\n\n var zoombox = svg\n .append(\"rect\")\n .attr(\"id\", \"zoombox_\" + div)\n .attr(\"width\", options.canvasWidth)\n .attr(\"height\", options.canvasHeight)\n .style(\"fill\", \"none\")\n .style(\"cursor\", \"pointer\")\n .attr(\"pointer-events\", \"all\")\n .call(zoom);\n\n var zoomboxx = svg\n .append(\"rect\")\n .attr(\"id\", \"zoomboxx_\" + div)\n .attr(\"width\", options.canvasWidth)\n .attr(\"height\", options.marginBottom)\n .style(\"fill\", \"none\")\n .style(\"cursor\", \"col-resize\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"y\", options.canvasHeight)\n .call(zoomx);\n\n var zoomboxy = svg\n .append(\"rect\")\n .attr(\"id\", \"zoomboxy_\" + div)\n .attr(\"width\", options.marginLeft)\n .attr(\"height\", options.canvasHeight)\n .style(\"fill\", \"none\")\n .style(\"cursor\", \"row-resize\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"x\", -options.marginLeft)\n .call(zoomy);\n\n function normalzoom(event) {\n let t = event.transform;\n if (t !== zoomIdentity) {\n xAxis.ax = t.rescaleX(xAxis.ref);\n xAxis.axis.scale(xAxis.ax);\n xAxis.g.call(xAxis.axis);\n yAxis.ax = t.rescaleY(yAxis.ref);\n yAxis.axis.scale(yAxis.ax);\n yAxis.g.call(yAxis.axis);\n context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n if (options.contour) {\n canvasContour(\n contour,\n xAxis.ax,\n yAxis.ax,\n context,\n options,\n prepContours\n );\n } else {\n canvasGrid(\n data,\n xAxis.ax,\n yAxis.ax,\n xDomain,\n yDomain,\n context,\n options\n );\n }\n xAxis.ref = xAxis.ax;\n yAxis.ref = yAxis.ax;\n zoombox.call(zoom.transform, zoomIdentity);\n }\n }\n\n function normalzoomx(event) {\n let t = event.transform;\n if (t !== zoomIdentity) {\n xAxis.ax = t.rescaleX(xAxis.ref);\n xAxis.axis.scale(xAxis.ax);\n xAxis.g.call(xAxis.axis);\n context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n if (options.contour) {\n canvasContour(\n contour,\n xAxis.ax,\n yAxis.ax,\n context,\n options,\n prepContours\n );\n } else {\n canvasGrid(\n data,\n xAxis.ax,\n yAxis.ax,\n xDomain,\n yDomain,\n context,\n options\n );\n }\n xAxis.ref = xAxis.ax;\n zoomboxx.call(zoom.transform, zoomIdentity);\n }\n }\n\n function normalzoomy(event) {\n let t = event.transform;\n if (t !== zoomIdentity) {\n yAxis.ax = t.rescaleY(yAxis.ref);\n yAxis.axis.scale(yAxis.ax);\n yAxis.g.call(yAxis.axis);\n context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n if (options.contour) {\n canvasContour(\n contour,\n xAxis.ax,\n yAxis.ax,\n context,\n options,\n prepContours\n );\n } else {\n canvasGrid(\n data,\n xAxis.ax,\n yAxis.ax,\n xDomain,\n yDomain,\n context,\n options\n );\n }\n yAxis.ref = yAxis.ax;\n zoomboxy.call(zoom.transform, zoomIdentity);\n }\n }\n\n zoombox.on(\"dblclick.zoom\", null).on(\"dblclick\", () => {\n xAxis.ax = xAxis.base;\n yAxis.ax = yAxis.base;\n xAxis.ref = xAxis.base;\n yAxis.ref = yAxis.base;\n yAxis.axis.scale(yAxis.base);\n yAxis.g.call(yAxis.axis);\n xAxis.axis.scale(xAxis.base);\n xAxis.g.call(xAxis.axis);\n context.clearRect(0, 0, options.canvasWidth, options.canvasHeight);\n if (options.contour) {\n canvasContour(\n contour,\n xAxis.ax,\n yAxis.ax,\n context,\n options,\n prepContours\n );\n } else {\n canvasGrid(data, xAxis.ax, yAxis.ax, xDomain, yDomain, context, options);\n }\n });\n zoomboxx.on(\"dblclick.zoom\", null);\n zoomboxy.on(\"dblclick.zoom\", null);\n return { zoombox };\n};\n\nconst downloadGraph = (div, options) => {\n var title = select(\"#title_\" + div);\n title.style(\"opacity\", \"1\");\n var s = new XMLSerializer();\n var str = s.serializeToString(document.getElementById(\"svg_\" + div));\n\n var canvasout = document.createElement(\"canvas\"),\n contextout = canvasout.getContext(\"2d\");\n\n canvasout.width = options.width;\n canvasout.height = options.height;\n\n var image = new Image();\n image.onerror = function () {\n alert(\"Appologies .png download failed. Please download as .svg.\");\n };\n image.onload = function () {\n contextout.drawImage(image, 0, 0);\n contextout.drawImage(\n document.getElementById(\"canvas_\" + div),\n options.marginLeft,\n options.marginTop\n );\n var a = document.createElement(\"a\");\n a.download = \"heatmap_\" + div + \".png\";\n a.href = canvasout.toDataURL(\"image/png\");\n a.click();\n };\n image.src = \"data:image/svg+xml;charset=utf8,\" + encodeURIComponent(str);\n title.style(\"opacity\", \"0\");\n};\n\nconst autoDownSample = (arr, ads) => {\n var l1 = arr.z.length;\n var l2 = arr.z[0].length;\n if (l1 <= ads && l2 <= ads) {\n return arr;\n } else {\n var d1 = Math.max(1, Math.floor(l1 / ads));\n var d2 = Math.max(1, Math.floor(l2 / ads));\n var z_ds = [];\n var y_ds = [];\n for (let i = 0; i < l1; i = i + d1) {\n let zz_ds = [];\n var x_ds = [];\n for (let j = 0; j < l2; j = j + d2) {\n zz_ds.push(arr.z[i][j]);\n x_ds.push(arr.x[j]);\n }\n y_ds.push(arr.y[i]);\n z_ds.push(zz_ds);\n }\n return { x: x_ds, y: y_ds, z: z_ds };\n }\n};\n\nconst multiFormat = (date) => {\n var formatMillisecond = timeFormat(\".%L\"),\n formatSecond = timeFormat(\":%S\"),\n formatMinute = timeFormat(\"%H:%M\"),\n formatHour = timeFormat(\"%H:%M\"),\n formatDay = timeFormat(\"%d.%m\"),\n formatWeek = timeFormat(\"%d.%m\"),\n formatMonth = timeFormat(\"%B\"),\n formatYear = timeFormat(\"%Y\");\n return (\n timeSecond(date) < date\n ? formatMillisecond\n : timeMinute(date) < date\n ? formatSecond\n : timeHour(date) < date\n ? formatMinute\n : timeDay(date) < date\n ? formatHour\n : timeMonth(date) < date\n ? timeWeek(date) < date\n ? formatDay\n : formatWeek\n : timeYear(date) < date\n ? formatMonth\n : formatYear\n )(date);\n};\n\nexport default heatmap;\n","import { select } from \"d3\";\n\nexport const verifyString = (string) => {\n return typeof string === \"string\";\n};\n\nexport const verifyType = (type) => {\n return [\"single\", \"double\"].includes(type);\n};\n\nexport const verifyInput = (input) => {\n return typeof input === \"number\" && !isNaN(input) || typeof input.getMonth === 'function'; \n};\n\nexport const verifyNumber = (number) => {\n return typeof number === \"number\" && !isNaN(number);\n};\n\nexport const verifyBool = (bool) => {\n return typeof bool === \"boolean\";\n};\n\nexport const verifyFunction = (f) => {\n return typeof f === \"function\";\n};\n\nexport const verifyDiv = (div) => {\n if (select(\"#\" + div)._groups[0][0] === null) {\n throw new Error(\n \"Div with ID: \" + div + \" not found, slider could not be added.\"\n );\n }\n};\n\nexport const verifyData = (data) => {\n return true\n};\n","export const languageOptions = (name) => {\n var lang = {\n de: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: ['Vormittag', 'Nachmittag'],\n days: [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\",\n ],\n shortDays: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"],\n months: [\n \"Januar\",\n \"Februar\",\n \"März\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Dezember\",\n ],\n shortMonths: [\n \"Jan\",\n \"Feb\",\n \"Mär\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Dez\",\n ],\n },\n en: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n shortDays: [\"Sun\", \"Mon\", \"Tues\", \"Weds\", \"Thurs\", \"Fri\", \"Sat\"],\n months: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n shortMonths: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n },\n fr: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\n \"Dimanche\",\n \"Lundi\",\n \"Mardi\",\n \"Mercredi\",\n \"Jeudi\",\n \"Vendredi\",\n \"Samedi\",\n ],\n shortDays: [\"Di\", \"Lu\", \"Ma\", \"Me\", \"Je\", \"Ve\", \"Sa\"],\n months: [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n ],\n shortMonths: [\n \"Janv\",\n \"Févr\",\n \"Mars\",\n \"Avr\",\n \"Mai\",\n \"Juin\",\n \"Juil\",\n \"Août\",\n \"Sept\",\n \"Oct\",\n \"Nov\",\n \"Déc\",\n ],\n },\n es: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\n \"Domingo\",\n \"Lunes\",\n \"Martes\",\n \"Miércoles\",\n \"Jueves\",\n \"Viernes\",\n \"Sábado\",\n ],\n shortDays: [\"Do\", \"Lu\", \"Ma\", \"Mi\", \"Ju\", \"Vi\", \"Sa\"],\n months: [\n \"Enero\",\n \"Febrero\",\n \"Marzo\",\n \"Abril\",\n \"Mayo\",\n \"Junio\",\n \"Julio\",\n \"Agosto\",\n \"Septiembre\",\n \"Octubre\",\n \"Noviembre\",\n \"Diciembre\",\n ],\n shortMonths: [\n \"Enero\",\n \"Feb\",\n \"Mar\",\n \"Abr\",\n \"Mayo\",\n \"Jun\",\n \"Jul\",\n \"Agosto\",\n \"Sept\",\n \"Oct\",\n \"Nov\",\n \"Dic\",\n ],\n },\n it: {\n decimal: \",\",\n thousands: \".\",\n grouping: [3],\n currency: [\"€\", \"\"],\n dateTime: \"%a %b %e %X %Y\",\n date: \"%d.%m.%Y\",\n time: \"%H:%M:%S\",\n periods: [\"AM\", \"PM\"],\n days: [\n \"Domenica\",\n \"Lunedì\",\n \"Martedì\",\n \"Mercoledì\",\n \"Giovedì\",\n \"Venerdì\",\n \"Sabato\",\n ],\n shortDays: [\"Do\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"],\n months: [\n \"Gennaio\",\n \"Febbraio\",\n \"Marzo\",\n \"Aprile\",\n \"Maggio\",\n \"Giugno\",\n \"Luglio\",\n \"Agosto\",\n \"Settembre\",\n \"Ottobre\",\n \"Novembre\",\n \"Dicembre\",\n ],\n shortMonths: [\n \"Genn\",\n \"Febbr\",\n \"Mar\",\n \"Apr\",\n \"Magg\",\n \"Giugno\",\n \"Luglio\",\n \"Ag\",\n \"Sett\",\n \"Ott\",\n \"Nov\",\n \"Dic\",\n ],\n },\n };\n if (name in lang) {\n return lang[name];\n } else {\n console.error(\"Language: \" + name + \" not recognised.\");\n return lang[\"en\"];\n }\n};\n","import {\n select,\n scaleTime,\n scaleLinear,\n axisBottom,\n pointer,\n timeFormat,\n timeSecond,\n timeMinute,\n timeHour,\n timeDay,\n timeMonth,\n timeYear,\n timeWeek,\n drag as d3drag,\n zoom as d3zoom,\n timeFormatDefaultLocale,\n} from \"d3\";\nimport {\n verifyString,\n verifyBool,\n verifyNumber,\n verifyDiv,\n verifyData,\n verifyFunction,\n verifyType,\n verifyInput,\n} from \"./verify\";\nimport { languageOptions } from \"./functions\";\n\nconst slider = (div, options = {}) => {\n try {\n select(\"#svg_\" + div).remove();\n select(\"#tooltip_\" + div).remove();\n } catch (e) {}\n try {\n verifyDiv(div);\n options = processOptions(div, options);\n timeFormatDefaultLocale(languageOptions(options.language));\n\n const svg = addSVG(div, options);\n var Axis = xAxis(options);\n\n addAvailability(div, svg);\n var gX = addAxis(div, svg, Axis.axis, options);\n addFocus(div, svg, Axis.ax, options);\n addTooltip(div, options);\n addEventbox(div, svg, Axis, gX, options);\n const drag = addHandles(div, svg, Axis.ax, options);\n\n plotAvailability(div, Axis.ax, options);\n plotHandles(div, drag, Axis.ax, options);\n } catch (e) {\n console.error(e);\n }\n};\n\nconst processOptions = (div, userOptions) => {\n var defaultOptions = [\n { name: \"onChange\", default: false, verify: verifyFunction },\n { name: \"onZoom\", default: false, verify: verifyFunction },\n { name: \"language\", default: \"en\", verify: verifyString },\n { name: \"min\", default: 0, verify: verifyInput },\n { name: \"max\", default: 1, verify: verifyInput },\n { name: \"upper\", default: \"max\", verify: verifyInput },\n { name: \"lower\", default: \"min\", verify: verifyInput },\n { name: \"value\", default: \"max\", verify: verifyInput },\n { name: \"availability\", default: [], verify: verifyData },\n { name: \"barColor\", default: \"#28b5f5\", verify: verifyString },\n { name: \"type\", default: \"single\", verify: verifyType },\n { name: \"tooltip\", default: true, verify: verifyBool },\n { name: \"fontSize\", default: 10, verify: verifyNumber },\n { name: \"marginTop\", default: 25, verify: verifyNumber },\n { name: \"marginLeft\", default: 10, verify: verifyNumber },\n { name: \"marginBottom\", default: 30, verify: verifyNumber },\n { name: \"marginRight\", default: 10, verify: verifyNumber },\n { name: \"barHeight\", default: 4, verify: verifyNumber },\n { name: \"handleHeight\", default: 20, verify: verifyNumber },\n { name: \"handleWidth\", default: 2, verify: verifyNumber },\n {\n name: \"width\",\n default: select(\"#\" + div)\n .node()\n .getBoundingClientRect().width,\n verify: verifyNumber,\n },\n ];\n var optionList = defaultOptions.map((d) => d.name);\n var options = {};\n for (let i = 0; i < defaultOptions.length; i++) {\n if (defaultOptions[i].name in userOptions) {\n if (defaultOptions[i].verify(userOptions[defaultOptions[i].name])) {\n options[defaultOptions[i].name] = userOptions[defaultOptions[i].name];\n } else {\n console.warn(\n `${userOptions[defaultOptions[i].name]} is not a valid input for ${\n defaultOptions[i].name\n }`\n );\n if (optionList.includes(defaultOptions[i].default)) {\n options[defaultOptions[i].name] = options[defaultOptions[i].default];\n } else {\n options[defaultOptions[i].name] = defaultOptions[i].default;\n }\n }\n } else {\n if (optionList.includes(defaultOptions[i].default)) {\n options[defaultOptions[i].name] = options[defaultOptions[i].default];\n } else {\n options[defaultOptions[i].name] = defaultOptions[i].default;\n }\n }\n }\n options[\"width\"] = Math.max(\n 100,\n options[\"width\"] - options.marginLeft - options.marginRight\n );\n options[\"height\"] = options.fontSize * 2;\n return options;\n};\n\nconst addSVG = (div, options) => {\n var svg = select(\"#\" + div)\n .append(\"svg\")\n .attr(\"id\", \"svg_\" + div)\n .attr(\"width\", options.width + options.marginLeft + options.marginRight)\n .attr(\"height\", options.height + options.marginTop + options.marginBottom)\n .append(\"g\")\n .attr(\n \"transform\",\n \"translate(\" + options.marginLeft + \",\" + options.marginTop + \")\"\n )\n .attr(\"width\", options.width);\n\n svg\n .append(\"defs\")\n .append(\"svg:clipPath\")\n .attr(\"id\", \"clip_\" + div)\n .append(\"svg:rect\")\n .attr(\"width\", options.width)\n .attr(\"height\", options.height + options.marginBottom + options.marginTop)\n .attr(\"x\", 0)\n .attr(\"y\", 0);\n\n svg\n .append(\"defs\")\n .append(\"svg:clipPath\")\n .attr(\"id\", \"cliphandle_\" + div)\n .append(\"svg:rect\")\n .attr(\"width\", options.width + options.handleWidth * 2)\n .attr(\"height\", options.height + options.marginBottom + options.marginTop)\n .attr(\"x\", -options.handleWidth)\n .attr(\"y\", 0);\n return svg;\n};\n\nconst addAxis = (div, svg, axis, options) => {\n return svg\n .append(\"g\")\n .attr(\"class\", \"interactive-slider-xaxis\")\n .attr(\"id\", \"xAxis_\" + div)\n .style(\"font-size\", `${options.fontSize}px`)\n .attr(\"transform\", \"translate(0,\" + options.height + \")\")\n .call(axis);\n};\n\nconst xAxis = (options) => {\n var ax;\n if (options.min instanceof Date) {\n ax = scaleTime()\n .range([0, options.width])\n .domain([options.min, options.max]);\n } else {\n ax = scaleLinear()\n .range([0, options.width])\n .domain([options.min, options.max]);\n }\n var ref = ax.copy();\n var base = ax.copy();\n var axis = axisBottom(ax).ticks(4).tickPadding(10);\n if (options.min instanceof Date) {\n axis.tickFormat(multiFormat);\n }\n return { ax, ref, base, axis };\n};\n\nconst addAvailability = (div, svg) => {\n svg\n .append(\"g\")\n .attr(\"class\", \"interactive-slider-availability\")\n .attr(\"id\", \"availability_\" + div)\n .attr(\"clip-path\", \"url(#clip_\" + div + \")\");\n};\n\nconst plotAvailability = (div, x, options) => {\n select(\"#availability_\" + div)\n .selectAll(\"*\")\n .remove();\n select(\"#availability_\" + div)\n .selectAll(\"dot\")\n .data(options.availability)\n .enter()\n .append(\"rect\")\n .attr(\"height\", options.barHeight)\n .attr(\"width\", function (d) {\n return Math.max(1, x(d[1]) - x(d[0]));\n })\n .attr(\"stroke\", options.barColor)\n .attr(\"fill\", options.barColor)\n .attr(\"x\", function (d) {\n return x(d[0]);\n })\n .attr(\"y\", options.height - options.barHeight / 2);\n};\n\nconst addFocus = (div, svg, x, options) => {\n var focus = svg\n .append(\"g\")\n .attr(\"class\", \"interactive-slider-focus\")\n .attr(\"id\", \"focus_\" + div);\n focus\n .append(\"rect\")\n .attr(\"id\", \"focushandle_\" + div)\n .attr(\"height\", 0.9 * options.handleHeight)\n .attr(\"width\", 0.2)\n .style(\"fill\", \"#989c9e\")\n .attr(\"stroke\", \"#989c9e\")\n .attr(\"x\", x(options.min))\n .attr(\"y\", options.height - 0.45 * options.handleHeight)\n .style(\"opacity\", 0);\n};\n\nconst addHandles = (div, svg, x, options) => {\n function dragstarted() {\n select(\"#focus_\" + div).style(\"opacity\", 0);\n }\n function dragged(event) {\n var id = select(this).attr(\"id\");\n if (id === \"handles-lower_\" + div && event.x < x(options.upper)) {\n select(this).attr(\"x\", event.x);\n plotTooltip(div, x, event, options, (drag = true));\n } else if (id === \"handles-upper_\" + div && event.x > x(options.lower)) {\n select(this).attr(\"x\", event.x);\n plotTooltip(div, x, event, options, (drag = true));\n } else if (id === \"handles-value_\" + div) {\n select(this).attr(\"x\", event.x);\n plotTooltip(div, x, event, options, (drag = true));\n }\n }\n function dragended(event) {\n select(\"#focus_\" + div).style(\"opacity\", 1);\n try {\n var id = select(this).attr(\"id\");\n var v = x.invert(select(\"#\" + id).attr(\"x\"));\n if (id === \"handles-lower_\" + div) {\n options.lower = v;\n if (options.onChange) {\n options.onChange([v, options.upper]);\n }\n } else if (id === \"handles-upper_\" + div) {\n options.upper = v;\n if (options.onChange) {\n options.onChange([options.lower, v]);\n }\n } else if (id === \"handles-value_\" + div) {\n options.value = v;\n if (options.onChange) {\n options.onChange([v]);\n }\n }\n } catch (e) {\n console.error(e);\n }\n }\n\n svg\n .append(\"g\")\n .attr(\"class\", \"interactive-slider-handles\")\n .attr(\"id\", \"handles_\" + div)\n .attr(\"clip-path\", \"url(#cliphandle_\" + div + \")\");\n\n var drag = d3drag()\n .on(\"start\", dragstarted)\n .on(\"drag\", dragged)\n .on(\"end\", dragended);\n\n return drag;\n};\n\nconst plotHandles = (div, drag, x, options) => {\n var handles = select(\"#handles_\" + div);\n handles.selectAll(\"*\").remove();\n if (options.type === \"single\") {\n handles\n .append(\"rect\")\n .attr(\"id\", \"handles-value_\" + div)\n .attr(\"class\", \"interactive-slider-handles\")\n .attr(\"cursor\", \"pointer\")\n .attr(\"height\", options.handleHeight)\n .attr(\"width\", options.handleWidth)\n .attr(\"x\", x(options.value))\n .attr(\"y\", options.height - 1 - options.handleHeight / 2)\n .on(\"mouseover\", function (event) {\n mouseover(event, div, options);\n })\n .on(\"mousemove\", function (event) {\n mousemove(event, div, x, options);\n })\n .on(\"mouseout\", function () {\n mouseout(div);\n })\n .call(drag);\n } else if (options.type === \"double\") {\n handles\n .append(\"rect\")\n .attr(\"id\", \"handles-lower_\" + div)\n .attr(\"class\", \"interactive-slider-handles\")\n .attr(\"cursor\", \"pointer\")\n .attr(\"height\", options.handleHeight)\n .attr(\"width\", options.handleWidth)\n .attr(\"x\", x(options.lower))\n .attr(\"y\", options.height - 1 - options.handleHeight / 2)\n .on(\"mouseover\", function (event) {\n mouseover(event, div, options);\n })\n .on(\"mousemove\", function (event) {\n mousemove(event, div, x, options);\n })\n .on(\"mouseout\", function () {\n mouseout(div);\n })\n .call(drag);\n handles\n .append(\"rect\")\n .attr(\"id\", \"handles-upper_\" + div)\n .attr(\"class\", \"interactive-slider-handles\")\n .attr(\"cursor\", \"pointer\")\n .attr(\"height\", options.handleHeight)\n .attr(\"width\", options.handleWidth)\n .attr(\"x\", x(options.upper))\n .attr(\"y\", options.height - 1 - options.handleHeight / 2)\n .on(\"mouseover\", function (event) {\n mouseover(event, div, options);\n })\n .on(\"mousemove\", function (event) {\n mousemove(event, div, x, options);\n })\n .on(\"mouseout\", function () {\n mouseout(div);\n })\n .call(drag);\n }\n};\n\nconst moveHandles = (div, x, options) => {\n if (options.type === \"single\") {\n select(\"#handles-value_\" + div).attr(\"x\", x(options.value));\n } else if (options.type === \"double\") {\n select(\"#handles-lower_\" + div).attr(\"x\", x(options.lower));\n select(\"#handles-upper_\" + div).attr(\"x\", x(options.upper));\n }\n};\n\nconst addTooltip = (div, options) => {\n select(\"#\" + div)\n .append(\"div\")\n .attr(\"id\", \"tooltip_\" + div)\n .style(\"font-size\", `${options.fontSize}px`)\n .style(\"position\", \"absolute\")\n .style(\"bottom\", options.marginBottom + options.height + \"px\")\n .style(\"left\", options.marginLeft)\n .attr(\"class\", \"interactive-slider-tooltip\");\n};\n\nconst plotTooltip = (div, x, event, options, drag = false) => {\n try {\n var tooltip = select(\"#tooltip_\" + div);\n var e = drag ? event.x : pointer(event)[0];\n tooltip.html(tooltipText(x.invert(e), options));\n let tooltipwidth = tooltip.node().getBoundingClientRect().width;\n tooltip.style(\n \"left\",\n Math.max(\n Math.min(options.width - tooltipwidth, e - tooltipwidth / 2),\n 0\n ) +\n options.marginLeft +\n \"px\"\n );\n } catch (e) {}\n};\n\nconst tooltipText = (text, options) => {\n var months = languageOptions(options.language).shortMonths;\n if (text instanceof Date) {\n return `${text.getHours() < 10 ? \"0\" + text.getHours() : text.getHours()}:${\n text.getMinutes() < 10 ? \"0\" + text.getMinutes() : text.getMinutes()\n } ${text.getDate()}-${months[text.getMonth()]} ${text.getFullYear()}`;\n } else {\n return Math.round(text * 1000) / 1000;\n }\n};\n\nconst addEventbox = (div, svg, Axis, gX, options) => {\n var zoom = d3zoom()\n .extent([\n [0, 0],\n [options.width, options.height],\n ])\n .on(\"zoom\", function (event) {\n zoomed(event, div, Axis.ax, Axis.ref, gX, Axis.axis, options);\n })\n .on(\"end\", function (event) {\n zoomEnd(event, Axis.ax, options);\n });\n\n var eventbox = svg\n .append(\"rect\")\n .attr(\"id\", \"eventbox_\" + div)\n .attr(\"width\", options.width)\n .attr(\"height\", options.height + options.marginTop + options.marginBottom)\n .style(\"fill\", \"none\")\n .style(\"cursor\", \"pointer\")\n .attr(\"y\", -options.marginTop)\n .attr(\"pointer-events\", \"all\")\n .call(zoom);\n\n eventbox\n .on(\"dblclick.zoom\", null)\n .on(\"mouseover\", function (event) {\n mouseover(event, div, options);\n })\n .on(\"mousemove\", function (event) {\n mousemove(event, div, Axis.ax, options);\n })\n .on(\"mouseout\", function () {\n mouseout(div);\n })\n .on(\"click\", function (event) {\n onclick(event, div, Axis.ax, options);\n });\n};\n\nconst zoomEnd = (event, x, options) => {\n if (event) {\n if (options.onZoom) {\n options.onZoom(x.domain());\n }\n }\n};\n\nconst zoomed = (event, div, x, ref, gX, axis, options) => {\n if (event) {\n let d = event.transform.rescaleX(ref).domain();\n x.domain(d);\n }\n gX.call(axis);\n plotAvailability(div, x, options);\n moveHandles(div, x, options);\n};\n\nconst onclick = (event, div, x, options) => {\n var value = x.invert(event.layerX - options.marginLeft);\n if (options.type === \"single\") {\n select(\"#handles-value_\" + div).attr(\n \"x\",\n event.layerX - options.marginLeft\n );\n options.value = value;\n if (options.onChange) {\n options.onChange([options.value]);\n }\n } else if (options.type === \"double\") {\n if (value <= options.lower) {\n select(\"#handles-lower_\" + div).attr(\n \"x\",\n event.layerX - options.marginLeft\n );\n options.lower = value;\n if (options.onChange) {\n options.onChange([options.lower, options.upper]);\n }\n } else if (value >= options.upper) {\n select(\"#handles-upper_\" + div).attr(\n \"x\",\n event.layerX - options.marginLeft\n );\n options.upper = value;\n if (options.onChange) {\n options.onChange([options.lower, options.upper]);\n }\n } else if (\n Math.abs(value - options.lower) > Math.abs(value - options.upper)\n ) {\n select(\"#handles-upper_\" + div).attr(\n \"x\",\n event.layerX - options.marginLeft\n );\n options.upper = value;\n if (options.onChange) {\n options.onChange([options.lower, options.upper]);\n }\n } else {\n select(\"#handles-lower_\" + div).attr(\n \"x\",\n event.layerX - options.marginLeft\n );\n options.lower = value;\n if (options.onChange) {\n options.onChange([options.lower, options.upper]);\n }\n }\n }\n};\n\nconst mouseover = (event, div, options) => {\n try {\n var focushandle = select(\"#focushandle_\" + div);\n focushandle.attr(\"x\", pointer(event)[0]);\n focushandle.style(\"opacity\", 1);\n if (options.tooltip) {\n select(\"#tooltip_\" + div).style(\"visibility\", \"visible\");\n }\n } catch (e) {\n console.error(e);\n }\n};\n\nconst mousemove = (event, div, x, options) => {\n try {\n var focushandle = select(\"#focushandle_\" + div);\n focushandle.attr(\"x\", pointer(event)[0]);\n } catch (e) {}\n try {\n plotTooltip(div, x, event, options);\n } catch (e) {}\n};\n\nconst mouseout = (div) => {\n try {\n select(\"#focushandle_\" + div).style(\"opacity\", 0);\n select(\"#tooltip_\" + div).style(\"visibility\", \"hidden\");\n } catch (e) {}\n};\n\nconst multiFormat = (date) => {\n var formatMillisecond = timeFormat(\".%L\"),\n formatSecond = timeFormat(\":%S\"),\n formatMinute = timeFormat(\"%H:%M\"),\n formatHour = timeFormat(\"%H:%M\"),\n formatDay = timeFormat(\"%d.%m\"),\n formatWeek = timeFormat(\"%d.%m\"),\n formatMonth = timeFormat(\"%B\"),\n formatYear = timeFormat(\"%Y\");\n return (\n timeSecond(date) < date\n ? formatMillisecond\n : timeMinute(date) < date\n ? formatSecond\n : timeHour(date) < date\n ? formatMinute\n : timeDay(date) < date\n ? formatHour\n : timeMonth(date) < date\n ? timeWeek(date) < date\n ? formatDay\n : formatWeek\n : timeYear(date) < date\n ? formatMonth\n : formatYear\n )(date);\n};\n\nexport default slider;\n","var getRect = function getRect(element) {\n return element.getBoundingClientRect();\n};\n\nvar detectElementOverflow = function detectElementOverflow(element, container) {\n return {\n get collidedTop() {\n return getRect(element).top < getRect(container).top;\n },\n\n get collidedBottom() {\n return getRect(element).bottom > getRect(container).bottom;\n },\n\n get collidedLeft() {\n return getRect(element).left < getRect(container).left;\n },\n\n get collidedRight() {\n return getRect(element).right > getRect(container).right;\n },\n\n get overflowTop() {\n return getRect(container).top - getRect(element).top;\n },\n\n get overflowBottom() {\n return getRect(element).bottom - getRect(container).bottom;\n },\n\n get overflowLeft() {\n return getRect(container).left - getRect(element).left;\n },\n\n get overflowRight() {\n return getRect(element).right - getRect(container).right;\n }\n\n };\n};\n\nexport default detectElementOverflow;","/**\n * Checks whether we're running on a production build or not.\n */\nexport var isProduction = process.env.NODE_ENV === 'production';\n\nvar consoleOnDev = function consoleOnDev(method) {\n if (!isProduction) {\n var _console;\n\n for (var _len = arguments.length, message = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n // eslint-disable-next-line no-console\n (_console = console)[method].apply(_console, message);\n }\n};\n\nexport var warnOnDev = function warnOnDev() {\n for (var _len2 = arguments.length, message = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n message[_key2] = arguments[_key2];\n }\n\n return consoleOnDev.apply(void 0, ['warn'].concat(message));\n};","var _excluded = [\"invertAxis\", \"invertSecondaryAxis\"];\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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\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 _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\nimport React, { Component } from 'react';\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport detectElementOverflow from 'detect-element-overflow';\nimport { warnOnDev } from './shared/utils';\nvar isBrowser = typeof window !== 'undefined';\nvar isDisplayContentsSupported = isBrowser && 'CSS' in window && 'supports' in window.CSS && CSS.supports('display', 'contents');\nvar isMutationObserverSupported = isBrowser && 'MutationObserver' in window;\n\nfunction capitalize(a) {\n return a[0].toUpperCase() + a.slice(1);\n}\n\nfunction findScrollContainer(element) {\n if (!element) {\n return undefined;\n }\n\n var parent = element.parentElement;\n\n while (parent) {\n var _window$getComputedSt = window.getComputedStyle(parent),\n overflow = _window$getComputedSt.overflow;\n\n if (overflow.split(' ').every(function (o) {\n return o === 'auto' || o === 'scroll';\n })) {\n return parent;\n }\n\n parent = parent.parentElement;\n }\n\n return document.documentElement;\n}\n\nfunction alignAxis(_ref) {\n var axis = _ref.axis,\n container = _ref.container,\n element = _ref.element,\n invertAxis = _ref.invertAxis,\n secondary = _ref.secondary,\n scrollContainer = _ref.scrollContainer,\n spacing = _ref.spacing;\n var style = window.getComputedStyle(element);\n var parent = container.parentElement;\n var scrollContainerCollisions = detectElementOverflow(parent, scrollContainer);\n var documentCollisions = detectElementOverflow(parent, document.documentElement);\n var isX = axis === 'x';\n var startProperty = isX ? 'left' : 'top';\n var endProperty = isX ? 'right' : 'bottom';\n var sizeProperty = isX ? 'width' : 'height';\n var overflowStartProperty = \"overflow\".concat(capitalize(startProperty));\n var overflowEndProperty = \"overflow\".concat(capitalize(endProperty));\n var scrollProperty = \"scroll\".concat(capitalize(startProperty));\n var uppercasedSizeProperty = capitalize(sizeProperty);\n var offsetSizeProperty = \"offset\".concat(uppercasedSizeProperty);\n var clientSizeProperty = \"client\".concat(uppercasedSizeProperty);\n var minSizeProperty = \"min-\".concat(sizeProperty);\n var scrollbarWidth = scrollContainer[offsetSizeProperty] - scrollContainer[clientSizeProperty];\n var startSpacing = _typeof(spacing) === 'object' ? spacing[startProperty] : spacing;\n var availableStartSpace = -Math.max(scrollContainerCollisions[overflowStartProperty], documentCollisions[overflowStartProperty] + document.documentElement[scrollProperty]) - startSpacing;\n var endSpacing = _typeof(spacing) === 'object' ? spacing[endProperty] : spacing;\n var availableEndSpace = -Math.max(scrollContainerCollisions[overflowEndProperty], documentCollisions[overflowEndProperty] - document.documentElement[scrollProperty]) - endSpacing - scrollbarWidth;\n\n if (secondary) {\n availableStartSpace += parent[clientSizeProperty];\n availableEndSpace += parent[clientSizeProperty];\n }\n\n var offsetSize = element[offsetSizeProperty];\n\n function displayStart() {\n element.style[startProperty] = 'auto';\n element.style[endProperty] = secondary ? '0' : '100%';\n }\n\n function displayEnd() {\n element.style[startProperty] = secondary ? '0' : '100%';\n element.style[endProperty] = 'auto';\n }\n\n function displayIfFits(availableSpace, display) {\n var fits = offsetSize <= availableSpace;\n\n if (fits) {\n display();\n }\n\n return fits;\n }\n\n function displayStartIfFits() {\n return displayIfFits(availableStartSpace, displayStart);\n }\n\n function displayEndIfFits() {\n return displayIfFits(availableEndSpace, displayEnd);\n }\n\n function displayWhereverShrinkedFits() {\n var moreSpaceStart = availableStartSpace > availableEndSpace;\n var minSize = style[minSizeProperty] && parseInt(style[minSizeProperty], 10);\n\n function shrinkToSize(size) {\n if (minSize && size < minSize) {\n warnOnDev(\"<Fit />'s child will not fit anywhere with its current \".concat(minSizeProperty, \" of \").concat(minSize, \"px.\"));\n }\n\n var newSize = Math.max(size, minSize || 0);\n warnOnDev(\"<Fit />'s child needed to have its \".concat(sizeProperty, \" decreased to \").concat(newSize, \"px.\"));\n element.style[sizeProperty] = \"\".concat(newSize, \"px\");\n }\n\n if (moreSpaceStart) {\n shrinkToSize(availableStartSpace);\n displayStart();\n } else {\n shrinkToSize(availableEndSpace);\n displayEnd();\n }\n }\n\n var fits;\n\n if (invertAxis) {\n fits = displayStartIfFits() || displayEndIfFits();\n } else {\n fits = displayEndIfFits() || displayStartIfFits();\n }\n\n if (!fits) {\n displayWhereverShrinkedFits();\n }\n}\n\nfunction alignMainAxis(args) {\n alignAxis(args);\n}\n\nfunction alignSecondaryAxis(args) {\n alignAxis(_objectSpread(_objectSpread({}, args), {}, {\n axis: args.axis === 'x' ? 'y' : 'x',\n secondary: true\n }));\n}\n\nfunction alignBothAxis(args) {\n var invertAxis = args.invertAxis,\n invertSecondaryAxis = args.invertSecondaryAxis,\n commonArgs = _objectWithoutProperties(args, _excluded);\n\n alignMainAxis(_objectSpread(_objectSpread({}, commonArgs), {}, {\n invertAxis: invertAxis\n }));\n alignSecondaryAxis(_objectSpread(_objectSpread({}, commonArgs), {}, {\n invertAxis: invertSecondaryAxis\n }));\n}\n\nvar Fit = /*#__PURE__*/function (_Component) {\n _inherits(Fit, _Component);\n\n var _super = _createSuper(Fit);\n\n function Fit() {\n var _this;\n\n _classCallCheck(this, Fit);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onMutation\", function () {\n _this.fit();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"mutationObserver\", isMutationObserverSupported && new MutationObserver(_this.onMutation));\n\n _defineProperty(_assertThisInitialized(_this), \"fit\", function () {\n var _assertThisInitialize = _assertThisInitialized(_this),\n scrollContainer = _assertThisInitialize.scrollContainer,\n container = _assertThisInitialize.container,\n element = _assertThisInitialize.element;\n\n if (!element) {\n return;\n }\n\n var elementWidth = element.clientWidth;\n var elementHeight = element.clientHeight; // No need to recalculate - already did that for current dimensions\n\n if (_this.elementWidth === elementWidth && _this.elementHeight === elementHeight) {\n return;\n } // Save the dimensions so that we know we don't need to repeat the function if unchanged\n\n\n _this.elementWidth = elementWidth;\n _this.elementHeight = elementHeight;\n var parent = container.parentElement; // Container was unmounted\n\n if (!parent) {\n return;\n }\n /**\n * We need to ensure that <Fit />'s child has a absolute position. Otherwise,\n * we wouldn't be able to place the child in the correct position.\n */\n\n\n var style = window.getComputedStyle(element);\n var position = style.position;\n\n if (position !== 'absolute') {\n warnOnDev('<Fit />\\'s child does not have absolute position. You should apply `position: absolute` to it.');\n element.style.position = 'absolute';\n }\n /**\n * We need to ensure that <Fit />'s parent has a relative position. Otherwise,\n * we wouldn't be able to place the child in the correct position.\n */\n\n\n var parentStyle = window.getComputedStyle(parent);\n var parentPosition = parentStyle.position;\n\n if (parentPosition !== 'relative' && parentPosition !== 'absolute') {\n warnOnDev('<Fit />\\'s parent does not have relative position. You should apply `position: relative` to it.');\n parent.style.position = 'relative';\n }\n\n var _this$props = _this.props,\n invertAxis = _this$props.invertAxis,\n invertSecondaryAxis = _this$props.invertSecondaryAxis,\n mainAxis = _this$props.mainAxis,\n spacing = _this$props.spacing;\n alignBothAxis({\n container: container,\n element: element,\n invertAxis: invertAxis,\n invertSecondaryAxis: invertSecondaryAxis,\n axis: mainAxis,\n scrollContainer: scrollContainer,\n spacing: spacing\n });\n });\n\n return _this;\n }\n\n _createClass(Fit, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (!isDisplayContentsSupported) {\n // eslint-disable-next-line react/no-find-dom-node\n var element = findDOMNode(this);\n this.container = element;\n this.element = element;\n this.scrollContainer = findScrollContainer(element);\n }\n\n this.fit();\n\n if (isMutationObserverSupported) {\n this.mutationObserver.observe(this.element, {\n attributes: true,\n attributeFilter: ['class', 'style']\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var children = this.props.children;\n var child = React.Children.only(children);\n\n if (isDisplayContentsSupported) {\n return /*#__PURE__*/React.createElement(\"span\", {\n ref: function ref(container) {\n _this2.container = container;\n var element = container && container.firstChild;\n _this2.element = element;\n _this2.scrollContainer = findScrollContainer(element);\n },\n style: {\n display: 'contents'\n }\n }, child);\n }\n\n return child;\n }\n }]);\n\n return Fit;\n}(Component);\n\nexport { Fit as default };\nFit.propTypes = {\n children: PropTypes.node,\n invertAxis: PropTypes.bool,\n invertSecondaryAxis: PropTypes.bool,\n mainAxis: PropTypes.oneOf(['x', 'y']),\n spacing: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n bottom: PropTypes.number.isRequired,\n left: PropTypes.number.isRequired,\n right: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired\n })])\n};\nFit.defaultProps = {\n mainAxis: 'y',\n spacing: 8\n};","/**\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\n/**\n * Stringify one point, a position (start and end points), or a node’s\n * positional information.\n *\n * @param {Node|NodeLike|Position|Point|null} [value]\n * @returns {string}\n */\nexport function stringifyPosition(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if ('position' in value || 'type' in value) {\n return position(value.position)\n }\n\n // Position.\n if ('start' in value || 'end' in value) {\n return position(value)\n }\n\n // Point.\n if ('line' in value || 'column' in value) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\n/**\n * @param {Point|undefined} point\n * @returns {string}\n */\nfunction point(point) {\n return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position|undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number|undefined} value\n * @returns {number}\n */\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {object & {type: string, position?: Position|undefined}} NodeLike\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\nexport class VFileMessage extends Error {\n /**\n * Constructor of a message for `reason` at `place` from `origin`.\n * When an error is passed in as `reason`, copies the `stack`.\n *\n * @param {string|Error} reason Reason for message (`string` or `Error`). Uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place] Place at which the message occurred in a file (`Node`, `Position`, or `Point`, optional).\n * @param {string} [origin] Place in code the message originates from (`string`, optional).\n */\n constructor(reason, place, origin) {\n /** @type {[string|null, string|null]} */\n const parts = [null, null]\n /** @type {Position} */\n let position = {\n // @ts-expect-error: we always follows the structure of `position`.\n start: {line: null, column: null},\n // @ts-expect-error: \"\n end: {line: null, column: null}\n }\n\n super()\n\n if (typeof place === 'string') {\n origin = place\n place = undefined\n }\n\n if (typeof origin === 'string') {\n const index = origin.indexOf(':')\n\n if (index === -1) {\n parts[1] = origin\n } else {\n parts[0] = origin.slice(0, index)\n parts[1] = origin.slice(index + 1)\n }\n }\n\n if (place) {\n // Node.\n if ('type' in place || 'position' in place) {\n if (place.position) {\n position = place.position\n }\n }\n // Position.\n else if ('start' in place || 'end' in place) {\n position = place\n }\n // Point.\n else if ('line' in place || 'column' in place) {\n position.start = place\n }\n }\n\n // Fields from `Error`\n this.name = stringifyPosition(place) || '1:1'\n this.message = typeof reason === 'object' ? reason.message : reason\n this.stack = typeof reason === 'object' ? reason.stack : ''\n\n /**\n * Reason for message.\n * @type {string}\n */\n this.reason = this.message\n /**\n * If true, marks associated file as no longer processable.\n * @type {boolean?}\n */\n // eslint-disable-next-line no-unused-expressions\n this.fatal\n /**\n * Starting line of error.\n * @type {number?}\n */\n this.line = position.start.line\n /**\n * Starting column of error.\n * @type {number?}\n */\n this.column = position.start.column\n /**\n * Namespace of warning.\n * @type {string?}\n */\n this.source = parts[0]\n /**\n * Category of message.\n * @type {string?}\n */\n this.ruleId = parts[1]\n /**\n * Full range information, when available.\n * Has start and end properties, both set to an object with line and column, set to number?.\n * @type {Position?}\n */\n this.position = position\n\n // The following fields are “well knownâ€.\n // Not standard.\n // Feel free to add other non-standard fields to your messages.\n\n /* eslint-disable no-unused-expressions */\n /**\n * You can use this to specify the source value that’s being reported, which\n * is deemed incorrect.\n * @type {string?}\n */\n this.actual\n /**\n * You can use this to suggest values that should be used instead of\n * `actual`, one or more values that are deemed as acceptable.\n * @type {Array<string>?}\n */\n this.expected\n /**\n * You may add a file property with a path of a file (used throughout the VFile ecosystem).\n * @type {string?}\n */\n this.file\n /**\n * You may add a url property with a link to documentation for the message.\n * @type {string?}\n */\n this.url\n /**\n * You may add a note property with a long form description of the message (supported by vfile-reporter).\n * @type {string?}\n */\n this.note\n /* eslint-enable no-unused-expressions */\n }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.fatal = null\nVFileMessage.prototype.column = null\nVFileMessage.prototype.line = null\nVFileMessage.prototype.source = null\nVFileMessage.prototype.ruleId = null\nVFileMessage.prototype.position = null\n","// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\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// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const path = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * @param {string} path\n * @param {string} [ext]\n * @returns {string}\n */\nfunction basename(path, ext) {\n if (ext !== undefined && typeof ext !== 'string') {\n throw new TypeError('\"ext\" argument must be a string')\n }\n\n assertPath(path)\n let start = 0\n let end = -1\n let index = path.length\n /** @type {boolean|undefined} */\n let seenNonSlash\n\n if (ext === undefined || ext.length === 0 || ext.length > path.length) {\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // path component.\n seenNonSlash = true\n end = index + 1\n }\n }\n\n return end < 0 ? '' : path.slice(start, end)\n }\n\n if (ext === path) {\n return ''\n }\n\n let firstNonSlashEnd = -1\n let extIndex = ext.length - 1\n\n while (index--) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (seenNonSlash) {\n start = index + 1\n break\n }\n } else {\n if (firstNonSlashEnd < 0) {\n // We saw the first non-path separator, remember this index in case\n // we need it if the extension ends up not matching.\n seenNonSlash = true\n firstNonSlashEnd = index + 1\n }\n\n if (extIndex > -1) {\n // Try to match the explicit extension.\n if (path.charCodeAt(index) === ext.charCodeAt(extIndex--)) {\n if (extIndex < 0) {\n // We matched the extension, so mark this as the end of our path\n // component\n end = index\n }\n } else {\n // Extension does not match, so our result is the entire path\n // component\n extIndex = -1\n end = firstNonSlashEnd\n }\n }\n }\n }\n\n if (start === end) {\n end = firstNonSlashEnd\n } else if (end < 0) {\n end = path.length\n }\n\n return path.slice(start, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction dirname(path) {\n assertPath(path)\n\n if (path.length === 0) {\n return '.'\n }\n\n let end = -1\n let index = path.length\n /** @type {boolean|undefined} */\n let unmatchedSlash\n\n // Prefix `--` is important to not run on `0`.\n while (--index) {\n if (path.charCodeAt(index) === 47 /* `/` */) {\n if (unmatchedSlash) {\n end = index\n break\n }\n } else if (!unmatchedSlash) {\n // We saw the first non-path separator\n unmatchedSlash = true\n }\n }\n\n return end < 0\n ? path.charCodeAt(0) === 47 /* `/` */\n ? '/'\n : '.'\n : end === 1 && path.charCodeAt(0) === 47 /* `/` */\n ? '//'\n : path.slice(0, end)\n}\n\n/**\n * @param {string} path\n * @returns {string}\n */\nfunction extname(path) {\n assertPath(path)\n\n let index = path.length\n\n let end = -1\n let startPart = 0\n let startDot = -1\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find.\n let preDotState = 0\n /** @type {boolean|undefined} */\n let unmatchedSlash\n\n while (index--) {\n const code = path.charCodeAt(index)\n\n if (code === 47 /* `/` */) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now.\n if (unmatchedSlash) {\n startPart = index + 1\n break\n }\n\n continue\n }\n\n if (end < 0) {\n // We saw the first non-path separator, mark this as the end of our\n // extension.\n unmatchedSlash = true\n end = index + 1\n }\n\n if (code === 46 /* `.` */) {\n // If this is our first dot, mark it as the start of our extension.\n if (startDot < 0) {\n startDot = index\n } else if (preDotState !== 1) {\n preDotState = 1\n }\n } else if (startDot > -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension.\n preDotState = -1\n }\n }\n\n if (\n startDot < 0 ||\n end < 0 ||\n // We saw a non-dot character immediately before the dot.\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly `..`.\n (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n ) {\n return ''\n }\n\n return path.slice(startDot, end)\n}\n\n/**\n * @param {Array<string>} segments\n * @returns {string}\n */\nfunction join(...segments) {\n let index = -1\n /** @type {string|undefined} */\n let joined\n\n while (++index < segments.length) {\n assertPath(segments[index])\n\n if (segments[index]) {\n joined =\n joined === undefined ? segments[index] : joined + '/' + segments[index]\n }\n }\n\n return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Note: `normalize` is not exposed as `path.normalize`, so some code is\n * manually removed from it.\n *\n * @param {string} path\n * @returns {string}\n */\nfunction normalize(path) {\n assertPath(path)\n\n const absolute = path.charCodeAt(0) === 47 /* `/` */\n\n // Normalize the path according to POSIX rules.\n let value = normalizeString(path, !absolute)\n\n if (value.length === 0 && !absolute) {\n value = '.'\n }\n\n if (value.length > 0 && path.charCodeAt(path.length - 1) === 47 /* / */) {\n value += '/'\n }\n\n return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n * @param {boolean} allowAboveRoot\n * @returns {string}\n */\nfunction normalizeString(path, allowAboveRoot) {\n let result = ''\n let lastSegmentLength = 0\n let lastSlash = -1\n let dots = 0\n let index = -1\n /** @type {number|undefined} */\n let code\n /** @type {number} */\n let lastSlashIndex\n\n while (++index <= path.length) {\n if (index < path.length) {\n code = path.charCodeAt(index)\n } else if (code === 47 /* `/` */) {\n break\n } else {\n code = 47 /* `/` */\n }\n\n if (code === 47 /* `/` */) {\n if (lastSlash === index - 1 || dots === 1) {\n // Empty.\n } else if (lastSlash !== index - 1 && dots === 2) {\n if (\n result.length < 2 ||\n lastSegmentLength !== 2 ||\n result.charCodeAt(result.length - 1) !== 46 /* `.` */ ||\n result.charCodeAt(result.length - 2) !== 46 /* `.` */\n ) {\n if (result.length > 2) {\n lastSlashIndex = result.lastIndexOf('/')\n\n if (lastSlashIndex !== result.length - 1) {\n if (lastSlashIndex < 0) {\n result = ''\n lastSegmentLength = 0\n } else {\n result = result.slice(0, lastSlashIndex)\n lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n }\n\n lastSlash = index\n dots = 0\n continue\n }\n } else if (result.length > 0) {\n result = ''\n lastSegmentLength = 0\n lastSlash = index\n dots = 0\n continue\n }\n }\n\n if (allowAboveRoot) {\n result = result.length > 0 ? result + '/..' : '..'\n lastSegmentLength = 2\n }\n } else {\n if (result.length > 0) {\n result += '/' + path.slice(lastSlash + 1, index)\n } else {\n result = path.slice(lastSlash + 1, index)\n }\n\n lastSegmentLength = index - lastSlash - 1\n }\n\n lastSlash = index\n dots = 0\n } else if (code === 46 /* `.` */ && dots > -1) {\n dots++\n } else {\n dots = -1\n }\n }\n\n return result\n}\n\n/**\n * @param {string} path\n */\nfunction assertPath(path) {\n if (typeof path !== 'string') {\n throw new TypeError(\n 'Path must be a string. Received ' + JSON.stringify(path)\n )\n }\n}\n\n/* eslint-enable max-depth, complexity */\n","// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don’t think one tiny line of code can be copyrighted. 😅\nexport const proc = {cwd}\n\nfunction cwd() {\n return '/'\n}\n","/**\n * @typedef URL\n * @property {string} hash\n * @property {string} host\n * @property {string} hostname\n * @property {string} href\n * @property {string} origin\n * @property {string} password\n * @property {string} pathname\n * @property {string} port\n * @property {string} protocol\n * @property {string} search\n * @property {any} searchParams\n * @property {string} username\n * @property {() => string} toString\n * @property {() => string} toJSON\n */\n\n/**\n * @param {unknown} fileURLOrPath\n * @returns {fileURLOrPath is URL}\n */\n// From: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js#L1501>\nexport function isUrl(fileURLOrPath) {\n return (\n fileURLOrPath !== null &&\n typeof fileURLOrPath === 'object' &&\n // @ts-expect-error: indexable.\n fileURLOrPath.href &&\n // @ts-expect-error: indexable.\n fileURLOrPath.origin\n )\n}\n","/// <reference lib=\"dom\" />\n\nimport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/fcf8ba4/lib/internal/url.js>\n\n/**\n * @param {string|URL} path\n */\nexport function urlToPath(path) {\n if (typeof path === 'string') {\n path = new URL(path)\n } else if (!isUrl(path)) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'The \"path\" argument must be of type string or an instance of URL. Received `' +\n path +\n '`'\n )\n error.code = 'ERR_INVALID_ARG_TYPE'\n throw error\n }\n\n if (path.protocol !== 'file:') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError('The URL must be of scheme file')\n error.code = 'ERR_INVALID_URL_SCHEME'\n throw error\n }\n\n return getPathFromURLPosix(path)\n}\n\n/**\n * @param {URL} url\n */\nfunction getPathFromURLPosix(url) {\n if (url.hostname !== '') {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL host must be \"localhost\" or empty on darwin'\n )\n error.code = 'ERR_INVALID_FILE_URL_HOST'\n throw error\n }\n\n const pathname = url.pathname\n let index = -1\n\n while (++index < pathname.length) {\n if (\n pathname.charCodeAt(index) === 37 /* `%` */ &&\n pathname.charCodeAt(index + 1) === 50 /* `2` */\n ) {\n const third = pathname.charCodeAt(index + 2)\n if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n /** @type {NodeJS.ErrnoException} */\n const error = new TypeError(\n 'File URL path must not include encoded / characters'\n )\n error.code = 'ERR_INVALID_FILE_URL_PATH'\n throw error\n }\n }\n }\n\n return decodeURIComponent(pathname)\n}\n\nexport {isUrl} from './minurl.shared.js'\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Point} Point\n * @typedef {Record<string, unknown> & {type: string, position?: Position|undefined}} NodeLike\n * @typedef {import('./minurl.shared.js').URL} URL\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Value} Value\n *\n * @typedef {'ascii'|'utf8'|'utf-8'|'utf16le'|'ucs2'|'ucs-2'|'base64'|'base64url'|'latin1'|'binary'|'hex'} BufferEncoding\n * Encodings supported by the buffer class.\n * This is a copy of the typing from Node, copied to prevent Node globals from\n * being needed.\n * Copied from: <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/90a4ec8/types/node/buffer.d.ts#L170>\n *\n * @typedef {Value|Options|VFile|URL} Compatible\n * Things that can be passed to the constructor.\n *\n * @typedef VFileCoreOptions\n * @property {Value} [value]\n * @property {string} [cwd]\n * @property {Array<string>} [history]\n * @property {string|URL} [path]\n * @property {string} [basename]\n * @property {string} [stem]\n * @property {string} [extname]\n * @property {string} [dirname]\n * @property {Data} [data]\n *\n * @typedef Map\n * Raw source map, see:\n * <https://github.com/mozilla/source-map/blob/58819f0/source-map.d.ts#L15-L23>.\n * @property {number} version\n * @property {Array<string>} sources\n * @property {Array<string>} names\n * @property {string|undefined} [sourceRoot]\n * @property {Array<string>|undefined} [sourcesContent]\n * @property {string} mappings\n * @property {string} file\n *\n * @typedef {{[key: string]: unknown} & VFileCoreOptions} Options\n * Configuration: a bunch of keys that will be shallow copied over to the new\n * file.\n *\n * @typedef {Record<string, unknown>} ReporterSettings\n * @typedef {<T = ReporterSettings>(files: Array<VFile>, options: T) => string} Reporter\n */\n\nimport buffer from 'is-buffer'\nimport {VFileMessage} from 'vfile-message'\nimport {path} from './minpath.js'\nimport {proc} from './minproc.js'\nimport {urlToPath, isUrl} from './minurl.js'\n\n// Order of setting (least specific to most), we need this because otherwise\n// `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n// stem can be set.\nconst order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nexport class VFile {\n /**\n * Create a new virtual file.\n *\n * If `options` is `string` or `Buffer`, it’s treated as `{value: options}`.\n * If `options` is a `URL`, it’s treated as `{path: options}`.\n * If `options` is a `VFile`, shallow copies its data over to the new file.\n * All fields in `options` are set on the newly created `VFile`.\n *\n * Path related fields are set in the following order (least specific to\n * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n * `dirname`.\n *\n * It’s not possible to set either `dirname` or `extname` without setting\n * either `history`, `path`, `basename`, or `stem` as well.\n *\n * @param {Compatible} [value]\n */\n constructor(value) {\n /** @type {Options} */\n let options\n\n if (!value) {\n options = {}\n } else if (typeof value === 'string' || buffer(value)) {\n // @ts-expect-error Looks like a buffer.\n options = {value}\n } else if (isUrl(value)) {\n options = {path: value}\n } else {\n // @ts-expect-error Looks like file or options.\n options = value\n }\n\n /**\n * Place to store custom information (default: `{}`).\n * It’s OK to store custom data directly on the file but moving it to\n * `data` is recommended.\n * @type {Data}\n */\n this.data = {}\n\n /**\n * List of messages associated with the file.\n * @type {Array<VFileMessage>}\n */\n this.messages = []\n\n /**\n * List of filepaths the file moved between.\n * The first is the original path and the last is the current path.\n * @type {Array<string>}\n */\n this.history = []\n\n /**\n * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n * @type {string}\n */\n this.cwd = proc.cwd()\n\n /* eslint-disable no-unused-expressions */\n /**\n * Raw value.\n * @type {Value}\n */\n this.value\n\n // The below are non-standard, they are “well-knownâ€.\n // As in, used in several tools.\n\n /**\n * Whether a file was saved to disk.\n * This is used by vfile reporters.\n * @type {boolean}\n */\n this.stored\n\n /**\n * Sometimes files have a non-string, compiled, representation.\n * This can be stored in the `result` field.\n * One example is when turning markdown into React nodes.\n * This is used by unified to store non-string results.\n * @type {unknown}\n */\n this.result\n\n /**\n * Sometimes files have a source map associated with them.\n * This can be stored in the `map` field.\n * This should be a `Map` type, which is equivalent to the `RawSourceMap`\n * type from the `source-map` module.\n * @type {Map|undefined}\n */\n this.map\n /* eslint-enable no-unused-expressions */\n\n // Set path related properties in the correct order.\n let index = -1\n\n while (++index < order.length) {\n const prop = order[index]\n\n // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n // `vfile`s too.\n if (prop in options && options[prop] !== undefined) {\n // @ts-expect-error: TS is confused by the different types for `history`.\n this[prop] = prop === 'history' ? [...options[prop]] : options[prop]\n }\n }\n\n /** @type {string} */\n let prop\n\n // Set non-path related properties.\n for (prop in options) {\n // @ts-expect-error: fine to set other things.\n if (!order.includes(prop)) this[prop] = options[prop]\n }\n }\n\n /**\n * Get the full path (example: `'~/index.min.js'`).\n * @returns {string}\n */\n get path() {\n return this.history[this.history.length - 1]\n }\n\n /**\n * Set the full path (example: `'~/index.min.js'`).\n * Cannot be nullified.\n * You can set a file URL (a `URL` object with a `file:` protocol) which will\n * be turned into a path with `url.fileURLToPath`.\n * @param {string|URL} path\n */\n set path(path) {\n if (isUrl(path)) {\n path = urlToPath(path)\n }\n\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n }\n\n /**\n * Get the parent path (example: `'~'`).\n */\n get dirname() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined\n }\n\n /**\n * Set the parent path (example: `'~'`).\n * Cannot be set if there’s no `path` yet.\n */\n set dirname(dirname) {\n assertPath(this.basename, 'dirname')\n this.path = path.join(dirname || '', this.basename)\n }\n\n /**\n * Get the basename (including extname) (example: `'index.min.js'`).\n */\n get basename() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined\n }\n\n /**\n * Set basename (including extname) (`'index.min.js'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set basename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = path.join(this.dirname || '', basename)\n }\n\n /**\n * Get the extname (including dot) (example: `'.js'`).\n */\n get extname() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined\n }\n\n /**\n * Set the extname (including dot) (example: `'.js'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be set if there’s no `path` yet.\n */\n set extname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.dirname, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.includes('.', 1)) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = path.join(this.dirname, this.stem + (extname || ''))\n }\n\n /**\n * Get the stem (basename w/o extname) (example: `'index.min'`).\n */\n get stem() {\n return typeof this.path === 'string'\n ? path.basename(this.path, this.extname)\n : undefined\n }\n\n /**\n * Set the stem (basename w/o extname) (example: `'index.min'`).\n * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n * on windows).\n * Cannot be nullified (use `file.path = file.dirname` instead).\n */\n set stem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = path.join(this.dirname || '', stem + (this.extname || ''))\n }\n\n /**\n * Serialize the file.\n *\n * @param {BufferEncoding} [encoding='utf8']\n * When `value` is a `Buffer`, `encoding` is a character encoding to\n * understand it as (default: `'utf8'`).\n * @returns {string}\n * Serialized file.\n */\n toString(encoding) {\n return (this.value || '').toString(encoding)\n }\n\n /**\n * Constructs a new `VFileMessage`, where `fatal` is set to `false`, and\n * associates it with the file by adding it to `vfile.messages` and setting\n * `message.file` to the current filepath.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n message(reason, place, origin) {\n const message = new VFileMessage(reason, place, origin)\n\n if (this.path) {\n message.name = this.path + ':' + message.name\n message.file = this.path\n }\n\n message.fatal = false\n\n this.messages.push(message)\n\n return message\n }\n\n /**\n * Like `VFile#message()`, but associates an informational message where\n * `fatal` is set to `null`.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {VFileMessage}\n * Message.\n */\n info(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = null\n\n return message\n }\n\n /**\n * Like `VFile#message()`, but associates a fatal message where `fatal` is\n * set to `true`, and then immediately throws it.\n *\n * > 👉 **Note**: a fatal error means that a file is no longer processable.\n *\n * @param {string|Error} reason\n * Human readable reason for the message, uses the stack and message of the error if given.\n * @param {Node|NodeLike|Position|Point} [place]\n * Place where the message occurred in the file.\n * @param {string} [origin]\n * Computer readable reason for the message\n * @returns {never}\n * Message.\n */\n fail(reason, place, origin) {\n const message = this.message(reason, place, origin)\n\n message.fatal = true\n\n throw message\n }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {void}\n */\nfunction assertPart(part, name) {\n if (part && part.includes(path.sep)) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + path.sep + '`'\n )\n }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string|undefined} part\n * @param {string} name\n * @returns {asserts part is string}\n */\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string|undefined} path\n * @param {string} name\n * @returns {asserts path is string}\n */\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n * Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n if (error) {\n throw error\n }\n}\n","export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n","/**\n * @typedef {(error?: Error|null|undefined, ...output: Array<any>) => void} Callback\n * @typedef {(...input: Array<any>) => any} Middleware\n *\n * @typedef {(...input: Array<any>) => void} Run\n * Call all middleware.\n * @typedef {(fn: Middleware) => Pipeline} Use\n * Add `fn` (middleware) to the list.\n * @typedef {{run: Run, use: Use}} Pipeline\n * Middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n */\nexport function trough() {\n /** @type {Array<Middleware>} */\n const fns = []\n /** @type {Pipeline} */\n const pipeline = {run, use}\n\n return pipeline\n\n /** @type {Run} */\n function run(...values) {\n let middlewareIndex = -1\n /** @type {Callback} */\n const callback = values.pop()\n\n if (typeof callback !== 'function') {\n throw new TypeError('Expected function as last argument, not ' + callback)\n }\n\n next(null, ...values)\n\n /**\n * Run the next `fn`, or we’re done.\n *\n * @param {Error|null|undefined} error\n * @param {Array<any>} output\n */\n function next(error, ...output) {\n const fn = fns[++middlewareIndex]\n let index = -1\n\n if (error) {\n callback(error)\n return\n }\n\n // Copy non-nullish input into values.\n while (++index < values.length) {\n if (output[index] === null || output[index] === undefined) {\n output[index] = values[index]\n }\n }\n\n // Save the newly created `output` for the next call.\n values = output\n\n // Next or done.\n if (fn) {\n wrap(fn, next)(...output)\n } else {\n callback(null, ...output)\n }\n }\n }\n\n /** @type {Use} */\n function use(middelware) {\n if (typeof middelware !== 'function') {\n throw new TypeError(\n 'Expected `middelware` to be a function, not ' + middelware\n )\n }\n\n fns.push(middelware)\n return pipeline\n }\n}\n\n/**\n * Wrap `middleware`.\n * Can be sync or async; return a promise, receive a callback, or return new\n * values and errors.\n *\n * @param {Middleware} middleware\n * @param {Callback} callback\n */\nexport function wrap(middleware, callback) {\n /** @type {boolean} */\n let called\n\n return wrapped\n\n /**\n * Call `middleware`.\n * @this {any}\n * @param {Array<any>} parameters\n * @returns {void}\n */\n function wrapped(...parameters) {\n const fnExpectsCallback = middleware.length > parameters.length\n /** @type {any} */\n let result\n\n if (fnExpectsCallback) {\n parameters.push(done)\n }\n\n try {\n result = middleware.apply(this, parameters)\n } catch (error) {\n const exception = /** @type {Error} */ (error)\n\n // Well, this is quite the pickle.\n // `middleware` received a callback and called it synchronously, but that\n // threw an error.\n // The only thing left to do is to throw the thing instead.\n if (fnExpectsCallback && called) {\n throw exception\n }\n\n return done(exception)\n }\n\n if (!fnExpectsCallback) {\n if (result instanceof Promise) {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n /**\n * Call `callback`, only once.\n * @type {Callback}\n */\n function done(error, ...output) {\n if (!called) {\n called = true\n callback(error, ...output)\n }\n }\n\n /**\n * Call `done` with one value.\n *\n * @param {any} [value]\n */\n function then(value) {\n done(null, value)\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('vfile').VFileCompatible} VFileCompatible\n * @typedef {import('vfile').VFileValue} VFileValue\n * @typedef {import('..').Processor} Processor\n * @typedef {import('..').Plugin} Plugin\n * @typedef {import('..').Preset} Preset\n * @typedef {import('..').Pluggable} Pluggable\n * @typedef {import('..').PluggableList} PluggableList\n * @typedef {import('..').Transformer} Transformer\n * @typedef {import('..').Parser} Parser\n * @typedef {import('..').Compiler} Compiler\n * @typedef {import('..').RunCallback} RunCallback\n * @typedef {import('..').ProcessCallback} ProcessCallback\n *\n * @typedef Context\n * @property {Node} tree\n * @property {VFile} file\n */\n\nimport {bail} from 'bail'\nimport isBuffer from 'is-buffer'\nimport extend from 'extend'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\n\n// Expose a frozen processor.\nexport const unified = base().freeze()\n\nconst own = {}.hasOwnProperty\n\n// Function to create the first processor.\n/**\n * @returns {Processor}\n */\nfunction base() {\n const transformers = trough()\n /** @type {Processor['attachers']} */\n const attachers = []\n /** @type {Record<string, unknown>} */\n let namespace = {}\n /** @type {boolean|undefined} */\n let frozen\n let freezeIndex = -1\n\n // Data management.\n // @ts-expect-error: overloads are handled.\n processor.data = data\n processor.Parser = undefined\n processor.Compiler = undefined\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n // @ts-expect-error: overloads are handled.\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n // @ts-expect-error: overloads are handled.\n processor.run = run\n processor.runSync = runSync\n // @ts-expect-error: overloads are handled.\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n /** @type {Processor} */\n function processor() {\n const destination = base()\n let index = -1\n\n while (++index < attachers.length) {\n destination.use(...attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n /**\n * @param {string|Record<string, unknown>} [key]\n * @param {unknown} [value]\n * @returns {unknown}\n */\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n namespace[key] = value\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n /** @type {Processor['freeze']} */\n function freeze() {\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n const [attacher, ...options] = attachers[freezeIndex]\n\n if (options[0] === false) {\n continue\n }\n\n if (options[0] === true) {\n options[0] = undefined\n }\n\n /** @type {Transformer|void} */\n const transformer = attacher.call(processor, ...options)\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Number.POSITIVE_INFINITY\n\n return processor\n }\n\n /**\n * @param {Pluggable|null|undefined} [value]\n * @param {...unknown} options\n * @returns {Processor}\n */\n function use(value, ...options) {\n /** @type {Record<string, unknown>|undefined} */\n let settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin(value, ...options)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = Object.assign(namespace.settings || {}, settings)\n }\n\n return processor\n\n /**\n * @param {import('..').Pluggable<unknown[]>} value\n * @returns {void}\n */\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if (Array.isArray(value)) {\n const [plugin, ...options] = value\n addPlugin(plugin, ...options)\n } else {\n addPreset(value)\n }\n } else {\n throw new TypeError('Expected usable value, not `' + value + '`')\n }\n }\n\n /**\n * @param {Preset} result\n * @returns {void}\n */\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = Object.assign(settings || {}, result.settings)\n }\n }\n\n /**\n * @param {PluggableList|null|undefined} [plugins]\n * @returns {void}\n */\n function addList(plugins) {\n let index = -1\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (Array.isArray(plugins)) {\n while (++index < plugins.length) {\n const thing = plugins[index]\n add(thing)\n }\n } else {\n throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n /**\n * @param {Plugin} plugin\n * @param {...unknown} [value]\n * @returns {void}\n */\n function addPlugin(plugin, value) {\n let index = -1\n /** @type {Processor['attachers'][number]|undefined} */\n let entry\n\n while (++index < attachers.length) {\n if (attachers[index][0] === plugin) {\n entry = attachers[index]\n break\n }\n }\n\n if (entry) {\n if (isPlainObj(entry[1]) && isPlainObj(value)) {\n value = extend(true, entry[1], value)\n }\n\n entry[1] = value\n } else {\n // @ts-expect-error: fine.\n attachers.push([...arguments])\n }\n }\n }\n\n /** @type {Processor['parse']} */\n function parse(doc) {\n processor.freeze()\n const file = vfile(doc)\n const Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n // @ts-expect-error: `newable` checks this.\n return new Parser(String(file), file).parse()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n /** @type {Processor['stringify']} */\n function stringify(node, doc) {\n processor.freeze()\n const file = vfile(doc)\n const Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n // @ts-expect-error: `newable` checks this.\n return new Compiler(node, file).compile()\n }\n\n // @ts-expect-error: `newable` checks this.\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n /**\n * @param {Node} node\n * @param {VFileCompatible|RunCallback} [doc]\n * @param {RunCallback} [callback]\n * @returns {Promise<Node>|void}\n */\n function run(node, doc, callback) {\n assertNode(node)\n processor.freeze()\n\n if (!callback && typeof doc === 'function') {\n callback = doc\n doc = undefined\n }\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((node: Node) => void)} resolve\n * @param {(error: Error) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n // @ts-expect-error: `doc` can’t be a callback anymore, we checked.\n transformers.run(node, vfile(doc), done)\n\n /**\n * @param {Error|null} error\n * @param {Node} tree\n * @param {VFile} file\n * @returns {void}\n */\n function done(error, tree, file) {\n tree = tree || node\n if (error) {\n reject(error)\n } else if (resolve) {\n resolve(tree)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, tree, file)\n }\n }\n }\n }\n\n /** @type {Processor['runSync']} */\n function runSync(node, file) {\n /** @type {Node|undefined} */\n let result\n /** @type {boolean|undefined} */\n let complete\n\n processor.run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n // @ts-expect-error: we either bailed on an error or have a tree.\n return result\n\n /**\n * @param {Error|null} [error]\n * @param {Node} [tree]\n * @returns {void}\n */\n function done(error, tree) {\n bail(error)\n result = tree\n complete = true\n }\n }\n\n /**\n * @param {VFileCompatible} doc\n * @param {ProcessCallback} [callback]\n * @returns {Promise<VFile>|undefined}\n */\n function process(doc, callback) {\n processor.freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!callback) {\n return new Promise(executor)\n }\n\n executor(null, callback)\n\n /**\n * @param {null|((file: VFile) => void)} resolve\n * @param {(error?: Error|null|undefined) => void} reject\n * @returns {void}\n */\n function executor(resolve, reject) {\n const file = vfile(doc)\n\n processor.run(processor.parse(file), file, (error, tree, file) => {\n if (error || !tree || !file) {\n done(error)\n } else {\n /** @type {unknown} */\n const result = processor.stringify(tree, file)\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (looksLikeAVFileValue(result)) {\n file.value = result\n } else {\n file.result = result\n }\n\n done(error, file)\n }\n })\n\n /**\n * @param {Error|null|undefined} [error]\n * @param {VFile|undefined} [file]\n * @returns {void}\n */\n function done(error, file) {\n if (error || !file) {\n reject(error)\n } else if (resolve) {\n resolve(file)\n } else {\n // @ts-expect-error: `callback` is defined if `resolve` is not.\n callback(null, file)\n }\n }\n }\n }\n\n /** @type {Processor['processSync']} */\n function processSync(doc) {\n /** @type {boolean|undefined} */\n let complete\n\n processor.freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n\n const file = vfile(doc)\n\n processor.process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n /**\n * @param {Error|null|undefined} [error]\n * @returns {void}\n */\n function done(error) {\n complete = true\n bail(error)\n }\n }\n}\n\n/**\n * Check if `value` is a constructor.\n *\n * @param {unknown} value\n * @param {string} name\n * @returns {boolean}\n */\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\n // Prototypes do exist.\n // type-coverage:ignore-next-line\n value.prototype &&\n // A function with keys in its prototype is probably a constructor.\n // Classes’ prototype methods are not enumerable, so we check if some value\n // exists in the prototype.\n // type-coverage:ignore-next-line\n (keys(value.prototype) || name in value.prototype)\n )\n}\n\n/**\n * Check if `value` is an object with keys.\n *\n * @param {Record<string, unknown>} value\n * @returns {boolean}\n */\nfunction keys(value) {\n /** @type {string} */\n let key\n\n for (key in value) {\n if (own.call(value, key)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Parser`')\n }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n if (typeof value !== 'function') {\n throw new TypeError('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot call `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n // type-coverage:ignore-next-line\n if (!isPlainObj(node) || typeof node.type !== 'string') {\n throw new TypeError('Expected node, got `' + node + '`')\n // Fine.\n }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {VFileCompatible} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n return Boolean(\n value &&\n typeof value === 'object' &&\n 'message' in value &&\n 'messages' in value\n )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is VFileValue}\n */\nfunction looksLikeAVFileValue(value) {\n return typeof value === 'string' || isBuffer(value)\n}\n","/**\n * @typedef Options\n * @property {boolean} [includeImageAlt=true]\n */\n\n/**\n * Get the text content of a node.\n * Prefer the node’s plain-text fields, otherwise serialize its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} node\n * @param {Options} [options]\n * @returns {string}\n */\nexport function toString(node, options) {\n var {includeImageAlt = true} = options || {}\n return one(node, includeImageAlt)\n}\n\n/**\n * @param {unknown} node\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction one(node, includeImageAlt) {\n return (\n (node &&\n typeof node === 'object' &&\n // @ts-ignore looks like a literal.\n (node.value ||\n // @ts-ignore looks like an image.\n (includeImageAlt ? node.alt : '') ||\n // @ts-ignore looks like a parent.\n ('children' in node && all(node.children, includeImageAlt)) ||\n (Array.isArray(node) && all(node, includeImageAlt)))) ||\n ''\n )\n}\n\n/**\n * @param {Array.<unknown>} values\n * @param {boolean} includeImageAlt\n * @returns {string}\n */\nfunction all(values, includeImageAlt) {\n /** @type {Array.<string>} */\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = one(values[index], includeImageAlt)\n }\n\n return result.join('')\n}\n","/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {number} start\n * @param {number} remove\n * @param {T[]} items\n * @returns {void}\n */\nexport function splice(list, start, remove, items) {\n const end = list.length\n let chunkStart = 0\n /** @type {unknown[]} */\n\n let parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove) // @ts-expect-error Hush, it’s fine.\n ;[].splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) [].splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0) // @ts-expect-error Hush, it’s fine.\n ;[].splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n * @param {T[]} list\n * @param {T[]} items\n * @returns {T[]}\n */\n\nexport function push(list, items) {\n if (list.length > 0) {\n splice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n","/**\n * @typedef {import('micromark-util-types').NormalizedExtension} NormalizedExtension\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine several syntax extensions into one.\n *\n * @param {Extension[]} extensions List of syntax extensions.\n * @returns {NormalizedExtension} A single combined extension.\n */\nexport function combineExtensions(extensions) {\n /** @type {NormalizedExtension} */\n const all = {}\n let index = -1\n\n while (++index < extensions.length) {\n syntaxExtension(all, extensions[index])\n }\n\n return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all Extension to merge into.\n * @param {Extension} extension Extension to merge.\n * @returns {void}\n */\nfunction syntaxExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let code\n\n for (code in right) {\n if (!hasOwnProperty.call(left, code)) left[code] = []\n const value = right[code]\n constructs(\n // @ts-expect-error Looks like a list.\n left[code],\n Array.isArray(value) ? value : value ? [value] : []\n )\n }\n }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {unknown[]} existing\n * @param {unknown[]} list\n * @returns {void}\n */\nfunction constructs(existing, list) {\n let index = -1\n /** @type {unknown[]} */\n const before = []\n\n while (++index < list.length) {\n // @ts-expect-error Looks like an object.\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n splice(existing, 0, 0, before)\n}\n\n/**\n * Combine several HTML extensions into one.\n *\n * @param {HtmlExtension[]} htmlExtensions List of HTML extensions.\n * @returns {HtmlExtension} A single combined extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n /** @type {HtmlExtension} */\n const handlers = {}\n let index = -1\n\n while (++index < htmlExtensions.length) {\n htmlExtension(handlers, htmlExtensions[index])\n }\n\n return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all Extension to merge into.\n * @param {HtmlExtension} extension Extension to merge.\n * @returns {void}\n */\nfunction htmlExtension(all, extension) {\n /** @type {string} */\n let hook\n\n for (hook in extension) {\n const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n const left = maybe || (all[hook] = {})\n const right = extension[hook]\n /** @type {string} */\n let type\n\n if (right) {\n for (type in right) {\n left[type] = right[type]\n }\n }\n }\n}\n","// This module is generated by `script/`.\n//\n// CommonMark handles attention (emphasis, strong) markers based on what comes\n// before or after them.\n// One such difference is if those characters are Unicode punctuation.\n// This script is generated from the Unicode data.\nexport const unicodePunctuationRegex =\n /[!-/:-@[-`{-~\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {unicodePunctuationRegex} from './lib/unicode-punctuation-regex.js'\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n */\n\nexport const asciiAlpha = regexCheck(/[A-Za-z]/)\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n */\n\nexport const asciiDigit = regexCheck(/\\d/)\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n */\n\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n */\n\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n */\n\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n */\n\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n )\n}\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32)\n}\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownLineEnding(code) {\n return code !== null && code < -2\n}\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * @returns {code is number}\n */\n\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n\nexport const unicodeWhitespace = regexCheck(/\\s/)\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n */\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n\nexport const unicodePunctuation = regexCheck(unicodePunctuationRegex)\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * @returns {(code: Code) => code is number}\n */\n\nfunction regexCheck(regex) {\n return check\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code Character code\n * @returns {code is number} Whether the character code matches the bound regex\n */\n\n function check(code) {\n return code !== null && regex.test(String.fromCharCode(code))\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownSpace} from 'micromark-util-character'\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {string} type\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n\nexport function factorySpace(effects, ok, type, max) {\n const limit = max ? max - 1 : Number.POSITIVE_INFINITY\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n /** @type {State} */\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const content = {\n tokenize: initializeContent\n}\n/** @type {Initializer} */\n\nfunction initializeContent(effects) {\n const contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n /** @type {Token} */\n\n let previous\n return contentStart\n /** @type {State} */\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n /** @type {State} */\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n /** @type {State} */\n\n function lineStart(code) {\n const token = effects.enter('chunkText', {\n contentType: 'text',\n previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Point} Point\n */\n\n/**\n * @typedef {Record<string, unknown>} StackState\n * @typedef {[Construct, StackState]} StackItem\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n/** @type {InitialConstruct} */\n\nexport const document = {\n tokenize: initializeDocument\n}\n/** @type {Construct} */\n\nconst containerConstruct = {\n tokenize: tokenizeContainer\n}\n/** @type {Initializer} */\n\nfunction initializeDocument(effects) {\n const self = this\n /** @type {StackItem[]} */\n\n const stack = []\n let continued = 0\n /** @type {TokenizeContext|undefined} */\n\n let childFlow\n /** @type {Token|undefined} */\n\n let childToken\n /** @type {number} */\n\n let lineStartOffset\n return start\n /** @type {State} */\n\n function start(code) {\n // First we iterate through the open blocks, starting with the root\n // document, and descending through last children down to the last open\n // block.\n // Each block imposes a condition that the line must satisfy if the block is\n // to remain open.\n // For example, a block quote requires a `>` character.\n // A paragraph requires a non-blank line.\n // In this phase we may match all or just some of the open blocks.\n // But we cannot close unmatched blocks yet, because we may have a lazy\n // continuation line.\n if (continued < stack.length) {\n const item = stack[continued]\n self.containerState = item[1]\n return effects.attempt(\n item[0].continuation,\n documentContinue,\n checkNewContainers\n )(code)\n } // Done.\n\n return checkNewContainers(code)\n }\n /** @type {State} */\n\n function documentContinue(code) {\n continued++ // Note: this field is called `_closeFlow` but it also closes containers.\n // Perhaps a good idea to rename it but it’s already used in the wild by\n // extensions.\n\n if (self.containerState._closeFlow) {\n self.containerState._closeFlow = undefined\n\n if (childFlow) {\n closeFlow()\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when dealing with lazy lines in `writeToChild`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {Point|undefined} */\n\n let point // Find the flow chunk.\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n let index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n return checkNewContainers(code)\n }\n\n return start(code)\n }\n /** @type {State} */\n\n function checkNewContainers(code) {\n // Next, after consuming the continuation markers for existing blocks, we\n // look for new block starts (e.g. `>` for a block quote).\n // If we encounter a new block start, we close any blocks unmatched in\n // step 1 before creating the new block as a child of the last matched\n // block.\n if (continued === stack.length) {\n // No need to `check` whether there’s a container, of `exitContainers`\n // would be moot.\n // We can instead immediately `attempt` to parse one.\n if (!childFlow) {\n return documentContinued(code)\n } // If we have concrete content, such as block HTML or fenced code,\n // we can’t have containers “pierce†into them, so we can immediately\n // start.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n return flowStart(code)\n } // If we do have flow, it could still be a blank line,\n // but we’d be interrupting it w/ a new container if there’s a current\n // construct.\n\n self.interrupt = Boolean(\n childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack\n )\n } // Check if there is a new container.\n\n self.containerState = {}\n return effects.check(\n containerConstruct,\n thereIsANewContainer,\n thereIsNoNewContainer\n )(code)\n }\n /** @type {State} */\n\n function thereIsANewContainer(code) {\n if (childFlow) closeFlow()\n exitContainers(continued)\n return documentContinued(code)\n }\n /** @type {State} */\n\n function thereIsNoNewContainer(code) {\n self.parser.lazy[self.now().line] = continued !== stack.length\n lineStartOffset = self.now().offset\n return flowStart(code)\n }\n /** @type {State} */\n\n function documentContinued(code) {\n // Try new containers.\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n /** @type {State} */\n\n function containerContinue(code) {\n continued++\n stack.push([self.currentConstruct, self.containerState]) // Try another.\n\n return documentContinued(code)\n }\n /** @type {State} */\n\n function flowStart(code) {\n if (code === null) {\n if (childFlow) closeFlow()\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n /** @type {State} */\n\n function flowContinue(code) {\n if (code === null) {\n writeToChild(effects.exit('chunkFlow'), true)\n exitContainers(0)\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n writeToChild(effects.exit('chunkFlow')) // Get ready for the next line.\n\n continued = 0\n self.interrupt = undefined\n return start\n }\n\n effects.consume(code)\n return flowContinue\n }\n /**\n * @param {Token} token\n * @param {boolean} [eof]\n * @returns {void}\n */\n\n function writeToChild(token, eof) {\n const stream = self.sliceStream(token)\n if (eof) stream.push(null)\n token.previous = childToken\n if (childToken) childToken.next = token\n childToken = token\n childFlow.defineSkip(token.start)\n childFlow.write(stream) // Alright, so we just added a lazy line:\n //\n // ```markdown\n // > a\n // b.\n //\n // Or:\n //\n // > ~~~c\n // d\n //\n // Or:\n //\n // > | e |\n // f\n // ```\n //\n // The construct in the second example (fenced code) does not accept lazy\n // lines, so it marked itself as done at the end of its first line, and\n // then the content construct parses `d`.\n // Most constructs in markdown match on the first line: if the first line\n // forms a construct, a non-lazy line can’t “unmake†it.\n //\n // The construct in the third example is potentially a GFM table, and\n // those are *weird*.\n // It *could* be a table, from the first line, if the following line\n // matches a condition.\n // In this case, that second line is lazy, which “unmakes†the first line\n // and turns the whole into one content block.\n //\n // We’ve now parsed the non-lazy and the lazy line, and can figure out\n // whether the lazy line started a new flow block.\n // If it did, we exit the current containers between the two flow blocks.\n\n if (self.parser.lazy[token.start.line]) {\n let index = childFlow.events.length\n\n while (index--) {\n if (\n // The token starts before the line ending…\n childFlow.events[index][1].start.offset < lineStartOffset && // …and either is not ended yet…\n (!childFlow.events[index][1].end || // …or ends after it.\n childFlow.events[index][1].end.offset > lineStartOffset)\n ) {\n // Exit: there’s still something open, which means it’s a lazy line\n // part of something.\n return\n }\n } // Note: this algorithm for moving events around is similar to the\n // algorithm when closing flow in `documentContinue`.\n\n const indexBeforeExits = self.events.length\n let indexBeforeFlow = indexBeforeExits\n /** @type {boolean|undefined} */\n\n let seen\n /** @type {Point|undefined} */\n\n let point // Find the previous chunk (the one before the lazy line).\n\n while (indexBeforeFlow--) {\n if (\n self.events[indexBeforeFlow][0] === 'exit' &&\n self.events[indexBeforeFlow][1].type === 'chunkFlow'\n ) {\n if (seen) {\n point = self.events[indexBeforeFlow][1].end\n break\n }\n\n seen = true\n }\n }\n\n exitContainers(continued) // Fix positions.\n\n index = indexBeforeExits\n\n while (index < self.events.length) {\n self.events[index][1].end = Object.assign({}, point)\n index++\n } // Inject the exits earlier (they’re still also at the end).\n\n splice(\n self.events,\n indexBeforeFlow + 1,\n 0,\n self.events.slice(indexBeforeExits)\n ) // Discard the duplicate exits.\n\n self.events.length = index\n }\n }\n /**\n * @param {number} size\n * @returns {void}\n */\n\n function exitContainers(size) {\n let index = stack.length // Exit open containers.\n\n while (index-- > size) {\n const entry = stack[index]\n self.containerState = entry[1]\n entry[0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function closeFlow() {\n childFlow.write([null])\n childToken = undefined\n childFlow = undefined\n self.containerState._closeFlow = undefined\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blankLine = {\n tokenize: tokenizeBlankLine,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n /** @type {State} */\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {splice} from 'micromark-util-chunked'\n\n/**\n * Tokenize subcontent.\n *\n * @param {Event[]} events\n * @returns {boolean}\n */\nexport function subtokenize(events) {\n /** @type {Record<string, number>} */\n const jumps = {}\n let index = -1\n /** @type {Event} */\n\n let event\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number} */\n\n let otherIndex\n /** @type {Event} */\n\n let otherEvent\n /** @type {Event[]} */\n\n let parameters\n /** @type {Event[]} */\n\n let subevents\n /** @type {boolean|undefined} */\n\n let more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1]._isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n Object.assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = Object.assign({}, events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n splice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n/**\n * Tokenize embedded tokens.\n *\n * @param {Event[]} events\n * @param {number} eventIndex\n * @returns {Record<string, number>}\n */\n\nfunction subcontent(events, eventIndex) {\n const token = events[eventIndex][1]\n const context = events[eventIndex][2]\n let startPosition = eventIndex - 1\n /** @type {number[]} */\n\n const startPositions = []\n const tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n const childEvents = tokenizer.events\n /** @type {[number, number][]} */\n\n const jumps = []\n /** @type {Record<string, number>} */\n\n const gaps = {}\n /** @type {Chunk[]} */\n\n let stream\n /** @type {Token|undefined} */\n\n let previous\n let index = -1\n /** @type {Token|undefined} */\n\n let current = token\n let adjust = 0\n let start = 0\n const breaks = [start] // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (current) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== current) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!current._tokenizer) {\n stream = context.sliceStream(current)\n\n if (!current.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(current.start)\n }\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (current._isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = current\n current = current.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n current = token\n\n while (++index < childEvents.length) {\n if (\n // Find a void token that includes a break.\n childEvents[index][0] === 'exit' &&\n childEvents[index - 1][0] === 'enter' &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n start = index + 1\n breaks.push(start) // Help GC.\n\n current._tokenizer = undefined\n current.previous = undefined\n current = current.next\n }\n } // Help GC.\n\n tokenizer.events = [] // If there’s one more token (which is the cases for lines that end in an\n // EOF), that’s perfect: the last point we found starts it.\n // If there isn’t then make sure any remaining content is added to it.\n\n if (current) {\n // Help GC.\n current._tokenizer = undefined\n current.previous = undefined\n } else {\n breaks.pop()\n } // Now splice the events from the subtokenizer into the current events,\n // moving back to front so that splice indices aren’t affected.\n\n index = breaks.length\n\n while (index--) {\n const slice = childEvents.slice(breaks[index], breaks[index + 1])\n const start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n splice(events, start, 2, slice)\n }\n\n index = -1\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {subtokenize} from 'micromark-util-subtokenize'\n\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n tokenize: tokenizeContent,\n resolve: resolveContent\n}\n/** @type {Construct} */\n\nconst continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\n}\n/**\n * Content is transparent: it’s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\n\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContent(effects, ok) {\n /** @type {Token} */\n let previous\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous\n })\n previous = previous.next\n return data\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeContinuation(effects, ok, nok) {\n const self = this\n return startLookahead\n /** @type {State} */\n\n function startLookahead(code) {\n effects.exit('chunkContent')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n /** @type {State} */\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n const tail = self.events[self.events.length - 1]\n\n if (\n !self.parser.constructs.disable.null.includes('codeIndented') &&\n tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ) {\n return ok(code)\n }\n\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {blankLine, content} from 'micromark-core-commonmark'\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {InitialConstruct} */\nexport const flow = {\n tokenize: initializeFlow\n}\n/** @type {Initializer} */\n\nfunction initializeFlow(effects) {\n const self = this\n const initial = effects.attempt(\n // Try to parse a blank line.\n blankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n /** @type {State} */\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n /** @type {State} */\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Initializer} Initializer\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nexport const resolver = {\n resolveAll: createResolver()\n}\nexport const string = initializeFactory('string')\nexport const text = initializeFactory('text')\n/**\n * @param {'string'|'text'} field\n * @returns {InitialConstruct}\n */\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n /** @type {Initializer} */\n\n function initializeText(effects) {\n const self = this\n const constructs = this.parser.constructs[field]\n const text = effects.attempt(constructs, start, notText)\n return start\n /** @type {State} */\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n /** @type {State} */\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n /** @type {State} */\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n /**\n * @param {Code} code\n * @returns {boolean}\n */\n\n function atBreak(code) {\n if (code === null) {\n return true\n }\n\n const list = constructs[code]\n let index = -1\n\n if (list) {\n while (++index < list.length) {\n const item = list[index]\n\n if (!item.previous || item.previous.call(self, self.previous)) {\n return true\n }\n }\n }\n\n return false\n }\n }\n}\n/**\n * @param {Resolver} [extraResolver]\n * @returns {Resolver}\n */\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n /** @type {Resolver} */\n\n function resolveAllText(events, context) {\n let index = -1\n /** @type {number|undefined} */\n\n let enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n}\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can’t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\n\nfunction resolveAllLineSuffixes(events, context) {\n let eventIndex = 0 // Skip first.\n\n while (++eventIndex <= events.length) {\n if (\n (eventIndex === events.length ||\n events[eventIndex][1].type === 'lineEnding') &&\n events[eventIndex - 1][1].type === 'data'\n ) {\n const data = events[eventIndex - 1][1]\n const chunks = context.sliceStream(data)\n let index = chunks.length\n let bufferIndex = -1\n let size = 0\n /** @type {boolean|undefined} */\n\n let tabs\n\n while (index--) {\n const chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1) {\n // Empty\n } else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n const token = {\n type:\n eventIndex === events.length || tabs || size < 2\n ? 'lineSuffix'\n : 'hardBreakTrailing',\n start: {\n line: data.end.line,\n column: data.end.column - size,\n offset: data.end.offset - size,\n _index: data.start._index + index,\n _bufferIndex: index\n ? bufferIndex\n : data.start._bufferIndex + bufferIndex\n },\n end: Object.assign({}, data.end)\n }\n data.end = Object.assign({}, token.start)\n\n if (data.start.offset === data.end.offset) {\n Object.assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Resolver} Resolver\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {{resolveAll?: Resolver}[]} constructs\n * @param {Event[]} events\n * @param {TokenizeContext} context\n * @returns {Event[]}\n */\nexport function resolveAll(constructs, events, context) {\n /** @type {Resolver[]} */\n const called = []\n let index = -1\n\n while (++index < constructs.length) {\n const resolve = constructs[index].resolveAll\n\n if (resolve && !called.includes(resolve)) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Point} Point\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').ConstructRecord} ConstructRecord\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n */\n\n/**\n * @typedef Info\n * @property {() => void} restore\n * @property {number} from\n *\n * @callback ReturnHandle\n * Handle a successful run.\n * @param {Construct} construct\n * @param {Info} info\n * @returns {void}\n */\nimport {markdownLineEnding} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn’t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n * @param {InitialConstruct} initialize\n * @param {Omit<Point, '_index'|'_bufferIndex'>} [from]\n * @returns {TokenizeContext}\n */\nexport function createTokenizer(parser, initialize, from) {\n /** @type {Point} */\n let point = Object.assign(\n from\n ? Object.assign({}, from)\n : {\n line: 1,\n column: 1,\n offset: 0\n },\n {\n _index: 0,\n _bufferIndex: -1\n }\n )\n /** @type {Record<string, number>} */\n\n const columnStart = {}\n /** @type {Construct[]} */\n\n const resolveAllConstructs = []\n /** @type {Chunk[]} */\n\n let chunks = []\n /** @type {Token[]} */\n\n let stack = []\n /** @type {boolean|undefined} */\n\n let consumed = true\n /**\n * Tools used for tokenizing.\n *\n * @type {Effects}\n */\n\n const effects = {\n consume,\n enter,\n exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n })\n }\n /**\n * State and tools for resolving and serializing.\n *\n * @type {TokenizeContext}\n */\n\n const context = {\n previous: null,\n code: null,\n containerState: {},\n events: [],\n parser,\n sliceStream,\n sliceSerialize,\n now,\n defineSkip,\n write\n }\n /**\n * The state function.\n *\n * @type {State|void}\n */\n\n let state = initialize.tokenize.call(context, effects)\n /**\n * Track which character we expect to be consumed, to catch bugs.\n *\n * @type {Code}\n */\n\n let expectedCode\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n }\n\n return context\n /** @type {TokenizeContext['write']} */\n\n function write(slice) {\n chunks = push(chunks, slice)\n main() // Exit if we’re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n /** @type {TokenizeContext['sliceSerialize']} */\n\n function sliceSerialize(token, expandTabs) {\n return serializeChunks(sliceStream(token), expandTabs)\n }\n /** @type {TokenizeContext['sliceStream']} */\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n /** @type {TokenizeContext['now']} */\n\n function now() {\n return Object.assign({}, point)\n }\n /** @type {TokenizeContext['defineSkip']} */\n\n function defineSkip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\n //\n\n /**\n * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n * `consume`).\n * Here is where we walk through the chunks, which either include strings of\n * several characters, or numerical character codes.\n * The reason to do this in a loop instead of a call is so the stack can\n * drain.\n *\n * @returns {void}\n */\n\n function main() {\n /** @type {number} */\n let chunkIndex\n\n while (point._index < chunks.length) {\n const chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n }\n /**\n * Deal with one code.\n *\n * @param {Code} code\n * @returns {void}\n */\n\n function go(code) {\n consumed = undefined\n expectedCode = code\n state = state(code)\n }\n /** @type {Effects['consume']} */\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n // @ts-expect-error Points w/ non-negative `_bufferIndex` reference\n // strings.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n\n consumed = true\n }\n /** @type {Effects['enter']} */\n\n function enter(type, fields) {\n /** @type {Token} */\n // @ts-expect-error Patch instead of assign required fields to help GC.\n const token = fields || {}\n token.type = type\n token.start = now()\n context.events.push(['enter', token, context])\n stack.push(token)\n return token\n }\n /** @type {Effects['exit']} */\n\n function exit(type) {\n const token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n }\n /**\n * Use results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n }\n /**\n * Discard results.\n *\n * @type {ReturnHandle}\n */\n\n function onsuccessfulcheck(_, info) {\n info.restore()\n }\n /**\n * Factory to attempt/check/interrupt.\n *\n * @param {ReturnHandle} onreturn\n * @param {Record<string, unknown>} [fields]\n */\n\n function constructFactory(onreturn, fields) {\n return hook\n /**\n * Handle either an object mapping codes to constructs, a list of\n * constructs, or a single construct.\n *\n * @param {Construct|Construct[]|ConstructRecord} constructs\n * @param {State} returnState\n * @param {State} [bogusState]\n * @returns {State}\n */\n\n function hook(constructs, returnState, bogusState) {\n /** @type {Construct[]} */\n let listOfConstructs\n /** @type {number} */\n\n let constructIndex\n /** @type {Construct} */\n\n let currentConstruct\n /** @type {Info} */\n\n let info\n return Array.isArray(constructs)\n ? /* c8 ignore next 1 */\n handleListOfConstructs(constructs)\n : 'tokenize' in constructs // @ts-expect-error Looks like a construct.\n ? handleListOfConstructs([constructs])\n : handleMapOfConstructs(constructs)\n /**\n * Handle a list of construct.\n *\n * @param {ConstructRecord} map\n * @returns {State}\n */\n\n function handleMapOfConstructs(map) {\n return start\n /** @type {State} */\n\n function start(code) {\n const def = code !== null && map[code]\n const all = code !== null && map.null\n const list = [\n // To do: add more extension tests.\n\n /* c8 ignore next 2 */\n ...(Array.isArray(def) ? def : def ? [def] : []),\n ...(Array.isArray(all) ? all : all ? [all] : [])\n ]\n return handleListOfConstructs(list)(code)\n }\n }\n /**\n * Handle a list of construct.\n *\n * @param {Construct[]} list\n * @returns {State}\n */\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n\n if (list.length === 0) {\n return bogusState\n }\n\n return handleConstruct(list[constructIndex])\n }\n /**\n * Handle a single construct.\n *\n * @param {Construct} construct\n * @returns {State}\n */\n\n function handleConstruct(construct) {\n return start\n /** @type {State} */\n\n function start(code) {\n // To do: not needed to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.includes(construct.name)\n ) {\n return nok(code)\n }\n\n return construct.tokenize.call(\n // If we do have fields, create an object w/ `context` as its\n // prototype.\n // This allows a “live bindingâ€, which is needed for `interrupt`.\n fields ? Object.assign(Object.create(context), fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n /** @type {State} */\n\n function ok(code) {\n consumed = true\n onreturn(currentConstruct, info)\n return returnState\n }\n /** @type {State} */\n\n function nok(code) {\n consumed = true\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n /**\n * @param {Construct} construct\n * @param {number} from\n * @returns {void}\n */\n\n function addResult(construct, from) {\n if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n splice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n /**\n * Store state.\n *\n * @returns {Info}\n */\n\n function store() {\n const startPoint = now()\n const startPrevious = context.previous\n const startCurrentConstruct = context.currentConstruct\n const startEventsIndex = context.events.length\n const startStack = Array.from(stack)\n return {\n restore,\n from: startEventsIndex\n }\n /**\n * Restore state.\n *\n * @returns {void}\n */\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n /**\n * Move the current point a bit forward in the line when it’s on a column\n * skip.\n *\n * @returns {void}\n */\n\n function accountForPotentialSkip() {\n if (point.line in columnStart && point.column < 2) {\n point.column = columnStart[point.line]\n point.offset += columnStart[point.line] - 1\n }\n }\n}\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {Chunk[]} chunks\n * @param {Pick<Token, 'start'|'end'>} token\n * @returns {Chunk[]}\n */\n\nfunction sliceChunks(chunks, token) {\n const startIndex = token.start._index\n const startBufferIndex = token.start._bufferIndex\n const endIndex = token.end._index\n const endBufferIndex = token.end._bufferIndex\n /** @type {Chunk[]} */\n\n let view\n\n if (startIndex === endIndex) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n // @ts-expect-error `_bufferIndex` is used on string chunks.\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {Chunk[]} chunks\n * @param {boolean} [expandTabs=false]\n * @returns {string}\n */\n\nfunction serializeChunks(chunks, expandTabs) {\n let index = -1\n /** @type {string[]} */\n\n const result = []\n /** @type {boolean|undefined} */\n\n let atTab\n\n while (++index < chunks.length) {\n const chunk = chunks[index]\n /** @type {string} */\n\n let value\n\n if (typeof chunk === 'string') {\n value = chunk\n } else\n switch (chunk) {\n case -5: {\n value = '\\r'\n break\n }\n\n case -4: {\n value = '\\n'\n break\n }\n\n case -3: {\n value = '\\r' + '\\n'\n break\n }\n\n case -2: {\n value = expandTabs ? ' ' : '\\t'\n break\n }\n\n case -1: {\n if (!expandTabs && atTab) continue\n value = ' '\n break\n }\n\n default: {\n // Currently only replacement character.\n value = String.fromCharCode(chunk)\n }\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n let size = 0\n /** @type {NonNullable<Code>} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @typedef {Record<string, unknown> & {marker: Code, type: string, size: number}} ListContainerState\n * @typedef {TokenizeContext & {containerState: ListContainerState}} TokenizeContextWithState\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {asciiDigit, markdownSpace} from 'micromark-util-character'\nimport {blankLine} from './blank-line.js'\nimport {thematicBreak} from './thematic-break.js'\n/** @type {Construct} */\n\nexport const list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\n/** @type {Construct} */\n\nconst listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\n/** @type {Construct} */\n\nconst indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListStart(effects, ok, nok) {\n const self = this\n const tail = self.events[self.events.length - 1]\n let initialSize =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n const kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n /**\n * @type {State}\n **/\n\n function atMarker(code) {\n effects.enter('listItemMarker')\n effects.consume(code)\n effects.exit('listItemMarker')\n self.containerState.marker = self.containerState.marker || code\n return effects.check(\n blankLine, // Can’t be empty when interrupting.\n self.interrupt ? nok : onBlank,\n effects.attempt(\n listItemPrefixWhitespaceConstruct,\n endOfPrefix,\n otherPrefix\n )\n )\n }\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n /** @type {State} */\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize +\n self.sliceSerialize(effects.exit('listItemPrefix'), true).length\n return ok(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n const self = this\n self.containerState._closeFlow = undefined\n return effects.check(blankLine, onBlank, notBlank)\n /** @type {State} */\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine // We have a blank line.\n // Still, try to consume at most the items size.\n\n return factorySpace(\n effects,\n ok,\n 'listItemIndent',\n self.containerState.size + 1\n )(code)\n }\n /** @type {State} */\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = undefined\n self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n /** @type {State} */\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n self.interrupt = undefined\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )(code)\n }\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeIndent(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'listItemIndent' &&\n tail[2].sliceSerialize(tail[1], true).length === self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n/**\n * @type {Exiter}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n/**\n * @type {Tokenizer}\n * @this {TokenizeContextWithState}\n */\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n const self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4 + 1\n )\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return !markdownSpace(code) &&\n tail &&\n tail[1].type === 'listItemPrefixWhitespace'\n ? ok(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Exiter} Exiter\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownSpace} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 62) {\n const state = self.containerState\n\n if (!state.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n state.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4\n )\n}\n/** @type {Exiter} */\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiControl,\n markdownLineEndingOrSpace,\n markdownLineEnding\n} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} literalType\n * @param {string} literalMarkerType\n * @param {string} rawType\n * @param {string} stringType\n * @param {number} [max=Infinity]\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryDestination(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n const limit = max || Number.POSITIVE_INFINITY\n let balance = 0\n return start\n /** @type {State} */\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (code === null || code === 41 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n /** @type {State} */\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n /** @type {State} */\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n /** @type {State} */\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n /** @type {State} */\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @this {TokenizeContext}\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n const self = this\n let size = 0\n /** @type {boolean} */\n\n let data\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.enter(stringType)\n return atBreak\n }\n /** @type {State} */\n\n function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n (code === 94 &&\n !size &&\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n /** @type {State} */\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n /** @type {State} */\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n * @param {State} nok\n * @param {string} type\n * @param {string} markerType\n * @param {string} stringType\n * @returns {State}\n */\n// eslint-disable-next-line max-params\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n /** @type {NonNullable<Code>} */\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n /** @type {State} */\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n /** @type {State} */\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can’t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n /** @type {State} */\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n /** @type {State} */\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Effects} Effects\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding, markdownSpace} from 'micromark-util-character'\n\n/**\n * @param {Effects} effects\n * @param {State} ok\n */\nexport function factoryWhitespace(effects, ok) {\n /** @type {boolean} */\n let seen\n return start\n /** @type {State} */\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n","/**\n * Normalize an identifier (such as used in definitions).\n *\n * @param {string} value\n * @returns {string}\n */\nexport function normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercaseâ€, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factorySpace} from 'micromark-factory-space'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\n/** @type {Construct} */\n\nconst titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeDefinition(effects, ok, nok) {\n const self = this\n /** @type {string} */\n\n let identifier\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n /** @type {State} */\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (!self.parser.defined.includes(identifier)) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n /** @type {State} */\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented\n}\n/** @type {Construct} */\n\nconst indentedContent = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeIndented')\n return factorySpace(effects, afterStartPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterStartPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? afterPrefix(code)\n : nok(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContent, afterPrefix, after)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n /** @type {State} */\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeIndented')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n // If this is a lazy line, it can’t be code.\n if (self.parser.lazy[self.now().line]) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return start\n }\n\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)(code)\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n const tail = self.events[self.events.length - 1]\n return tail &&\n tail[1].type === 'linePrefix' &&\n tail[2].sliceSerialize(tail[1], true).length >= 4\n ? ok(code)\n : markdownLineEnding(code)\n ? start(code)\n : nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {splice} from 'micromark-util-chunked'\n\n/** @type {Construct} */\nexport const headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n/** @type {Resolver} */\n\nfunction resolveHeadingAtx(events, context) {\n let contentEnd = events.length - 2\n let contentStart = 3\n /** @type {Token} */\n\n let content\n /** @type {Token} */\n\n let text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n // @ts-expect-error Constants are fine to assign.\n contentType: 'text'\n }\n splice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n const self = this\n let size = 0\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n /** @type {State} */\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n /** @type {State} */\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n/** @type {Resolver} */\n\nfunction resolveToSetextUnderline(events, context) {\n let index = events.length\n /** @type {number|undefined} */\n\n let content\n /** @type {number|undefined} */\n\n let text\n /** @type {number|undefined} */\n\n let definition // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n\n const heading = {\n type: 'setextHeading',\n start: Object.assign({}, events[text][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = Object.assign({}, events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {NonNullable<Code>} */\n\n let marker\n /** @type {boolean} */\n\n let paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result\n * in more relaxed rules (condition 6): because they are known blocks, the\n * HTML-like syntax doesn’t have to be strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n */\nexport const htmlBlockNames = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\n/**\n * List of lowercase HTML tag names which when parsing HTML (flow), result in\n * HTML that can include lines w/o exiting, until a closing tag also in this\n * list is found (condition 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * Note that `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\nimport {htmlBlockNames, htmlRawNames} from 'micromark-util-html-tag-name'\nimport {blankLine} from './blank-line.js'\n/** @type {Construct} */\n\nexport const htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\n/** @type {Construct} */\n\nconst nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n/** @type {Resolver} */\n\nfunction resolveToHtmlFlow(events) {\n let index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n const self = this\n /** @type {number} */\n\n let kind\n /** @type {boolean} */\n\n let startTag\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {Code} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.includes(buffer.toLowerCase())\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.includes(buffer.toLowerCase())) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting\n\n return self.interrupt && !self.parser.lazy[self.now().line]\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n /** @type {State} */\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n /** @type {State} */\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = null\n return completeAttributeValueUnquoted(code)\n }\n /** @type {State} */\n\n function completeAttributeValueQuoted(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n /** @type {State} */\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n /** @type {State} */\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n /** @type {State} */\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n /** @type {State} */\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n /** @type {State} */\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n {\n tokenize: htmlLineEnd,\n partial: true\n },\n htmlContinueStart,\n done\n )(code)\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n /** @type {Tokenizer} */\n\n function htmlLineEnd(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {State} */\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.includes(buffer.toLowerCase())) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += String.fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n } // More dashes.\n\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n /** @type {State} */\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n /** @type {State} */\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(blankLine, ok, nok)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n markdownLineEnding,\n markdownLineEndingOrSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n const self = this\n /** @type {Construct} */\n\n const closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n /** @type {Construct} */\n\n const nonLazyLine = {\n tokenize: tokenizeNonLazyLine,\n partial: true\n }\n const tail = this.events[this.events.length - 1]\n const initialPrefix =\n tail && tail[1].type === 'linePrefix'\n ? tail[2].sliceSerialize(tail[1], true).length\n : 0\n let sizeOpen = 0\n /** @type {NonNullable<Code>} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n /** @type {State} */\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n /** @type {State} */\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n /** @type {State} */\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n /** @type {State} */\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n /** @type {State} */\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n /** @type {State} */\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : contentStart(code)\n }\n /** @type {State} */\n\n function contentStart(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(\n nonLazyLine,\n effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(\n effects,\n contentStart,\n 'linePrefix',\n initialPrefix + 1\n )\n : contentStart\n ),\n after\n )(code)\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n /** @type {State} */\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return contentStart(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n /** @type {State} */\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n /** @type {Tokenizer} */\n\n function tokenizeNonLazyLine(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return lineStart\n }\n /** @type {State} */\n\n function lineStart(code) {\n return self.parser.lazy[self.now().line] ? nok(code) : ok(code)\n }\n }\n /** @type {Tokenizer} */\n\n function tokenizeClosingFence(effects, ok, nok) {\n let size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n /** @type {State} */\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n /** @type {State} */\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n /** @type {State} */\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n","/**\n * Map of named character references.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntities = {\n AElig: 'Æ',\n AMP: '&',\n Aacute: 'Ã',\n Abreve: 'Ä‚',\n Acirc: 'Â',\n Acy: 'Ð',\n Afr: 'ð”„',\n Agrave: 'À',\n Alpha: 'Α',\n Amacr: 'Ä€',\n And: 'â©“',\n Aogon: 'Ä„',\n Aopf: 'ð”¸',\n ApplyFunction: 'â¡',\n Aring: 'Ã…',\n Ascr: 'ð’œ',\n Assign: '≔',\n Atilde: 'Ã',\n Auml: 'Ä',\n Backslash: '∖',\n Barv: '⫧',\n Barwed: '⌆',\n Bcy: 'Б',\n Because: '∵',\n Bernoullis: 'ℬ',\n Beta: 'Î’',\n Bfr: 'ð”…',\n Bopf: 'ð”¹',\n Breve: '˘',\n Bscr: 'ℬ',\n Bumpeq: '≎',\n CHcy: 'Ч',\n COPY: '©',\n Cacute: 'Ć',\n Cap: 'â‹’',\n CapitalDifferentialD: 'â……',\n Cayleys: 'â„',\n Ccaron: 'ÄŒ',\n Ccedil: 'Ç',\n Ccirc: 'Ĉ',\n Cconint: '∰',\n Cdot: 'ÄŠ',\n Cedilla: '¸',\n CenterDot: '·',\n Cfr: 'â„',\n Chi: 'Χ',\n CircleDot: '⊙',\n CircleMinus: '⊖',\n CirclePlus: '⊕',\n CircleTimes: '⊗',\n ClockwiseContourIntegral: '∲',\n CloseCurlyDoubleQuote: 'â€',\n CloseCurlyQuote: '’',\n Colon: '∷',\n Colone: 'â©´',\n Congruent: '≡',\n Conint: '∯',\n ContourIntegral: '∮',\n Copf: 'â„‚',\n Coproduct: 'âˆ',\n CounterClockwiseContourIntegral: '∳',\n Cross: '⨯',\n Cscr: 'ð’ž',\n Cup: 'â‹“',\n CupCap: 'â‰',\n DD: 'â……',\n DDotrahd: '⤑',\n DJcy: 'Ђ',\n DScy: 'Ð…',\n DZcy: 'Ð',\n Dagger: '‡',\n Darr: '↡',\n Dashv: '⫤',\n Dcaron: 'ÄŽ',\n Dcy: 'Д',\n Del: '∇',\n Delta: 'Δ',\n Dfr: 'ð”‡',\n DiacriticalAcute: '´',\n DiacriticalDot: 'Ë™',\n DiacriticalDoubleAcute: 'Ë',\n DiacriticalGrave: '`',\n DiacriticalTilde: 'Ëœ',\n Diamond: 'â‹„',\n DifferentialD: 'â…†',\n Dopf: 'ð”»',\n Dot: '¨',\n DotDot: '⃜',\n DotEqual: 'â‰',\n DoubleContourIntegral: '∯',\n DoubleDot: '¨',\n DoubleDownArrow: '⇓',\n DoubleLeftArrow: 'â‡',\n DoubleLeftRightArrow: '⇔',\n DoubleLeftTee: '⫤',\n DoubleLongLeftArrow: '⟸',\n DoubleLongLeftRightArrow: '⟺',\n DoubleLongRightArrow: '⟹',\n DoubleRightArrow: '⇒',\n DoubleRightTee: '⊨',\n DoubleUpArrow: '⇑',\n DoubleUpDownArrow: '⇕',\n DoubleVerticalBar: '∥',\n DownArrow: '↓',\n DownArrowBar: '⤓',\n DownArrowUpArrow: '⇵',\n DownBreve: 'Ì‘',\n DownLeftRightVector: 'â¥',\n DownLeftTeeVector: '⥞',\n DownLeftVector: '↽',\n DownLeftVectorBar: '⥖',\n DownRightTeeVector: '⥟',\n DownRightVector: 'â‡',\n DownRightVectorBar: '⥗',\n DownTee: '⊤',\n DownTeeArrow: '↧',\n Downarrow: '⇓',\n Dscr: 'ð’Ÿ',\n Dstrok: 'Ä',\n ENG: 'ÅŠ',\n ETH: 'Ã',\n Eacute: 'É',\n Ecaron: 'Äš',\n Ecirc: 'Ê',\n Ecy: 'Ð',\n Edot: 'Ä–',\n Efr: 'ð”ˆ',\n Egrave: 'È',\n Element: '∈',\n Emacr: 'Ä’',\n EmptySmallSquare: 'â—»',\n EmptyVerySmallSquare: 'â–«',\n Eogon: 'Ę',\n Eopf: 'ð”¼',\n Epsilon: 'Ε',\n Equal: '⩵',\n EqualTilde: '≂',\n Equilibrium: '⇌',\n Escr: 'â„°',\n Esim: '⩳',\n Eta: 'Η',\n Euml: 'Ë',\n Exists: '∃',\n ExponentialE: 'â…‡',\n Fcy: 'Ф',\n Ffr: 'ð”‰',\n FilledSmallSquare: 'â—¼',\n FilledVerySmallSquare: 'â–ª',\n Fopf: 'ð”½',\n ForAll: '∀',\n Fouriertrf: 'ℱ',\n Fscr: 'ℱ',\n GJcy: 'Ѓ',\n GT: '>',\n Gamma: 'Γ',\n Gammad: 'Ïœ',\n Gbreve: 'Äž',\n Gcedil: 'Ä¢',\n Gcirc: 'Äœ',\n Gcy: 'Г',\n Gdot: 'Ä ',\n Gfr: 'ð”Š',\n Gg: 'â‹™',\n Gopf: 'ð”¾',\n GreaterEqual: '≥',\n GreaterEqualLess: 'â‹›',\n GreaterFullEqual: '≧',\n GreaterGreater: '⪢',\n GreaterLess: '≷',\n GreaterSlantEqual: '⩾',\n GreaterTilde: '≳',\n Gscr: 'ð’¢',\n Gt: '≫',\n HARDcy: 'Ъ',\n Hacek: 'ˇ',\n Hat: '^',\n Hcirc: 'Ĥ',\n Hfr: 'â„Œ',\n HilbertSpace: 'â„‹',\n Hopf: 'â„',\n HorizontalLine: '─',\n Hscr: 'â„‹',\n Hstrok: 'Ħ',\n HumpDownHump: '≎',\n HumpEqual: 'â‰',\n IEcy: 'Е',\n IJlig: 'IJ',\n IOcy: 'Ð',\n Iacute: 'Ã',\n Icirc: 'ÃŽ',\n Icy: 'И',\n Idot: 'Ä°',\n Ifr: 'â„‘',\n Igrave: 'ÃŒ',\n Im: 'â„‘',\n Imacr: 'Ī',\n ImaginaryI: 'â…ˆ',\n Implies: '⇒',\n Int: '∬',\n Integral: '∫',\n Intersection: 'â‹‚',\n InvisibleComma: 'â£',\n InvisibleTimes: 'â¢',\n Iogon: 'Ä®',\n Iopf: 'ð•€',\n Iota: 'Ι',\n Iscr: 'â„',\n Itilde: 'Ĩ',\n Iukcy: 'І',\n Iuml: 'Ã',\n Jcirc: 'Ä´',\n Jcy: 'Й',\n Jfr: 'ð”',\n Jopf: 'ð•',\n Jscr: 'ð’¥',\n Jsercy: 'Ј',\n Jukcy: 'Є',\n KHcy: 'Ð¥',\n KJcy: 'ÐŒ',\n Kappa: 'Κ',\n Kcedil: 'Ķ',\n Kcy: 'К',\n Kfr: 'ð”Ž',\n Kopf: 'ð•‚',\n Kscr: 'ð’¦',\n LJcy: 'Љ',\n LT: '<',\n Lacute: 'Ĺ',\n Lambda: 'Λ',\n Lang: '⟪',\n Laplacetrf: 'â„’',\n Larr: '↞',\n Lcaron: 'Ľ',\n Lcedil: 'Ä»',\n Lcy: 'Л',\n LeftAngleBracket: '⟨',\n LeftArrow: 'â†',\n LeftArrowBar: '⇤',\n LeftArrowRightArrow: '⇆',\n LeftCeiling: '⌈',\n LeftDoubleBracket: '⟦',\n LeftDownTeeVector: '⥡',\n LeftDownVector: '⇃',\n LeftDownVectorBar: '⥙',\n LeftFloor: '⌊',\n LeftRightArrow: '↔',\n LeftRightVector: '⥎',\n LeftTee: '⊣',\n LeftTeeArrow: '↤',\n LeftTeeVector: '⥚',\n LeftTriangle: '⊲',\n LeftTriangleBar: 'â§',\n LeftTriangleEqual: '⊴',\n LeftUpDownVector: '⥑',\n LeftUpTeeVector: '⥠',\n LeftUpVector: '↿',\n LeftUpVectorBar: '⥘',\n LeftVector: '↼',\n LeftVectorBar: '⥒',\n Leftarrow: 'â‡',\n Leftrightarrow: '⇔',\n LessEqualGreater: 'â‹š',\n LessFullEqual: '≦',\n LessGreater: '≶',\n LessLess: '⪡',\n LessSlantEqual: '⩽',\n LessTilde: '≲',\n Lfr: 'ð”',\n Ll: '⋘',\n Lleftarrow: '⇚',\n Lmidot: 'Ä¿',\n LongLeftArrow: '⟵',\n LongLeftRightArrow: '⟷',\n LongRightArrow: '⟶',\n Longleftarrow: '⟸',\n Longleftrightarrow: '⟺',\n Longrightarrow: '⟹',\n Lopf: 'ð•ƒ',\n LowerLeftArrow: '↙',\n LowerRightArrow: '↘',\n Lscr: 'â„’',\n Lsh: '↰',\n Lstrok: 'Å',\n Lt: '≪',\n Map: '⤅',\n Mcy: 'Ðœ',\n MediumSpace: 'âŸ',\n Mellintrf: 'ℳ',\n Mfr: 'ð”',\n MinusPlus: '∓',\n Mopf: 'ð•„',\n Mscr: 'ℳ',\n Mu: 'Îœ',\n NJcy: 'Њ',\n Nacute: 'Ń',\n Ncaron: 'Ň',\n Ncedil: 'Å…',\n Ncy: 'Ð',\n NegativeMediumSpace: '​',\n NegativeThickSpace: '​',\n NegativeThinSpace: '​',\n NegativeVeryThinSpace: '​',\n NestedGreaterGreater: '≫',\n NestedLessLess: '≪',\n NewLine: '\\n',\n Nfr: 'ð”‘',\n NoBreak: 'â ',\n NonBreakingSpace: ' ',\n Nopf: 'â„•',\n Not: '⫬',\n NotCongruent: '≢',\n NotCupCap: 'â‰',\n NotDoubleVerticalBar: '∦',\n NotElement: '∉',\n NotEqual: '≠',\n NotEqualTilde: '≂̸',\n NotExists: '∄',\n NotGreater: '≯',\n NotGreaterEqual: '≱',\n NotGreaterFullEqual: '≧̸',\n NotGreaterGreater: '≫̸',\n NotGreaterLess: '≹',\n NotGreaterSlantEqual: '⩾̸',\n NotGreaterTilde: '≵',\n NotHumpDownHump: '≎̸',\n NotHumpEqual: 'â‰Ì¸',\n NotLeftTriangle: '⋪',\n NotLeftTriangleBar: 'â§Ì¸',\n NotLeftTriangleEqual: '⋬',\n NotLess: '≮',\n NotLessEqual: '≰',\n NotLessGreater: '≸',\n NotLessLess: '≪̸',\n NotLessSlantEqual: '⩽̸',\n NotLessTilde: '≴',\n NotNestedGreaterGreater: '⪢̸',\n NotNestedLessLess: '⪡̸',\n NotPrecedes: '⊀',\n NotPrecedesEqual: '⪯̸',\n NotPrecedesSlantEqual: 'â‹ ',\n NotReverseElement: '∌',\n NotRightTriangle: 'â‹«',\n NotRightTriangleBar: 'â§Ì¸',\n NotRightTriangleEqual: 'â‹',\n NotSquareSubset: 'âŠÌ¸',\n NotSquareSubsetEqual: 'â‹¢',\n NotSquareSuperset: 'âŠÌ¸',\n NotSquareSupersetEqual: 'â‹£',\n NotSubset: '⊂⃒',\n NotSubsetEqual: '⊈',\n NotSucceeds: 'âŠ',\n NotSucceedsEqual: '⪰̸',\n NotSucceedsSlantEqual: 'â‹¡',\n NotSucceedsTilde: '≿̸',\n NotSuperset: '⊃⃒',\n NotSupersetEqual: '⊉',\n NotTilde: 'â‰',\n NotTildeEqual: '≄',\n NotTildeFullEqual: '≇',\n NotTildeTilde: '≉',\n NotVerticalBar: '∤',\n Nscr: 'ð’©',\n Ntilde: 'Ñ',\n Nu: 'Î',\n OElig: 'Å’',\n Oacute: 'Ó',\n Ocirc: 'Ô',\n Ocy: 'О',\n Odblac: 'Å',\n Ofr: 'ð”’',\n Ograve: 'Ã’',\n Omacr: 'ÅŒ',\n Omega: 'Ω',\n Omicron: 'Ο',\n Oopf: 'ð•†',\n OpenCurlyDoubleQuote: '“',\n OpenCurlyQuote: '‘',\n Or: 'â©”',\n Oscr: 'ð’ª',\n Oslash: 'Ø',\n Otilde: 'Õ',\n Otimes: '⨷',\n Ouml: 'Ö',\n OverBar: '‾',\n OverBrace: 'âž',\n OverBracket: '⎴',\n OverParenthesis: 'âœ',\n PartialD: '∂',\n Pcy: 'П',\n Pfr: 'ð”“',\n Phi: 'Φ',\n Pi: 'Î ',\n PlusMinus: '±',\n Poincareplane: 'â„Œ',\n Popf: 'â„™',\n Pr: '⪻',\n Precedes: '≺',\n PrecedesEqual: '⪯',\n PrecedesSlantEqual: '≼',\n PrecedesTilde: '≾',\n Prime: '″',\n Product: 'âˆ',\n Proportion: '∷',\n Proportional: 'âˆ',\n Pscr: 'ð’«',\n Psi: 'Ψ',\n QUOT: '\"',\n Qfr: 'ð””',\n Qopf: 'â„š',\n Qscr: 'ð’¬',\n RBarr: 'â¤',\n REG: '®',\n Racute: 'Å”',\n Rang: '⟫',\n Rarr: '↠',\n Rarrtl: '⤖',\n Rcaron: 'Ř',\n Rcedil: 'Å–',\n Rcy: 'Ð ',\n Re: 'â„œ',\n ReverseElement: '∋',\n ReverseEquilibrium: '⇋',\n ReverseUpEquilibrium: '⥯',\n Rfr: 'â„œ',\n Rho: 'Ρ',\n RightAngleBracket: '⟩',\n RightArrow: '→',\n RightArrowBar: '⇥',\n RightArrowLeftArrow: '⇄',\n RightCeiling: '⌉',\n RightDoubleBracket: '⟧',\n RightDownTeeVector: 'â¥',\n RightDownVector: '⇂',\n RightDownVectorBar: '⥕',\n RightFloor: '⌋',\n RightTee: '⊢',\n RightTeeArrow: '↦',\n RightTeeVector: '⥛',\n RightTriangle: '⊳',\n RightTriangleBar: 'â§',\n RightTriangleEqual: '⊵',\n RightUpDownVector: 'â¥',\n RightUpTeeVector: '⥜',\n RightUpVector: '↾',\n RightUpVectorBar: '⥔',\n RightVector: '⇀',\n RightVectorBar: '⥓',\n Rightarrow: '⇒',\n Ropf: 'â„',\n RoundImplies: '⥰',\n Rrightarrow: '⇛',\n Rscr: 'â„›',\n Rsh: '↱',\n RuleDelayed: '⧴',\n SHCHcy: 'Щ',\n SHcy: 'Ш',\n SOFTcy: 'Ь',\n Sacute: 'Åš',\n Sc: '⪼',\n Scaron: 'Å ',\n Scedil: 'Åž',\n Scirc: 'Åœ',\n Scy: 'С',\n Sfr: 'ð”–',\n ShortDownArrow: '↓',\n ShortLeftArrow: 'â†',\n ShortRightArrow: '→',\n ShortUpArrow: '↑',\n Sigma: 'Σ',\n SmallCircle: '∘',\n Sopf: 'ð•Š',\n Sqrt: '√',\n Square: 'â–¡',\n SquareIntersection: '⊓',\n SquareSubset: 'âŠ',\n SquareSubsetEqual: '⊑',\n SquareSuperset: 'âŠ',\n SquareSupersetEqual: '⊒',\n SquareUnion: '⊔',\n Sscr: 'ð’®',\n Star: '⋆',\n Sub: 'â‹',\n Subset: 'â‹',\n SubsetEqual: '⊆',\n Succeeds: '≻',\n SucceedsEqual: '⪰',\n SucceedsSlantEqual: '≽',\n SucceedsTilde: '≿',\n SuchThat: '∋',\n Sum: '∑',\n Sup: 'â‹‘',\n Superset: '⊃',\n SupersetEqual: '⊇',\n Supset: 'â‹‘',\n THORN: 'Þ',\n TRADE: 'â„¢',\n TSHcy: 'Ћ',\n TScy: 'Ц',\n Tab: '\\t',\n Tau: 'Τ',\n Tcaron: 'Ť',\n Tcedil: 'Å¢',\n Tcy: 'Т',\n Tfr: 'ð”—',\n Therefore: '∴',\n Theta: 'Θ',\n ThickSpace: 'âŸâ€Š',\n ThinSpace: ' ',\n Tilde: '∼',\n TildeEqual: '≃',\n TildeFullEqual: '≅',\n TildeTilde: '≈',\n Topf: 'ð•‹',\n TripleDot: '⃛',\n Tscr: 'ð’¯',\n Tstrok: 'Ŧ',\n Uacute: 'Ú',\n Uarr: '↟',\n Uarrocir: '⥉',\n Ubrcy: 'ÐŽ',\n Ubreve: 'Ŭ',\n Ucirc: 'Û',\n Ucy: 'У',\n Udblac: 'Å°',\n Ufr: 'ð”˜',\n Ugrave: 'Ù',\n Umacr: 'Ū',\n UnderBar: '_',\n UnderBrace: 'âŸ',\n UnderBracket: '⎵',\n UnderParenthesis: 'â',\n Union: '⋃',\n UnionPlus: '⊎',\n Uogon: 'Ų',\n Uopf: 'ð•Œ',\n UpArrow: '↑',\n UpArrowBar: '⤒',\n UpArrowDownArrow: '⇅',\n UpDownArrow: '↕',\n UpEquilibrium: '⥮',\n UpTee: '⊥',\n UpTeeArrow: '↥',\n Uparrow: '⇑',\n Updownarrow: '⇕',\n UpperLeftArrow: '↖',\n UpperRightArrow: '↗',\n Upsi: 'Ï’',\n Upsilon: 'Î¥',\n Uring: 'Å®',\n Uscr: 'ð’°',\n Utilde: 'Ũ',\n Uuml: 'Ãœ',\n VDash: '⊫',\n Vbar: 'â««',\n Vcy: 'Ð’',\n Vdash: '⊩',\n Vdashl: '⫦',\n Vee: 'â‹',\n Verbar: '‖',\n Vert: '‖',\n VerticalBar: '∣',\n VerticalLine: '|',\n VerticalSeparator: 'â˜',\n VerticalTilde: '≀',\n VeryThinSpace: ' ',\n Vfr: 'ð”™',\n Vopf: 'ð•',\n Vscr: 'ð’±',\n Vvdash: '⊪',\n Wcirc: 'Å´',\n Wedge: 'â‹€',\n Wfr: 'ð”š',\n Wopf: 'ð•Ž',\n Wscr: 'ð’²',\n Xfr: 'ð”›',\n Xi: 'Ξ',\n Xopf: 'ð•',\n Xscr: 'ð’³',\n YAcy: 'Я',\n YIcy: 'Ї',\n YUcy: 'Ю',\n Yacute: 'Ã',\n Ycirc: 'Ŷ',\n Ycy: 'Ы',\n Yfr: 'ð”œ',\n Yopf: 'ð•',\n Yscr: 'ð’´',\n Yuml: 'Ÿ',\n ZHcy: 'Ж',\n Zacute: 'Ź',\n Zcaron: 'Ž',\n Zcy: 'З',\n Zdot: 'Å»',\n ZeroWidthSpace: '​',\n Zeta: 'Ζ',\n Zfr: 'ℨ',\n Zopf: 'ℤ',\n Zscr: 'ð’µ',\n aacute: 'á',\n abreve: 'ă',\n ac: '∾',\n acE: '∾̳',\n acd: '∿',\n acirc: 'â',\n acute: '´',\n acy: 'а',\n aelig: 'æ',\n af: 'â¡',\n afr: 'ð”ž',\n agrave: 'à ',\n alefsym: 'ℵ',\n aleph: 'ℵ',\n alpha: 'α',\n amacr: 'Ä',\n amalg: '⨿',\n amp: '&',\n and: '∧',\n andand: 'â©•',\n andd: 'â©œ',\n andslope: '⩘',\n andv: 'â©š',\n ang: '∠',\n ange: '⦤',\n angle: '∠',\n angmsd: '∡',\n angmsdaa: '⦨',\n angmsdab: '⦩',\n angmsdac: '⦪',\n angmsdad: '⦫',\n angmsdae: '⦬',\n angmsdaf: 'â¦',\n angmsdag: '⦮',\n angmsdah: '⦯',\n angrt: '∟',\n angrtvb: '⊾',\n angrtvbd: 'â¦',\n angsph: '∢',\n angst: 'Ã…',\n angzarr: 'â¼',\n aogon: 'Ä…',\n aopf: 'ð•’',\n ap: '≈',\n apE: 'â©°',\n apacir: '⩯',\n ape: '≊',\n apid: '≋',\n apos: \"'\",\n approx: '≈',\n approxeq: '≊',\n aring: 'Ã¥',\n ascr: 'ð’¶',\n ast: '*',\n asymp: '≈',\n asympeq: 'â‰',\n atilde: 'ã',\n auml: 'ä',\n awconint: '∳',\n awint: '⨑',\n bNot: 'â«',\n backcong: '≌',\n backepsilon: '϶',\n backprime: '‵',\n backsim: '∽',\n backsimeq: 'â‹',\n barvee: '⊽',\n barwed: '⌅',\n barwedge: '⌅',\n bbrk: '⎵',\n bbrktbrk: '⎶',\n bcong: '≌',\n bcy: 'б',\n bdquo: '„',\n becaus: '∵',\n because: '∵',\n bemptyv: '⦰',\n bepsi: '϶',\n bernou: 'ℬ',\n beta: 'β',\n beth: 'ℶ',\n between: '≬',\n bfr: 'ð”Ÿ',\n bigcap: 'â‹‚',\n bigcirc: 'â—¯',\n bigcup: '⋃',\n bigodot: '⨀',\n bigoplus: 'â¨',\n bigotimes: '⨂',\n bigsqcup: '⨆',\n bigstar: '★',\n bigtriangledown: 'â–½',\n bigtriangleup: 'â–³',\n biguplus: '⨄',\n bigvee: 'â‹',\n bigwedge: 'â‹€',\n bkarow: 'â¤',\n blacklozenge: '⧫',\n blacksquare: 'â–ª',\n blacktriangle: 'â–´',\n blacktriangledown: 'â–¾',\n blacktriangleleft: 'â—‚',\n blacktriangleright: 'â–¸',\n blank: 'â£',\n blk12: 'â–’',\n blk14: 'â–‘',\n blk34: 'â–“',\n block: 'â–ˆ',\n bne: '=⃥',\n bnequiv: '≡⃥',\n bnot: 'âŒ',\n bopf: 'ð•“',\n bot: '⊥',\n bottom: '⊥',\n bowtie: '⋈',\n boxDL: 'â•—',\n boxDR: 'â•”',\n boxDl: 'â•–',\n boxDr: 'â•“',\n boxH: 'â•',\n boxHD: '╦',\n boxHU: 'â•©',\n boxHd: '╤',\n boxHu: '╧',\n boxUL: 'â•',\n boxUR: 'â•š',\n boxUl: 'â•œ',\n boxUr: 'â•™',\n boxV: 'â•‘',\n boxVH: '╬',\n boxVL: 'â•£',\n boxVR: 'â• ',\n boxVh: 'â•«',\n boxVl: 'â•¢',\n boxVr: 'â•Ÿ',\n boxbox: '⧉',\n boxdL: 'â••',\n boxdR: 'â•’',\n boxdl: 'â”',\n boxdr: '┌',\n boxh: '─',\n boxhD: 'â•¥',\n boxhU: '╨',\n boxhd: '┬',\n boxhu: 'â”´',\n boxminus: '⊟',\n boxplus: '⊞',\n boxtimes: '⊠',\n boxuL: 'â•›',\n boxuR: '╘',\n boxul: '┘',\n boxur: 'â””',\n boxv: '│',\n boxvH: '╪',\n boxvL: 'â•¡',\n boxvR: 'â•ž',\n boxvh: '┼',\n boxvl: '┤',\n boxvr: '├',\n bprime: '‵',\n breve: '˘',\n brvbar: '¦',\n bscr: 'ð’·',\n bsemi: 'â',\n bsim: '∽',\n bsime: 'â‹',\n bsol: '\\\\',\n bsolb: '⧅',\n bsolhsub: '⟈',\n bull: '•',\n bullet: '•',\n bump: '≎',\n bumpE: '⪮',\n bumpe: 'â‰',\n bumpeq: 'â‰',\n cacute: 'ć',\n cap: '∩',\n capand: 'â©„',\n capbrcup: '⩉',\n capcap: 'â©‹',\n capcup: '⩇',\n capdot: 'â©€',\n caps: '∩︀',\n caret: 'â',\n caron: 'ˇ',\n ccaps: 'â©',\n ccaron: 'Ä',\n ccedil: 'ç',\n ccirc: 'ĉ',\n ccups: 'â©Œ',\n ccupssm: 'â©',\n cdot: 'Ä‹',\n cedil: '¸',\n cemptyv: '⦲',\n cent: '¢',\n centerdot: '·',\n cfr: 'ð” ',\n chcy: 'ч',\n check: '✓',\n checkmark: '✓',\n chi: 'χ',\n cir: 'â—‹',\n cirE: '⧃',\n circ: 'ˆ',\n circeq: '≗',\n circlearrowleft: '↺',\n circlearrowright: '↻',\n circledR: '®',\n circledS: 'Ⓢ',\n circledast: '⊛',\n circledcirc: '⊚',\n circleddash: 'âŠ',\n cire: '≗',\n cirfnint: 'â¨',\n cirmid: '⫯',\n cirscir: '⧂',\n clubs: '♣',\n clubsuit: '♣',\n colon: ':',\n colone: '≔',\n coloneq: '≔',\n comma: ',',\n commat: '@',\n comp: 'âˆ',\n compfn: '∘',\n complement: 'âˆ',\n complexes: 'â„‚',\n cong: '≅',\n congdot: 'â©',\n conint: '∮',\n copf: 'ð•”',\n coprod: 'âˆ',\n copy: '©',\n copysr: 'â„—',\n crarr: '↵',\n cross: '✗',\n cscr: 'ð’¸',\n csub: 'â«',\n csube: 'â«‘',\n csup: 'â«',\n csupe: 'â«’',\n ctdot: '⋯',\n cudarrl: '⤸',\n cudarrr: '⤵',\n cuepr: 'â‹ž',\n cuesc: 'â‹Ÿ',\n cularr: '↶',\n cularrp: '⤽',\n cup: '∪',\n cupbrcap: '⩈',\n cupcap: '⩆',\n cupcup: 'â©Š',\n cupdot: 'âŠ',\n cupor: 'â©…',\n cups: '∪︀',\n curarr: '↷',\n curarrm: '⤼',\n curlyeqprec: 'â‹ž',\n curlyeqsucc: 'â‹Ÿ',\n curlyvee: 'â‹Ž',\n curlywedge: 'â‹',\n curren: '¤',\n curvearrowleft: '↶',\n curvearrowright: '↷',\n cuvee: 'â‹Ž',\n cuwed: 'â‹',\n cwconint: '∲',\n cwint: '∱',\n cylcty: 'âŒ',\n dArr: '⇓',\n dHar: '⥥',\n dagger: '†',\n daleth: 'ℸ',\n darr: '↓',\n dash: 'â€',\n dashv: '⊣',\n dbkarow: 'â¤',\n dblac: 'Ë',\n dcaron: 'Ä',\n dcy: 'д',\n dd: 'â…†',\n ddagger: '‡',\n ddarr: '⇊',\n ddotseq: 'â©·',\n deg: '°',\n delta: 'δ',\n demptyv: '⦱',\n dfisht: '⥿',\n dfr: 'ð”¡',\n dharl: '⇃',\n dharr: '⇂',\n diam: 'â‹„',\n diamond: 'â‹„',\n diamondsuit: '♦',\n diams: '♦',\n die: '¨',\n digamma: 'Ï',\n disin: '⋲',\n div: '÷',\n divide: '÷',\n divideontimes: '⋇',\n divonx: '⋇',\n djcy: 'Ñ’',\n dlcorn: '⌞',\n dlcrop: 'âŒ',\n dollar: '$',\n dopf: 'ð••',\n dot: 'Ë™',\n doteq: 'â‰',\n doteqdot: '≑',\n dotminus: '∸',\n dotplus: '∔',\n dotsquare: '⊡',\n doublebarwedge: '⌆',\n downarrow: '↓',\n downdownarrows: '⇊',\n downharpoonleft: '⇃',\n downharpoonright: '⇂',\n drbkarow: 'â¤',\n drcorn: '⌟',\n drcrop: '⌌',\n dscr: 'ð’¹',\n dscy: 'Ñ•',\n dsol: '⧶',\n dstrok: 'Ä‘',\n dtdot: '⋱',\n dtri: 'â–¿',\n dtrif: 'â–¾',\n duarr: '⇵',\n duhar: '⥯',\n dwangle: '⦦',\n dzcy: 'ÑŸ',\n dzigrarr: '⟿',\n eDDot: 'â©·',\n eDot: '≑',\n eacute: 'é',\n easter: 'â©®',\n ecaron: 'Ä›',\n ecir: '≖',\n ecirc: 'ê',\n ecolon: '≕',\n ecy: 'Ñ',\n edot: 'Ä—',\n ee: 'â…‡',\n efDot: '≒',\n efr: 'ð”¢',\n eg: '⪚',\n egrave: 'è',\n egs: '⪖',\n egsdot: '⪘',\n el: '⪙',\n elinters: 'â§',\n ell: 'â„“',\n els: '⪕',\n elsdot: '⪗',\n emacr: 'Ä“',\n empty: '∅',\n emptyset: '∅',\n emptyv: '∅',\n emsp13: ' ',\n emsp14: ' ',\n emsp: ' ',\n eng: 'Å‹',\n ensp: ' ',\n eogon: 'Ä™',\n eopf: 'ð•–',\n epar: 'â‹•',\n eparsl: '⧣',\n eplus: '⩱',\n epsi: 'ε',\n epsilon: 'ε',\n epsiv: 'ϵ',\n eqcirc: '≖',\n eqcolon: '≕',\n eqsim: '≂',\n eqslantgtr: '⪖',\n eqslantless: '⪕',\n equals: '=',\n equest: '≟',\n equiv: '≡',\n equivDD: '⩸',\n eqvparsl: '⧥',\n erDot: '≓',\n erarr: '⥱',\n escr: 'ℯ',\n esdot: 'â‰',\n esim: '≂',\n eta: 'η',\n eth: 'ð',\n euml: 'ë',\n euro: '€',\n excl: '!',\n exist: '∃',\n expectation: 'â„°',\n exponentiale: 'â…‡',\n fallingdotseq: '≒',\n fcy: 'Ñ„',\n female: '♀',\n ffilig: 'ffi',\n fflig: 'ff',\n ffllig: 'ffl',\n ffr: 'ð”£',\n filig: 'ï¬',\n fjlig: 'fj',\n flat: 'â™',\n fllig: 'fl',\n fltns: 'â–±',\n fnof: 'Æ’',\n fopf: 'ð•—',\n forall: '∀',\n fork: 'â‹”',\n forkv: 'â«™',\n fpartint: 'â¨',\n frac12: '½',\n frac13: 'â…“',\n frac14: '¼',\n frac15: 'â…•',\n frac16: 'â…™',\n frac18: 'â…›',\n frac23: 'â…”',\n frac25: 'â…–',\n frac34: '¾',\n frac35: 'â…—',\n frac38: 'â…œ',\n frac45: 'â…˜',\n frac56: 'â…š',\n frac58: 'â…',\n frac78: 'â…ž',\n frasl: 'â„',\n frown: '⌢',\n fscr: 'ð’»',\n gE: '≧',\n gEl: '⪌',\n gacute: 'ǵ',\n gamma: 'γ',\n gammad: 'Ï',\n gap: '⪆',\n gbreve: 'ÄŸ',\n gcirc: 'Ä',\n gcy: 'г',\n gdot: 'Ä¡',\n ge: '≥',\n gel: 'â‹›',\n geq: '≥',\n geqq: '≧',\n geqslant: '⩾',\n ges: '⩾',\n gescc: '⪩',\n gesdot: '⪀',\n gesdoto: '⪂',\n gesdotol: '⪄',\n gesl: '⋛︀',\n gesles: '⪔',\n gfr: 'ð”¤',\n gg: '≫',\n ggg: 'â‹™',\n gimel: 'â„·',\n gjcy: 'Ñ“',\n gl: '≷',\n glE: '⪒',\n gla: '⪥',\n glj: '⪤',\n gnE: '≩',\n gnap: '⪊',\n gnapprox: '⪊',\n gne: '⪈',\n gneq: '⪈',\n gneqq: '≩',\n gnsim: '⋧',\n gopf: 'ð•˜',\n grave: '`',\n gscr: 'â„Š',\n gsim: '≳',\n gsime: '⪎',\n gsiml: 'âª',\n gt: '>',\n gtcc: '⪧',\n gtcir: '⩺',\n gtdot: 'â‹—',\n gtlPar: '⦕',\n gtquest: '⩼',\n gtrapprox: '⪆',\n gtrarr: '⥸',\n gtrdot: 'â‹—',\n gtreqless: 'â‹›',\n gtreqqless: '⪌',\n gtrless: '≷',\n gtrsim: '≳',\n gvertneqq: '≩︀',\n gvnE: '≩︀',\n hArr: '⇔',\n hairsp: ' ',\n half: '½',\n hamilt: 'â„‹',\n hardcy: 'ÑŠ',\n harr: '↔',\n harrcir: '⥈',\n harrw: 'â†',\n hbar: 'â„',\n hcirc: 'Ä¥',\n hearts: '♥',\n heartsuit: '♥',\n hellip: '…',\n hercon: '⊹',\n hfr: 'ð”¥',\n hksearow: '⤥',\n hkswarow: '⤦',\n hoarr: '⇿',\n homtht: '∻',\n hookleftarrow: '↩',\n hookrightarrow: '↪',\n hopf: 'ð•™',\n horbar: '―',\n hscr: 'ð’½',\n hslash: 'â„',\n hstrok: 'ħ',\n hybull: 'âƒ',\n hyphen: 'â€',\n iacute: 'Ã',\n ic: 'â£',\n icirc: 'î',\n icy: 'и',\n iecy: 'е',\n iexcl: '¡',\n iff: '⇔',\n ifr: 'ð”¦',\n igrave: 'ì',\n ii: 'â…ˆ',\n iiiint: '⨌',\n iiint: 'âˆ',\n iinfin: '⧜',\n iiota: 'â„©',\n ijlig: 'ij',\n imacr: 'Ä«',\n image: 'â„‘',\n imagline: 'â„',\n imagpart: 'â„‘',\n imath: 'ı',\n imof: '⊷',\n imped: 'Ƶ',\n in: '∈',\n incare: 'â„…',\n infin: '∞',\n infintie: 'â§',\n inodot: 'ı',\n int: '∫',\n intcal: '⊺',\n integers: 'ℤ',\n intercal: '⊺',\n intlarhk: '⨗',\n intprod: '⨼',\n iocy: 'Ñ‘',\n iogon: 'į',\n iopf: 'ð•š',\n iota: 'ι',\n iprod: '⨼',\n iquest: '¿',\n iscr: 'ð’¾',\n isin: '∈',\n isinE: '⋹',\n isindot: '⋵',\n isins: 'â‹´',\n isinsv: '⋳',\n isinv: '∈',\n it: 'â¢',\n itilde: 'Ä©',\n iukcy: 'Ñ–',\n iuml: 'ï',\n jcirc: 'ĵ',\n jcy: 'й',\n jfr: 'ð”§',\n jmath: 'È·',\n jopf: 'ð•›',\n jscr: 'ð’¿',\n jsercy: 'ј',\n jukcy: 'Ñ”',\n kappa: 'κ',\n kappav: 'Ï°',\n kcedil: 'Ä·',\n kcy: 'к',\n kfr: 'ð”¨',\n kgreen: 'ĸ',\n khcy: 'Ñ…',\n kjcy: 'Ñœ',\n kopf: 'ð•œ',\n kscr: 'ð“€',\n lAarr: '⇚',\n lArr: 'â‡',\n lAtail: '⤛',\n lBarr: '⤎',\n lE: '≦',\n lEg: '⪋',\n lHar: '⥢',\n lacute: 'ĺ',\n laemptyv: '⦴',\n lagran: 'â„’',\n lambda: 'λ',\n lang: '⟨',\n langd: '⦑',\n langle: '⟨',\n lap: '⪅',\n laquo: '«',\n larr: 'â†',\n larrb: '⇤',\n larrbfs: '⤟',\n larrfs: 'â¤',\n larrhk: '↩',\n larrlp: '↫',\n larrpl: '⤹',\n larrsim: '⥳',\n larrtl: '↢',\n lat: '⪫',\n latail: '⤙',\n late: 'âª',\n lates: 'âªï¸€',\n lbarr: '⤌',\n lbbrk: 'â²',\n lbrace: '{',\n lbrack: '[',\n lbrke: '⦋',\n lbrksld: 'â¦',\n lbrkslu: 'â¦',\n lcaron: 'ľ',\n lcedil: 'ļ',\n lceil: '⌈',\n lcub: '{',\n lcy: 'л',\n ldca: '⤶',\n ldquo: '“',\n ldquor: '„',\n ldrdhar: '⥧',\n ldrushar: '⥋',\n ldsh: '↲',\n le: '≤',\n leftarrow: 'â†',\n leftarrowtail: '↢',\n leftharpoondown: '↽',\n leftharpoonup: '↼',\n leftleftarrows: '⇇',\n leftrightarrow: '↔',\n leftrightarrows: '⇆',\n leftrightharpoons: '⇋',\n leftrightsquigarrow: 'â†',\n leftthreetimes: 'â‹‹',\n leg: 'â‹š',\n leq: '≤',\n leqq: '≦',\n leqslant: '⩽',\n les: '⩽',\n lescc: '⪨',\n lesdot: 'â©¿',\n lesdoto: 'âª',\n lesdotor: '⪃',\n lesg: '⋚︀',\n lesges: '⪓',\n lessapprox: '⪅',\n lessdot: 'â‹–',\n lesseqgtr: 'â‹š',\n lesseqqgtr: '⪋',\n lessgtr: '≶',\n lesssim: '≲',\n lfisht: '⥼',\n lfloor: '⌊',\n lfr: 'ð”©',\n lg: '≶',\n lgE: '⪑',\n lhard: '↽',\n lharu: '↼',\n lharul: '⥪',\n lhblk: 'â–„',\n ljcy: 'Ñ™',\n ll: '≪',\n llarr: '⇇',\n llcorner: '⌞',\n llhard: '⥫',\n lltri: 'â—º',\n lmidot: 'Å€',\n lmoust: '⎰',\n lmoustache: '⎰',\n lnE: '≨',\n lnap: '⪉',\n lnapprox: '⪉',\n lne: '⪇',\n lneq: '⪇',\n lneqq: '≨',\n lnsim: '⋦',\n loang: '⟬',\n loarr: '⇽',\n lobrk: '⟦',\n longleftarrow: '⟵',\n longleftrightarrow: '⟷',\n longmapsto: '⟼',\n longrightarrow: '⟶',\n looparrowleft: '↫',\n looparrowright: '↬',\n lopar: '⦅',\n lopf: 'ð•',\n loplus: 'â¨',\n lotimes: '⨴',\n lowast: '∗',\n lowbar: '_',\n loz: 'â—Š',\n lozenge: 'â—Š',\n lozf: '⧫',\n lpar: '(',\n lparlt: '⦓',\n lrarr: '⇆',\n lrcorner: '⌟',\n lrhar: '⇋',\n lrhard: 'â¥',\n lrm: '‎',\n lrtri: '⊿',\n lsaquo: '‹',\n lscr: 'ð“',\n lsh: '↰',\n lsim: '≲',\n lsime: 'âª',\n lsimg: 'âª',\n lsqb: '[',\n lsquo: '‘',\n lsquor: '‚',\n lstrok: 'Å‚',\n lt: '<',\n ltcc: '⪦',\n ltcir: '⩹',\n ltdot: 'â‹–',\n lthree: 'â‹‹',\n ltimes: '⋉',\n ltlarr: '⥶',\n ltquest: 'â©»',\n ltrPar: '⦖',\n ltri: 'â—ƒ',\n ltrie: '⊴',\n ltrif: 'â—‚',\n lurdshar: '⥊',\n luruhar: '⥦',\n lvertneqq: '≨︀',\n lvnE: '≨︀',\n mDDot: '∺',\n macr: '¯',\n male: '♂',\n malt: '✠',\n maltese: '✠',\n map: '↦',\n mapsto: '↦',\n mapstodown: '↧',\n mapstoleft: '↤',\n mapstoup: '↥',\n marker: 'â–®',\n mcomma: '⨩',\n mcy: 'м',\n mdash: '—',\n measuredangle: '∡',\n mfr: 'ð”ª',\n mho: '℧',\n micro: 'µ',\n mid: '∣',\n midast: '*',\n midcir: 'â«°',\n middot: '·',\n minus: '−',\n minusb: '⊟',\n minusd: '∸',\n minusdu: '⨪',\n mlcp: 'â«›',\n mldr: '…',\n mnplus: '∓',\n models: '⊧',\n mopf: 'ð•ž',\n mp: '∓',\n mscr: 'ð“‚',\n mstpos: '∾',\n mu: 'μ',\n multimap: '⊸',\n mumap: '⊸',\n nGg: '⋙̸',\n nGt: '≫⃒',\n nGtv: '≫̸',\n nLeftarrow: 'â‡',\n nLeftrightarrow: '⇎',\n nLl: '⋘̸',\n nLt: '≪⃒',\n nLtv: '≪̸',\n nRightarrow: 'â‡',\n nVDash: '⊯',\n nVdash: '⊮',\n nabla: '∇',\n nacute: 'Å„',\n nang: '∠⃒',\n nap: '≉',\n napE: '⩰̸',\n napid: '≋̸',\n napos: 'ʼn',\n napprox: '≉',\n natur: 'â™®',\n natural: 'â™®',\n naturals: 'â„•',\n nbsp: ' ',\n nbump: '≎̸',\n nbumpe: 'â‰Ì¸',\n ncap: '⩃',\n ncaron: 'ň',\n ncedil: 'ņ',\n ncong: '≇',\n ncongdot: 'â©Ì¸',\n ncup: 'â©‚',\n ncy: 'н',\n ndash: '–',\n ne: '≠',\n neArr: '⇗',\n nearhk: '⤤',\n nearr: '↗',\n nearrow: '↗',\n nedot: 'â‰Ì¸',\n nequiv: '≢',\n nesear: '⤨',\n nesim: '≂̸',\n nexist: '∄',\n nexists: '∄',\n nfr: 'ð”«',\n ngE: '≧̸',\n nge: '≱',\n ngeq: '≱',\n ngeqq: '≧̸',\n ngeqslant: '⩾̸',\n nges: '⩾̸',\n ngsim: '≵',\n ngt: '≯',\n ngtr: '≯',\n nhArr: '⇎',\n nharr: '↮',\n nhpar: '⫲',\n ni: '∋',\n nis: '⋼',\n nisd: '⋺',\n niv: '∋',\n njcy: 'Ñš',\n nlArr: 'â‡',\n nlE: '≦̸',\n nlarr: '↚',\n nldr: '‥',\n nle: '≰',\n nleftarrow: '↚',\n nleftrightarrow: '↮',\n nleq: '≰',\n nleqq: '≦̸',\n nleqslant: '⩽̸',\n nles: '⩽̸',\n nless: '≮',\n nlsim: '≴',\n nlt: '≮',\n nltri: '⋪',\n nltrie: '⋬',\n nmid: '∤',\n nopf: 'ð•Ÿ',\n not: '¬',\n notin: '∉',\n notinE: '⋹̸',\n notindot: '⋵̸',\n notinva: '∉',\n notinvb: 'â‹·',\n notinvc: '⋶',\n notni: '∌',\n notniva: '∌',\n notnivb: '⋾',\n notnivc: '⋽',\n npar: '∦',\n nparallel: '∦',\n nparsl: '⫽⃥',\n npart: '∂̸',\n npolint: '⨔',\n npr: '⊀',\n nprcue: 'â‹ ',\n npre: '⪯̸',\n nprec: '⊀',\n npreceq: '⪯̸',\n nrArr: 'â‡',\n nrarr: '↛',\n nrarrc: '⤳̸',\n nrarrw: 'â†Ì¸',\n nrightarrow: '↛',\n nrtri: 'â‹«',\n nrtrie: 'â‹',\n nsc: 'âŠ',\n nsccue: 'â‹¡',\n nsce: '⪰̸',\n nscr: 'ð“ƒ',\n nshortmid: '∤',\n nshortparallel: '∦',\n nsim: 'â‰',\n nsime: '≄',\n nsimeq: '≄',\n nsmid: '∤',\n nspar: '∦',\n nsqsube: 'â‹¢',\n nsqsupe: 'â‹£',\n nsub: '⊄',\n nsubE: '⫅̸',\n nsube: '⊈',\n nsubset: '⊂⃒',\n nsubseteq: '⊈',\n nsubseteqq: '⫅̸',\n nsucc: 'âŠ',\n nsucceq: '⪰̸',\n nsup: '⊅',\n nsupE: '⫆̸',\n nsupe: '⊉',\n nsupset: '⊃⃒',\n nsupseteq: '⊉',\n nsupseteqq: '⫆̸',\n ntgl: '≹',\n ntilde: 'ñ',\n ntlg: '≸',\n ntriangleleft: '⋪',\n ntrianglelefteq: '⋬',\n ntriangleright: 'â‹«',\n ntrianglerighteq: 'â‹',\n nu: 'ν',\n num: '#',\n numero: 'â„–',\n numsp: ' ',\n nvDash: 'âŠ',\n nvHarr: '⤄',\n nvap: 'â‰âƒ’',\n nvdash: '⊬',\n nvge: '≥⃒',\n nvgt: '>⃒',\n nvinfin: '⧞',\n nvlArr: '⤂',\n nvle: '≤⃒',\n nvlt: '<⃒',\n nvltrie: '⊴⃒',\n nvrArr: '⤃',\n nvrtrie: '⊵⃒',\n nvsim: '∼⃒',\n nwArr: '⇖',\n nwarhk: '⤣',\n nwarr: '↖',\n nwarrow: '↖',\n nwnear: '⤧',\n oS: 'Ⓢ',\n oacute: 'ó',\n oast: '⊛',\n ocir: '⊚',\n ocirc: 'ô',\n ocy: 'о',\n odash: 'âŠ',\n odblac: 'Å‘',\n odiv: '⨸',\n odot: '⊙',\n odsold: '⦼',\n oelig: 'Å“',\n ofcir: '⦿',\n ofr: 'ð”¬',\n ogon: 'Ë›',\n ograve: 'ò',\n ogt: 'â§',\n ohbar: '⦵',\n ohm: 'Ω',\n oint: '∮',\n olarr: '↺',\n olcir: '⦾',\n olcross: '⦻',\n oline: '‾',\n olt: '⧀',\n omacr: 'Å',\n omega: 'ω',\n omicron: 'ο',\n omid: '⦶',\n ominus: '⊖',\n oopf: 'ð• ',\n opar: '⦷',\n operp: '⦹',\n oplus: '⊕',\n or: '∨',\n orarr: '↻',\n ord: 'â©',\n order: 'â„´',\n orderof: 'â„´',\n ordf: 'ª',\n ordm: 'º',\n origof: '⊶',\n oror: 'â©–',\n orslope: 'â©—',\n orv: 'â©›',\n oscr: 'â„´',\n oslash: 'ø',\n osol: '⊘',\n otilde: 'õ',\n otimes: '⊗',\n otimesas: '⨶',\n ouml: 'ö',\n ovbar: '⌽',\n par: '∥',\n para: '¶',\n parallel: '∥',\n parsim: '⫳',\n parsl: '⫽',\n part: '∂',\n pcy: 'п',\n percnt: '%',\n period: '.',\n permil: '‰',\n perp: '⊥',\n pertenk: '‱',\n pfr: 'ð”',\n phi: 'φ',\n phiv: 'Ï•',\n phmmat: 'ℳ',\n phone: '☎',\n pi: 'Ï€',\n pitchfork: 'â‹”',\n piv: 'Ï–',\n planck: 'â„',\n planckh: 'â„Ž',\n plankv: 'â„',\n plus: '+',\n plusacir: '⨣',\n plusb: '⊞',\n pluscir: '⨢',\n plusdo: '∔',\n plusdu: '⨥',\n pluse: '⩲',\n plusmn: '±',\n plussim: '⨦',\n plustwo: '⨧',\n pm: '±',\n pointint: '⨕',\n popf: 'ð•¡',\n pound: '£',\n pr: '≺',\n prE: '⪳',\n prap: '⪷',\n prcue: '≼',\n pre: '⪯',\n prec: '≺',\n precapprox: '⪷',\n preccurlyeq: '≼',\n preceq: '⪯',\n precnapprox: '⪹',\n precneqq: '⪵',\n precnsim: '⋨',\n precsim: '≾',\n prime: '′',\n primes: 'â„™',\n prnE: '⪵',\n prnap: '⪹',\n prnsim: '⋨',\n prod: 'âˆ',\n profalar: '⌮',\n profline: '⌒',\n profsurf: '⌓',\n prop: 'âˆ',\n propto: 'âˆ',\n prsim: '≾',\n prurel: '⊰',\n pscr: 'ð“…',\n psi: 'ψ',\n puncsp: ' ',\n qfr: 'ð”®',\n qint: '⨌',\n qopf: 'ð•¢',\n qprime: 'â—',\n qscr: 'ð“†',\n quaternions: 'â„',\n quatint: '⨖',\n quest: '?',\n questeq: '≟',\n quot: '\"',\n rAarr: '⇛',\n rArr: '⇒',\n rAtail: '⤜',\n rBarr: 'â¤',\n rHar: '⥤',\n race: '∽̱',\n racute: 'Å•',\n radic: '√',\n raemptyv: '⦳',\n rang: '⟩',\n rangd: '⦒',\n range: '⦥',\n rangle: '⟩',\n raquo: '»',\n rarr: '→',\n rarrap: '⥵',\n rarrb: '⇥',\n rarrbfs: '⤠',\n rarrc: '⤳',\n rarrfs: '⤞',\n rarrhk: '↪',\n rarrlp: '↬',\n rarrpl: '⥅',\n rarrsim: '⥴',\n rarrtl: '↣',\n rarrw: 'â†',\n ratail: '⤚',\n ratio: '∶',\n rationals: 'â„š',\n rbarr: 'â¤',\n rbbrk: 'â³',\n rbrace: '}',\n rbrack: ']',\n rbrke: '⦌',\n rbrksld: '⦎',\n rbrkslu: 'â¦',\n rcaron: 'Å™',\n rcedil: 'Å—',\n rceil: '⌉',\n rcub: '}',\n rcy: 'Ñ€',\n rdca: '⤷',\n rdldhar: '⥩',\n rdquo: 'â€',\n rdquor: 'â€',\n rdsh: '↳',\n real: 'â„œ',\n realine: 'â„›',\n realpart: 'â„œ',\n reals: 'â„',\n rect: 'â–',\n reg: '®',\n rfisht: '⥽',\n rfloor: '⌋',\n rfr: 'ð”¯',\n rhard: 'â‡',\n rharu: '⇀',\n rharul: '⥬',\n rho: 'Ï',\n rhov: 'ϱ',\n rightarrow: '→',\n rightarrowtail: '↣',\n rightharpoondown: 'â‡',\n rightharpoonup: '⇀',\n rightleftarrows: '⇄',\n rightleftharpoons: '⇌',\n rightrightarrows: '⇉',\n rightsquigarrow: 'â†',\n rightthreetimes: 'â‹Œ',\n ring: 'Ëš',\n risingdotseq: '≓',\n rlarr: '⇄',\n rlhar: '⇌',\n rlm: 'â€',\n rmoust: '⎱',\n rmoustache: '⎱',\n rnmid: 'â«®',\n roang: 'âŸ',\n roarr: '⇾',\n robrk: '⟧',\n ropar: '⦆',\n ropf: 'ð•£',\n roplus: '⨮',\n rotimes: '⨵',\n rpar: ')',\n rpargt: '⦔',\n rppolint: '⨒',\n rrarr: '⇉',\n rsaquo: '›',\n rscr: 'ð“‡',\n rsh: '↱',\n rsqb: ']',\n rsquo: '’',\n rsquor: '’',\n rthree: 'â‹Œ',\n rtimes: 'â‹Š',\n rtri: 'â–¹',\n rtrie: '⊵',\n rtrif: 'â–¸',\n rtriltri: '⧎',\n ruluhar: '⥨',\n rx: 'â„ž',\n sacute: 'Å›',\n sbquo: '‚',\n sc: '≻',\n scE: '⪴',\n scap: '⪸',\n scaron: 'Å¡',\n sccue: '≽',\n sce: '⪰',\n scedil: 'ÅŸ',\n scirc: 'Å',\n scnE: '⪶',\n scnap: '⪺',\n scnsim: 'â‹©',\n scpolint: '⨓',\n scsim: '≿',\n scy: 'Ñ',\n sdot: 'â‹…',\n sdotb: '⊡',\n sdote: '⩦',\n seArr: '⇘',\n searhk: '⤥',\n searr: '↘',\n searrow: '↘',\n sect: '§',\n semi: ';',\n seswar: '⤩',\n setminus: '∖',\n setmn: '∖',\n sext: '✶',\n sfr: 'ð”°',\n sfrown: '⌢',\n sharp: '♯',\n shchcy: 'щ',\n shcy: 'ш',\n shortmid: '∣',\n shortparallel: '∥',\n shy: 'Â',\n sigma: 'σ',\n sigmaf: 'Ï‚',\n sigmav: 'Ï‚',\n sim: '∼',\n simdot: '⩪',\n sime: '≃',\n simeq: '≃',\n simg: '⪞',\n simgE: '⪠',\n siml: 'âª',\n simlE: '⪟',\n simne: '≆',\n simplus: '⨤',\n simrarr: '⥲',\n slarr: 'â†',\n smallsetminus: '∖',\n smashp: '⨳',\n smeparsl: '⧤',\n smid: '∣',\n smile: '⌣',\n smt: '⪪',\n smte: '⪬',\n smtes: '⪬︀',\n softcy: 'ÑŒ',\n sol: '/',\n solb: '⧄',\n solbar: '⌿',\n sopf: 'ð•¤',\n spades: 'â™ ',\n spadesuit: 'â™ ',\n spar: '∥',\n sqcap: '⊓',\n sqcaps: '⊓︀',\n sqcup: '⊔',\n sqcups: '⊔︀',\n sqsub: 'âŠ',\n sqsube: '⊑',\n sqsubset: 'âŠ',\n sqsubseteq: '⊑',\n sqsup: 'âŠ',\n sqsupe: '⊒',\n sqsupset: 'âŠ',\n sqsupseteq: '⊒',\n squ: 'â–¡',\n square: 'â–¡',\n squarf: 'â–ª',\n squf: 'â–ª',\n srarr: '→',\n sscr: 'ð“ˆ',\n ssetmn: '∖',\n ssmile: '⌣',\n sstarf: '⋆',\n star: '☆',\n starf: '★',\n straightepsilon: 'ϵ',\n straightphi: 'Ï•',\n strns: '¯',\n sub: '⊂',\n subE: 'â«…',\n subdot: '⪽',\n sube: '⊆',\n subedot: '⫃',\n submult: 'â«',\n subnE: 'â«‹',\n subne: '⊊',\n subplus: '⪿',\n subrarr: '⥹',\n subset: '⊂',\n subseteq: '⊆',\n subseteqq: 'â«…',\n subsetneq: '⊊',\n subsetneqq: 'â«‹',\n subsim: '⫇',\n subsub: 'â«•',\n subsup: 'â«“',\n succ: '≻',\n succapprox: '⪸',\n succcurlyeq: '≽',\n succeq: '⪰',\n succnapprox: '⪺',\n succneqq: '⪶',\n succnsim: 'â‹©',\n succsim: '≿',\n sum: '∑',\n sung: '♪',\n sup1: '¹',\n sup2: '²',\n sup3: '³',\n sup: '⊃',\n supE: '⫆',\n supdot: '⪾',\n supdsub: '⫘',\n supe: '⊇',\n supedot: 'â«„',\n suphsol: '⟉',\n suphsub: 'â«—',\n suplarr: '⥻',\n supmult: 'â«‚',\n supnE: 'â«Œ',\n supne: '⊋',\n supplus: 'â«€',\n supset: '⊃',\n supseteq: '⊇',\n supseteqq: '⫆',\n supsetneq: '⊋',\n supsetneqq: 'â«Œ',\n supsim: '⫈',\n supsub: 'â«”',\n supsup: 'â«–',\n swArr: '⇙',\n swarhk: '⤦',\n swarr: '↙',\n swarrow: '↙',\n swnwar: '⤪',\n szlig: 'ß',\n target: '⌖',\n tau: 'Ï„',\n tbrk: '⎴',\n tcaron: 'Å¥',\n tcedil: 'Å£',\n tcy: 'Ñ‚',\n tdot: '⃛',\n telrec: '⌕',\n tfr: 'ð”±',\n there4: '∴',\n therefore: '∴',\n theta: 'θ',\n thetasym: 'Ï‘',\n thetav: 'Ï‘',\n thickapprox: '≈',\n thicksim: '∼',\n thinsp: ' ',\n thkap: '≈',\n thksim: '∼',\n thorn: 'þ',\n tilde: 'Ëœ',\n times: '×',\n timesb: '⊠',\n timesbar: '⨱',\n timesd: '⨰',\n tint: 'âˆ',\n toea: '⤨',\n top: '⊤',\n topbot: '⌶',\n topcir: '⫱',\n topf: 'ð•¥',\n topfork: 'â«š',\n tosa: '⤩',\n tprime: '‴',\n trade: 'â„¢',\n triangle: 'â–µ',\n triangledown: 'â–¿',\n triangleleft: 'â—ƒ',\n trianglelefteq: '⊴',\n triangleq: '≜',\n triangleright: 'â–¹',\n trianglerighteq: '⊵',\n tridot: 'â—¬',\n trie: '≜',\n triminus: '⨺',\n triplus: '⨹',\n trisb: 'â§',\n tritime: '⨻',\n trpezium: 'â¢',\n tscr: 'ð“‰',\n tscy: 'ц',\n tshcy: 'Ñ›',\n tstrok: 'ŧ',\n twixt: '≬',\n twoheadleftarrow: '↞',\n twoheadrightarrow: '↠',\n uArr: '⇑',\n uHar: '⥣',\n uacute: 'ú',\n uarr: '↑',\n ubrcy: 'Ñž',\n ubreve: 'Å',\n ucirc: 'û',\n ucy: 'у',\n udarr: '⇅',\n udblac: 'ű',\n udhar: '⥮',\n ufisht: '⥾',\n ufr: 'ð”²',\n ugrave: 'ù',\n uharl: '↿',\n uharr: '↾',\n uhblk: 'â–€',\n ulcorn: '⌜',\n ulcorner: '⌜',\n ulcrop: 'âŒ',\n ultri: 'â—¸',\n umacr: 'Å«',\n uml: '¨',\n uogon: 'ų',\n uopf: 'ð•¦',\n uparrow: '↑',\n updownarrow: '↕',\n upharpoonleft: '↿',\n upharpoonright: '↾',\n uplus: '⊎',\n upsi: 'Ï…',\n upsih: 'Ï’',\n upsilon: 'Ï…',\n upuparrows: '⇈',\n urcorn: 'âŒ',\n urcorner: 'âŒ',\n urcrop: '⌎',\n uring: 'ů',\n urtri: 'â—¹',\n uscr: 'ð“Š',\n utdot: 'â‹°',\n utilde: 'Å©',\n utri: 'â–µ',\n utrif: 'â–´',\n uuarr: '⇈',\n uuml: 'ü',\n uwangle: '⦧',\n vArr: '⇕',\n vBar: '⫨',\n vBarv: 'â«©',\n vDash: '⊨',\n vangrt: '⦜',\n varepsilon: 'ϵ',\n varkappa: 'Ï°',\n varnothing: '∅',\n varphi: 'Ï•',\n varpi: 'Ï–',\n varpropto: 'âˆ',\n varr: '↕',\n varrho: 'ϱ',\n varsigma: 'Ï‚',\n varsubsetneq: '⊊︀',\n varsubsetneqq: '⫋︀',\n varsupsetneq: '⊋︀',\n varsupsetneqq: '⫌︀',\n vartheta: 'Ï‘',\n vartriangleleft: '⊲',\n vartriangleright: '⊳',\n vcy: 'в',\n vdash: '⊢',\n vee: '∨',\n veebar: '⊻',\n veeeq: '≚',\n vellip: 'â‹®',\n verbar: '|',\n vert: '|',\n vfr: 'ð”³',\n vltri: '⊲',\n vnsub: '⊂⃒',\n vnsup: '⊃⃒',\n vopf: 'ð•§',\n vprop: 'âˆ',\n vrtri: '⊳',\n vscr: 'ð“‹',\n vsubnE: '⫋︀',\n vsubne: '⊊︀',\n vsupnE: '⫌︀',\n vsupne: '⊋︀',\n vzigzag: '⦚',\n wcirc: 'ŵ',\n wedbar: 'â©Ÿ',\n wedge: '∧',\n wedgeq: '≙',\n weierp: '℘',\n wfr: 'ð”´',\n wopf: 'ð•¨',\n wp: '℘',\n wr: '≀',\n wreath: '≀',\n wscr: 'ð“Œ',\n xcap: 'â‹‚',\n xcirc: 'â—¯',\n xcup: '⋃',\n xdtri: 'â–½',\n xfr: 'ð”µ',\n xhArr: '⟺',\n xharr: '⟷',\n xi: 'ξ',\n xlArr: '⟸',\n xlarr: '⟵',\n xmap: '⟼',\n xnis: 'â‹»',\n xodot: '⨀',\n xopf: 'ð•©',\n xoplus: 'â¨',\n xotime: '⨂',\n xrArr: '⟹',\n xrarr: '⟶',\n xscr: 'ð“',\n xsqcup: '⨆',\n xuplus: '⨄',\n xutri: 'â–³',\n xvee: 'â‹',\n xwedge: 'â‹€',\n yacute: 'ý',\n yacy: 'Ñ',\n ycirc: 'Å·',\n ycy: 'Ñ‹',\n yen: 'Â¥',\n yfr: 'ð”¶',\n yicy: 'Ñ—',\n yopf: 'ð•ª',\n yscr: 'ð“Ž',\n yucy: 'ÑŽ',\n yuml: 'ÿ',\n zacute: 'ź',\n zcaron: 'ž',\n zcy: 'з',\n zdot: 'ż',\n zeetrf: 'ℨ',\n zeta: 'ζ',\n zfr: 'ð”·',\n zhcy: 'ж',\n zigrarr: 'â‡',\n zopf: 'ð•«',\n zscr: 'ð“',\n zwj: 'â€',\n zwnj: '‌'\n}\n","import {characterEntities} from 'character-entities'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Decode a single character reference (without the `&` or `;`).\n * You probably only need this when you’re building parsers yourself that follow\n * different rules compared to HTML.\n * This is optimized to be tiny in browsers.\n *\n * @param {string} value\n * `notin` (named), `#123` (deci), `#x123` (hexa).\n * @returns {string|false}\n * Decoded reference.\n */\nexport function decodeNamedCharacterReference(value) {\n return own.call(characterEntities, value) ? characterEntities[value] : false\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {\n asciiAlphanumeric,\n asciiDigit,\n asciiHexDigit\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n const self = this\n let size = 0\n /** @type {number} */\n\n let max\n /** @type {(code: Code) => code is number} */\n\n let test\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterReference')\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n /** @type {State} */\n\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n /** @type {State} */\n\n function value(code) {\n /** @type {Token} */\n let token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeNamedCharacterReference(self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {asciiPunctuation} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factoryDestination} from 'micromark-factory-destination'\nimport {factoryLabel} from 'micromark-factory-label'\nimport {factoryTitle} from 'micromark-factory-title'\nimport {factoryWhitespace} from 'micromark-factory-whitespace'\nimport {markdownLineEndingOrSpace} from 'micromark-util-character'\nimport {push, splice} from 'micromark-util-chunked'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\n/** @type {Construct} */\n\nconst resourceConstruct = {\n tokenize: tokenizeResource\n}\n/** @type {Construct} */\n\nconst fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\n/** @type {Construct} */\n\nconst collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n/** @type {Resolver} */\n\nfunction resolveAllLabelEnd(events) {\n let index = -1\n /** @type {Token} */\n\n let token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd'\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n/** @type {Resolver} */\n\nfunction resolveToLabelEnd(events, context) {\n let index = events.length\n let offset = 0\n /** @type {Token} */\n\n let token\n /** @type {number|undefined} */\n\n let open\n /** @type {number|undefined} */\n\n let close\n /** @type {Event[]} */\n\n let media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can’t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n const group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[events.length - 1][1].end)\n }\n const label = {\n type: 'label',\n start: Object.assign({}, events[open][1].start),\n end: Object.assign({}, events[close][1].end)\n }\n const text = {\n type: 'labelText',\n start: Object.assign({}, events[open + offset + 2][1].end),\n end: Object.assign({}, events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = push(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = push(media, [['enter', text, context]]) // Between.\n\n media = push(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = push(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = push(media, events.slice(close + 1)) // Media close.\n\n media = push(media, [['exit', group, context]])\n splice(events, open, events.length, media)\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n const self = this\n let index = self.events.length\n /** @type {Token} */\n\n let labelStart\n /** @type {boolean} */\n\n let defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n /** @type {State} */\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined = self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n )\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n /** @type {State} */\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n /** @type {State} */\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 32\n )(code)\n }\n /** @type {State} */\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n /** @type {State} */\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeFullReference(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n /** @type {State} */\n\n function afterLabel(code) {\n return self.parser.defined.includes(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n )\n ? ok(code)\n : nok(code)\n }\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelImage')\n effects.enter('labelImageMarker')\n effects.consume(code)\n effects.exit('labelImageMarker')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {\n markdownLineEndingOrSpace,\n unicodePunctuation,\n unicodeWhitespace\n} from 'micromark-util-character'\n\n/**\n * Classify whether a character code represents whitespace, punctuation, or\n * something else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * Note that eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n * @returns {number|undefined}\n */\nexport function classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').Code} Code\n * @typedef {import('micromark-util-types').Point} Point\n */\nimport {push, splice} from 'micromark-util-chunked'\nimport {classifyCharacter} from 'micromark-util-classify-character'\nimport {resolveAll} from 'micromark-util-resolve-all'\n\n/** @type {Construct} */\nexport const attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n\nfunction resolveAllAttention(events, context) {\n let index = -1\n /** @type {number} */\n\n let open\n /** @type {Token} */\n\n let group\n /** @type {Token} */\n\n let text\n /** @type {Token} */\n\n let openingSequence\n /** @type {Token} */\n\n let closingSequence\n /** @type {number} */\n\n let use\n /** @type {Event[]} */\n\n let nextEvents\n /** @type {number} */\n\n let offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open && // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n } // Number of markers to use from the sequence.\n\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n const start = Object.assign({}, events[open][1].end)\n const end = Object.assign({}, events[index][1].start)\n movePoint(start, -use)\n movePoint(end, use)\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start,\n end: Object.assign({}, events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: Object.assign({}, events[index][1].start),\n end\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: Object.assign({}, events[open][1].end),\n end: Object.assign({}, events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: Object.assign({}, openingSequence.start),\n end: Object.assign({}, closingSequence.end)\n }\n events[open][1].end = Object.assign({}, openingSequence.start)\n events[index][1].start = Object.assign({}, closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = push(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = push(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = push(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = push(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = push(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n splice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAttention(effects, ok) {\n const attentionMarkers = this.parser.constructs.attentionMarkers.null\n const previous = this.previous\n const before = classifyCharacter(previous)\n /** @type {NonNullable<Code>} */\n\n let marker\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n /** @type {State} */\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n const token = effects.exit('attentionSequence')\n const after = classifyCharacter(code)\n const open =\n !after || (after === 2 && before) || attentionMarkers.includes(code)\n const close =\n !before || (before === 2 && after) || attentionMarkers.includes(previous)\n token._open = Boolean(marker === 42 ? open : open && (before || !close))\n token._close = Boolean(marker === 42 ? close : close && (after || !open))\n return ok(code)\n }\n}\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It’s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n * @param {number} offset\n * @returns {void}\n */\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n asciiAtext,\n asciiControl\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeAutolink(effects, ok, nok) {\n let size = 1\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('autolink')\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.enter('autolinkProtocol')\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n /** @type {State} */\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n /** @type {State} */\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n /** @type {State} */\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n /** @type {State} */\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n /** @type {State} */\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n /** @type {State} */\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n * @typedef {import('micromark-util-types').Code} Code\n */\nimport {factorySpace} from 'micromark-factory-space'\nimport {\n asciiAlpha,\n asciiAlphanumeric,\n markdownLineEnding,\n markdownLineEndingOrSpace,\n markdownSpace\n} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n const self = this\n /** @type {NonNullable<Code>|undefined} */\n\n let marker\n /** @type {string} */\n\n let buffer\n /** @type {number} */\n\n let index\n /** @type {State} */\n\n let returnState\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n /** @type {State} */\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n /** @type {State} */\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n /** @type {State} */\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n /** @type {State} */\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n /** @type {State} */\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n /** @type {State} */\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n /** @type {State} */\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n /** @type {State} */\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n /** @type {State} */\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n /** @type {State} */\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n /** @type {State} */\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.includes('codeIndented')\n ? undefined\n : 4\n )\n }\n /** @type {State} */\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n /** @type {State} */\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {labelEnd} from './label-end.js'\n/** @type {Construct} */\n\nexport const labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n const self = this\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('labelLink')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelLink')\n return after\n }\n /** @type {State} */\n\n function after(code) {\n /* To do: remove in the future once we’ve switched from\n * `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n * which doesn’t need this */\n\n /* Hidden footnotes hook. */\n\n /* c8 ignore next 3 */\n return code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs\n ? nok(code)\n : ok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n /** @type {State} */\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Construct} Construct\n * @typedef {import('micromark-util-types').Resolver} Resolver\n * @typedef {import('micromark-util-types').Tokenizer} Tokenizer\n * @typedef {import('micromark-util-types').Previous} Previous\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').State} State\n */\nimport {markdownLineEnding} from 'micromark-util-character'\n\n/** @type {Construct} */\nexport const codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous\n}\n/** @type {Resolver} */\n\nfunction resolveCodeText(events) {\n let tailExitIndex = events.length - 4\n let headEnterIndex = 3\n /** @type {number} */\n\n let index\n /** @type {number|undefined} */\n\n let enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[headEnterIndex][1].type = 'codeTextPadding'\n events[tailExitIndex][1].type = 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n/** @type {Previous} */\n\nfunction previous(code) {\n // If there is a previous code, there will always be a tail.\n return (\n code !== 96 ||\n this.events[this.events.length - 1][1].type === 'characterEscape'\n )\n}\n/** @type {Tokenizer} */\n\nfunction tokenizeCodeText(effects, ok, nok) {\n const self = this\n let sizeOpen = 0\n /** @type {number} */\n\n let size\n /** @type {Token} */\n\n let token\n return start\n /** @type {State} */\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n /** @type {State} */\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n /** @type {State} */\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don’t work, and virtual spaces don’t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n /** @type {State} */\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n /** @type {State} */\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Extension} Extension\n */\nimport {\n attention,\n autolink,\n blockQuote,\n characterEscape,\n characterReference,\n codeFenced,\n codeIndented,\n codeText,\n definition,\n hardBreakEscape,\n headingAtx,\n htmlFlow,\n htmlText,\n labelEnd,\n labelStartImage,\n labelStartLink,\n lineEnding,\n list,\n setextUnderline,\n thematicBreak\n} from 'micromark-core-commonmark'\nimport {resolver as resolveText} from './initialize/text.js'\n/** @type {Extension['document']} */\n\nexport const document = {\n [42]: list,\n [43]: list,\n [45]: list,\n [48]: list,\n [49]: list,\n [50]: list,\n [51]: list,\n [52]: list,\n [53]: list,\n [54]: list,\n [55]: list,\n [56]: list,\n [57]: list,\n [62]: blockQuote\n}\n/** @type {Extension['contentInitial']} */\n\nexport const contentInitial = {\n [91]: definition\n}\n/** @type {Extension['flowInitial']} */\n\nexport const flowInitial = {\n [-2]: codeIndented,\n [-1]: codeIndented,\n [32]: codeIndented\n}\n/** @type {Extension['flow']} */\n\nexport const flow = {\n [35]: headingAtx,\n [42]: thematicBreak,\n [45]: [setextUnderline, thematicBreak],\n [60]: htmlFlow,\n [61]: setextUnderline,\n [95]: thematicBreak,\n [96]: codeFenced,\n [126]: codeFenced\n}\n/** @type {Extension['string']} */\n\nexport const string = {\n [38]: characterReference,\n [92]: characterEscape\n}\n/** @type {Extension['text']} */\n\nexport const text = {\n [-5]: lineEnding,\n [-4]: lineEnding,\n [-3]: lineEnding,\n [33]: labelStartImage,\n [38]: characterReference,\n [42]: attention,\n [60]: [autolink, htmlText],\n [91]: labelStartLink,\n [92]: [hardBreakEscape, characterEscape],\n [93]: labelEnd,\n [95]: attention,\n [96]: codeText\n}\n/** @type {Extension['insideSpan']} */\n\nexport const insideSpan = {\n null: [attention, resolveText]\n}\n/** @type {Extension['attentionMarkers']} */\n\nexport const attentionMarkers = {\n null: [42, 95]\n}\n/** @type {Extension['disable']} */\n\nexport const disable = {\n null: []\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('micromark-util-types').Chunk} Chunk\n * @typedef {import('micromark-util-types').Code} Code\n */\n\n/**\n * @callback Preprocessor\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {boolean} [end=false]\n * @returns {Chunk[]}\n */\nconst search = /[\\0\\t\\n\\r]/g\n/**\n * @returns {Preprocessor}\n */\n\nexport function preprocess() {\n let column = 1\n let buffer = ''\n /** @type {boolean|undefined} */\n\n let start = true\n /** @type {boolean|undefined} */\n\n let atCarriageReturn\n return preprocessor\n /** @type {Preprocessor} */\n\n function preprocessor(value, encoding, end) {\n /** @type {Chunk[]} */\n const chunks = []\n /** @type {RegExpMatchArray|null} */\n\n let match\n /** @type {number} */\n\n let next\n /** @type {number} */\n\n let startPosition\n /** @type {number} */\n\n let endPosition\n /** @type {Code} */\n\n let code // @ts-expect-error `Buffer` does allow an encoding.\n\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition =\n match && match.index !== undefined ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n switch (code) {\n case 0: {\n chunks.push(65533)\n column++\n break\n }\n\n case 9: {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n\n break\n }\n\n case 10: {\n chunks.push(-4)\n column = 1\n break\n }\n\n default: {\n atCarriageReturn = true\n column = 1\n }\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n","/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * @param {string} value\n * Value to decode.\n * @param {number} base\n * Numeric base.\n * @returns {string}\n */\nexport function decodeNumericCharacterReference(value, base) {\n const code = Number.parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return String.fromCharCode(code)\n}\n","import {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nconst characterEscapeOrReference =\n /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi\n/**\n * Utility to decode markdown strings (which occur in places such as fenced\n * code info strings, destinations, labels, and titles).\n * The “string†content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n * @returns {string}\n */\n\nexport function decodeString(value) {\n return value.replace(characterEscapeOrReference, decode)\n}\n/**\n * @param {string} $0\n * @param {string} $1\n * @param {string} $2\n * @returns {string}\n */\n\nfunction decode($0, $1, $2) {\n if ($1) {\n // Escape.\n return $1\n } // Reference.\n\n const head = $2.charCodeAt(0)\n\n if (head === 35) {\n const head = $2.charCodeAt(1)\n const hex = head === 120 || head === 88\n return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10)\n }\n\n return decodeNamedCharacterReference($2) || $0\n}\n","/**\n * @typedef {import('micromark-util-types').Encoding} Encoding\n * @typedef {import('micromark-util-types').Event} Event\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').Token} Token\n * @typedef {import('micromark-util-types').TokenizeContext} TokenizeContext\n * @typedef {import('micromark-util-types').Value} Value\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist').Point} Point\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n * @typedef {import('mdast').Content} Content\n * @typedef {Root|Content} Node\n * @typedef {Extract<Node, UnistParent>} Parent\n * @typedef {import('mdast').Break} Break\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('mdast').Code} Code\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('mdast').Image} Image\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Link} Link\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').List} List\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('mdast').Text} Text\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n *\n * @typedef {UnistParent & {type: 'fragment', children: Array<PhrasingContent>}} Fragment\n */\n\n/**\n * @typedef _CompileDataFields\n * @property {boolean|undefined} expectingFirstListItemValue\n * @property {boolean|undefined} flowCodeInside\n * @property {boolean|undefined} setextHeadingSlurpLineEnding\n * @property {boolean|undefined} atHardBreak\n * @property {'collapsed'|'full'} referenceType\n * @property {boolean|undefined} inReference\n * @property {'characterReferenceMarkerHexadecimal'|'characterReferenceMarkerNumeric'} characterReferenceType\n *\n * @typedef {Record<string, unknown> & Partial<_CompileDataFields>} CompileData\n *\n * @typedef {(tree: Root) => Root|void} Transform\n * @typedef {(this: CompileContext, token: Token) => void} Handle\n * @typedef {Record<string, Handle>} Handles\n * Token types mapping to handles\n * @typedef {Record<string, Record<string, unknown>|Array<unknown>> & {canContainEols: Array<string>, transforms: Array<Transform>, enter: Handles, exit: Handles}} NormalizedExtension\n * @typedef {Partial<NormalizedExtension>} Extension\n * An mdast extension changes how markdown tokens are turned into mdast.\n *\n * @typedef {(this: Omit<CompileContext, 'sliceSerialize'>, left: Token|undefined, right: Token) => void} OnEnterError\n * @typedef {(this: Omit<CompileContext, 'sliceSerialize'>, left: Token, right: Token) => void} OnExitError\n *\n * @typedef CompileContext\n * mdast compiler context\n * @property {Array<Node | Fragment>} stack\n * @property {Array<[Token, OnEnterError|undefined]>} tokenStack\n * @property {(key: string, value?: unknown) => void} setData\n * Set data into the key-value store.\n * @property {<K extends string>(key: K) => CompileData[K]} getData\n * Get data from the key-value store.\n * @property {(this: CompileContext) => void} buffer\n * Capture some of the output data.\n * @property {(this: CompileContext) => string} resume\n * Stop capturing and access the output data.\n * @property {<N extends Node>(this: CompileContext, node: N, token: Token, onError?: OnEnterError) => N} enter\n * Enter a token.\n * @property {(this: CompileContext, token: Token, onError?: OnExitError) => Node} exit\n * Exit a token.\n * @property {TokenizeContext['sliceSerialize']} sliceSerialize\n * Get the string value of a token.\n * @property {NormalizedExtension} config\n * Configuration.\n *\n * @typedef {{mdastExtensions?: Array<Extension|Array<Extension>>}} FromMarkdownOptions\n * @typedef {ParseOptions & FromMarkdownOptions} Options\n */\nimport {toString} from 'mdast-util-to-string'\nimport {parse} from 'micromark/lib/parse.js'\nimport {preprocess} from 'micromark/lib/preprocess.js'\nimport {postprocess} from 'micromark/lib/postprocess.js'\nimport {decodeNumericCharacterReference} from 'micromark-util-decode-numeric-character-reference'\nimport {decodeString} from 'micromark-util-decode-string'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\nimport {stringifyPosition} from 'unist-util-stringify-position'\nconst own = {}.hasOwnProperty\n/**\n * @param value Markdown to parse (`string` or `Buffer`).\n * @param [encoding] Character encoding to understand `value` as when it’s a `Buffer` (`string`, default: `'utf8'`).\n * @param [options] Configuration\n */\n\nexport const fromMarkdown =\n /**\n * @type {(\n * ((value: Value, encoding: Encoding, options?: Options) => Root) &\n * ((value: Value, options?: Options) => Root)\n * )}\n */\n\n /**\n * @param {Value} value\n * @param {Encoding} [encoding]\n * @param {Options} [options]\n * @returns {Root}\n */\n function (value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parse(options).document().write(preprocess()(value, encoding, true))\n )\n )\n }\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options} [options]\n */\n\nfunction compiler(options = {}) {\n /** @type {NormalizedExtension} */\n // @ts-expect-error: our base has all required fields, so the result will too.\n const config = configure(\n {\n transforms: [],\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n exit: {\n atxHeading: closer(),\n atxHeadingSequence: onexitatxheadingsequence,\n autolink: closer(),\n autolinkEmail: onexitautolinkemail,\n autolinkProtocol: onexitautolinkprotocol,\n blockQuote: closer(),\n characterEscapeValue: onexitdata,\n characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n characterReferenceValue: onexitcharacterreferencevalue,\n codeFenced: closer(onexitcodefenced),\n codeFencedFence: onexitcodefencedfence,\n codeFencedFenceInfo: onexitcodefencedfenceinfo,\n codeFencedFenceMeta: onexitcodefencedfencemeta,\n codeFlowValue: onexitdata,\n codeIndented: closer(onexitcodeindented),\n codeText: closer(onexitcodetext),\n codeTextData: onexitdata,\n data: onexitdata,\n definition: closer(),\n definitionDestinationString: onexitdefinitiondestinationstring,\n definitionLabelString: onexitdefinitionlabelstring,\n definitionTitleString: onexitdefinitiontitlestring,\n emphasis: closer(),\n hardBreakEscape: closer(onexithardbreak),\n hardBreakTrailing: closer(onexithardbreak),\n htmlFlow: closer(onexithtmlflow),\n htmlFlowData: onexitdata,\n htmlText: closer(onexithtmltext),\n htmlTextData: onexitdata,\n image: closer(onexitimage),\n label: onexitlabel,\n labelText: onexitlabeltext,\n lineEnding: onexitlineending,\n link: closer(onexitlink),\n listItem: closer(),\n listOrdered: closer(),\n listUnordered: closer(),\n paragraph: closer(),\n referenceString: onexitreferencestring,\n resourceDestinationString: onexitresourcedestinationstring,\n resourceTitleString: onexitresourcetitlestring,\n resource: onexitresource,\n setextHeading: closer(onexitsetextheading),\n setextHeadingLineSequence: onexitsetextheadinglinesequence,\n setextHeadingText: onexitsetextheadingtext,\n strong: closer(),\n thematicBreak: closer()\n }\n },\n options.mdastExtensions || []\n )\n /** @type {CompileData} */\n\n const data = {}\n return compile\n /**\n * @param {Array<Event>} events\n * @returns {Root}\n */\n\n function compile(events) {\n /** @type {Root} */\n let tree = {\n type: 'root',\n children: []\n }\n /** @type {CompileContext['stack']} */\n\n const stack = [tree]\n /** @type {CompileContext['tokenStack']} */\n\n const tokenStack = []\n /** @type {Array<number>} */\n\n const listStack = []\n /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n\n const context = {\n stack,\n tokenStack,\n config,\n enter,\n exit,\n buffer,\n resume,\n setData,\n getData\n }\n let index = -1\n\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n const tail = listStack.pop()\n index = prepareList(events, tail, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n const handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n Object.assign(\n {\n sliceSerialize: events[index][2].sliceSerialize\n },\n context\n ),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length > 0) {\n const tail = tokenStack[tokenStack.length - 1]\n const handler = tail[1] || defaultOnError\n handler.call(context, undefined, tail[0])\n } // Figure out `root` position.\n\n tree.position = {\n start: point(\n events.length > 0\n ? events[0][1].start\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n ),\n end: point(\n events.length > 0\n ? events[events.length - 2][1].end\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n )\n }\n index = -1\n\n while (++index < config.transforms.length) {\n tree = config.transforms[index](tree) || tree\n }\n\n return tree\n }\n /**\n * @param {Array<Event>} events\n * @param {number} start\n * @param {number} length\n * @returns {number}\n */\n\n function prepareList(events, start, length) {\n let index = start - 1\n let containerBalance = -1\n let listSpread = false\n /** @type {Token|undefined} */\n\n let listItem\n /** @type {number|undefined} */\n\n let lineIndex\n /** @type {number|undefined} */\n\n let firstBlankLineIndex\n /** @type {boolean|undefined} */\n\n let atMarker\n\n while (++index <= length) {\n const event = events[index]\n\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n let tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n const tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n // @ts-expect-error Patched.\n listItem._spread = true\n } // Fix position.\n\n listItem.end = Object.assign(\n {},\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\n events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])\n index++\n length++\n } // Create a new list item.\n\n if (event[1].type === 'listItemPrefix') {\n listItem = {\n type: 'listItem',\n // @ts-expect-error Patched\n _spread: false,\n start: Object.assign({}, event[1].start)\n } // @ts-expect-error: `listItem` is most definitely defined, TS...\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n } // @ts-expect-error Patched.\n\n events[start][1]._spread = listSpread\n return length\n }\n /**\n * @type {CompileContext['setData']}\n * @param [value]\n */\n\n function setData(key, value) {\n data[key] = value\n }\n /**\n * @type {CompileContext['getData']}\n * @template {string} K\n * @param {K} key\n * @returns {CompileData[K]}\n */\n\n function getData(key) {\n return data[key]\n }\n /**\n * @param {Point} d\n * @returns {Point}\n */\n\n function point(d) {\n return {\n line: d.line,\n column: d.column,\n offset: d.offset\n }\n }\n /**\n * @param {(token: Token) => Node} create\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function opener(create, and) {\n return open\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n /** @type {CompileContext['buffer']} */\n\n function buffer() {\n this.stack.push({\n type: 'fragment',\n children: []\n })\n }\n /**\n * @type {CompileContext['enter']}\n * @template {Node} N\n * @this {CompileContext}\n * @param {N} node\n * @param {Token} token\n * @param {OnEnterError} [errorHandler]\n * @returns {N}\n */\n\n function enter(node, token, errorHandler) {\n const parent = this.stack[this.stack.length - 1]\n // @ts-expect-error: Assume `Node` can exist as a child of `parent`.\n parent.children.push(node)\n this.stack.push(node)\n this.tokenStack.push([token, errorHandler]) // @ts-expect-error: `end` will be patched later.\n\n node.position = {\n start: point(token.start)\n }\n return node\n }\n /**\n * @param {Handle} [and]\n * @returns {Handle}\n */\n\n function closer(and) {\n return close\n /**\n * @this {CompileContext}\n * @param {Token} token\n * @returns {void}\n */\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n /**\n * @type {CompileContext['exit']}\n * @this {CompileContext}\n * @param {Token} token\n * @param {OnExitError} [onExitError]\n * @returns {Node}\n */\n\n function exit(token, onExitError) {\n const node = this.stack.pop()\n const open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({\n start: token.start,\n end: token.end\n }) +\n '): it’s not open'\n )\n } else if (open[0].type !== token.type) {\n if (onExitError) {\n onExitError.call(this, token, open[0])\n } else {\n const handler = open[1] || defaultOnError\n handler.call(this, token, open[0])\n }\n }\n\n node.position.end = point(token.end)\n return node\n }\n /**\n * @this {CompileContext}\n * @returns {string}\n */\n\n function resume() {\n return toString(this.stack.pop())\n } //\n // Handlers.\n //\n\n /** @type {Handle} */\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n /** @type {Handle} */\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n const ancestor =\n /** @type {List} */\n this.stack[this.stack.length - 2]\n ancestor.start = Number.parseInt(this.sliceSerialize(token), 10)\n setData('expectingFirstListItemValue')\n }\n }\n /** @type {Handle} */\n\n function onexitcodefencedfenceinfo() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.lang = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfencemeta() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.meta = data\n }\n /** @type {Handle} */\n\n function onexitcodefencedfence() {\n // Exit if this is the closing fence.\n if (getData('flowCodeInside')) return\n this.buffer()\n setData('flowCodeInside', true)\n }\n /** @type {Handle} */\n\n function onexitcodefenced() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '')\n setData('flowCodeInside')\n }\n /** @type {Handle} */\n\n function onexitcodeindented() {\n const data = this.resume()\n const node =\n /** @type {Code} */\n this.stack[this.stack.length - 1]\n node.value = data.replace(/(\\r?\\n|\\r)$/g, '')\n }\n /** @type {Handle} */\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n const label = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitdefinitiontitlestring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitdefinitiondestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Definition} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitatxheadingsequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n\n if (!node.depth) {\n const depth = this.sliceSerialize(token).length\n node.depth = depth\n }\n }\n /** @type {Handle} */\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n /** @type {Handle} */\n\n function onexitsetextheadinglinesequence(token) {\n const node =\n /** @type {Heading} */\n this.stack[this.stack.length - 1]\n node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n /** @type {Handle} */\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n /** @type {Handle} */\n\n function onenterdata(token) {\n const parent =\n /** @type {Parent} */\n this.stack[this.stack.length - 1]\n /** @type {Node} */\n\n let tail = parent.children[parent.children.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text() // @ts-expect-error: we’ll add `end` later.\n\n tail.position = {\n start: point(token.start)\n } // @ts-expect-error: Assume `parent` accepts `text`.\n\n parent.children.push(tail)\n }\n\n this.stack.push(tail)\n }\n /** @type {Handle} */\n\n function onexitdata(token) {\n const tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n /** @type {Handle} */\n\n function onexitlineending(token) {\n const context = this.stack[this.stack.length - 1]\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n const tail = context.children[context.children.length - 1]\n tail.position.end = point(token.end)\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.includes(context.type)\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n /** @type {Handle} */\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n /** @type {Handle} */\n\n function onexithtmlflow() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexithtmltext() {\n const data = this.resume()\n const node =\n /** @type {HTML} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitcodetext() {\n const data = this.resume()\n const node =\n /** @type {InlineCode} */\n this.stack[this.stack.length - 1]\n node.value = data\n }\n /** @type {Handle} */\n\n function onexitlink() {\n const context =\n /** @type {Link & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitimage() {\n const context =\n /** @type {Image & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // To do: clean.\n\n if (getData('inReference')) {\n context.type += 'Reference' // @ts-expect-error: mutate.\n\n context.referenceType = getData('referenceType') || 'shortcut' // @ts-expect-error: mutate.\n\n delete context.url\n delete context.title\n } else {\n // @ts-expect-error: mutate.\n delete context.identifier // @ts-expect-error: mutate.\n\n delete context.label\n }\n\n setData('referenceType')\n }\n /** @type {Handle} */\n\n function onexitlabeltext(token) {\n const ancestor =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 2]\n const string = this.sliceSerialize(token)\n ancestor.label = decodeString(string)\n ancestor.identifier = normalizeIdentifier(string).toLowerCase()\n }\n /** @type {Handle} */\n\n function onexitlabel() {\n const fragment =\n /** @type {Fragment} */\n this.stack[this.stack.length - 1]\n const value = this.resume()\n const node =\n /** @type {(Link|Image) & {identifier: string, label: string}} */\n this.stack[this.stack.length - 1] // Assume a reference.\n\n setData('inReference', true)\n\n if (node.type === 'link') {\n // @ts-expect-error: Assume static phrasing content.\n node.children = fragment.children\n } else {\n node.alt = value\n }\n }\n /** @type {Handle} */\n\n function onexitresourcedestinationstring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.url = data\n }\n /** @type {Handle} */\n\n function onexitresourcetitlestring() {\n const data = this.resume()\n const node =\n /** @type {Link|Image} */\n this.stack[this.stack.length - 1]\n node.title = data\n }\n /** @type {Handle} */\n\n function onexitresource() {\n setData('inReference')\n }\n /** @type {Handle} */\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n /** @type {Handle} */\n\n function onexitreferencestring(token) {\n const label = this.resume()\n const node =\n /** @type {LinkReference|ImageReference} */\n this.stack[this.stack.length - 1]\n node.label = label\n node.identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n /** @type {Handle} */\n\n function onexitcharacterreferencevalue(token) {\n const data = this.sliceSerialize(token)\n const type = getData('characterReferenceType')\n /** @type {string} */\n\n let value\n\n if (type) {\n value = decodeNumericCharacterReference(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n setData('characterReferenceType')\n } else {\n // @ts-expect-error `decodeNamedCharacterReference` can return false for\n // invalid named character references, but everything we’ve tokenized is\n // valid.\n value = decodeNamedCharacterReference(data)\n }\n\n const tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n /** @type {Handle} */\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = this.sliceSerialize(token)\n }\n /** @type {Handle} */\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n const node =\n /** @type {Link} */\n this.stack[this.stack.length - 1]\n node.url = 'mailto:' + this.sliceSerialize(token)\n } //\n // Creaters.\n //\n\n /** @returns {Blockquote} */\n\n function blockQuote() {\n return {\n type: 'blockquote',\n children: []\n }\n }\n /** @returns {Code} */\n\n function codeFlow() {\n return {\n type: 'code',\n lang: null,\n meta: null,\n value: ''\n }\n }\n /** @returns {InlineCode} */\n\n function codeText() {\n return {\n type: 'inlineCode',\n value: ''\n }\n }\n /** @returns {Definition} */\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n /** @returns {Emphasis} */\n\n function emphasis() {\n return {\n type: 'emphasis',\n children: []\n }\n }\n /** @returns {Heading} */\n\n function heading() {\n // @ts-expect-error `depth` will be set later.\n return {\n type: 'heading',\n depth: undefined,\n children: []\n }\n }\n /** @returns {Break} */\n\n function hardBreak() {\n return {\n type: 'break'\n }\n }\n /** @returns {HTML} */\n\n function html() {\n return {\n type: 'html',\n value: ''\n }\n }\n /** @returns {Image} */\n\n function image() {\n return {\n type: 'image',\n title: null,\n url: '',\n alt: null\n }\n }\n /** @returns {Link} */\n\n function link() {\n return {\n type: 'link',\n title: null,\n url: '',\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {List}\n */\n\n function list(token) {\n return {\n type: 'list',\n ordered: token.type === 'listOrdered',\n start: null,\n // @ts-expect-error Patched.\n spread: token._spread,\n children: []\n }\n }\n /**\n * @param {Token} token\n * @returns {ListItem}\n */\n\n function listItem(token) {\n return {\n type: 'listItem',\n // @ts-expect-error Patched.\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n /** @returns {Paragraph} */\n\n function paragraph() {\n return {\n type: 'paragraph',\n children: []\n }\n }\n /** @returns {Strong} */\n\n function strong() {\n return {\n type: 'strong',\n children: []\n }\n }\n /** @returns {Text} */\n\n function text() {\n return {\n type: 'text',\n value: ''\n }\n }\n /** @returns {ThematicBreak} */\n\n function thematicBreak() {\n return {\n type: 'thematicBreak'\n }\n }\n}\n/**\n * @param {Extension} combined\n * @param {Array<Extension|Array<Extension>>} extensions\n * @returns {Extension}\n */\n\nfunction configure(combined, extensions) {\n let index = -1\n\n while (++index < extensions.length) {\n const value = extensions[index]\n\n if (Array.isArray(value)) {\n configure(combined, value)\n } else {\n extension(combined, value)\n }\n }\n\n return combined\n}\n/**\n * @param {Extension} combined\n * @param {Extension} extension\n * @returns {void}\n */\n\nfunction extension(combined, extension) {\n /** @type {string} */\n let key\n\n for (key in extension) {\n if (own.call(extension, key)) {\n const list = key === 'canContainEols' || key === 'transforms'\n const maybe = own.call(combined, key) ? combined[key] : undefined\n /* c8 ignore next */\n\n const left = maybe || (combined[key] = list ? [] : {})\n const right = extension[key]\n\n if (right) {\n if (list) {\n // @ts-expect-error: `left` is an array.\n combined[key] = [...left, ...right]\n } else {\n Object.assign(left, right)\n }\n }\n }\n }\n}\n/** @type {OnEnterError} */\n\nfunction defaultOnError(left, right) {\n if (left) {\n throw new Error(\n 'Cannot close `' +\n left.type +\n '` (' +\n stringifyPosition({\n start: left.start,\n end: left.end\n }) +\n '): a different token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is open'\n )\n } else {\n throw new Error(\n 'Cannot close document, a token (`' +\n right.type +\n '`, ' +\n stringifyPosition({\n start: right.start,\n end: right.end\n }) +\n ') is still open'\n )\n }\n}\n","/**\n * @typedef {import('micromark-util-types').Event} Event\n */\nimport {subtokenize} from 'micromark-util-subtokenize'\n/**\n * @param {Event[]} events\n * @returns {Event[]}\n */\n\nexport function postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n","/**\n * @typedef {import('micromark-util-types').InitialConstruct} InitialConstruct\n * @typedef {import('micromark-util-types').FullNormalizedExtension} FullNormalizedExtension\n * @typedef {import('micromark-util-types').ParseOptions} ParseOptions\n * @typedef {import('micromark-util-types').ParseContext} ParseContext\n * @typedef {import('micromark-util-types').Create} Create\n */\nimport {combineExtensions} from 'micromark-util-combine-extensions'\nimport {content} from './initialize/content.js'\nimport {document} from './initialize/document.js'\nimport {flow} from './initialize/flow.js'\nimport {text, string} from './initialize/text.js'\nimport {createTokenizer} from './create-tokenizer.js'\nimport * as defaultConstructs from './constructs.js'\n/**\n * @param {ParseOptions} [options]\n * @returns {ParseContext}\n */\n\nexport function parse(options = {}) {\n /** @type {FullNormalizedExtension} */\n // @ts-expect-error `defaultConstructs` is full, so the result will be too.\n const constructs = combineExtensions(\n // @ts-expect-error Same as above.\n [defaultConstructs].concat(options.extensions || [])\n )\n /** @type {ParseContext} */\n\n const parser = {\n defined: [],\n lazy: {},\n constructs,\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(string),\n text: create(text)\n }\n return parser\n /**\n * @param {InitialConstruct} initial\n */\n\n function create(initial) {\n return creator\n /** @type {Create} */\n\n function creator(from) {\n return createTokenizer(parser, initial, from)\n }\n }\n}\n","import remarkParse from './lib/index.js'\n\nexport default remarkParse\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/** @type {import('unified').Plugin<[Options?] | void[], string, Root>} */\nexport default function remarkParse(options) {\n /** @type {import('unified').ParserFunction<Root>} */\n const parser = (doc) => {\n // Assume options.\n const settings = /** @type {Options} */ (this.data('settings'))\n\n return fromMarkdown(\n doc,\n Object.assign({}, settings, options, {\n // Note: these options are not in the readme.\n // The goal is for them to be set by plugins on `data` instead of being\n // passed by users.\n extensions: this.data('micromarkExtensions') || [],\n mdastExtensions: this.data('fromMarkdownExtensions') || []\n })\n )\n }\n\n Object.assign(this, {Parser: parser})\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist').Literal} Literal\n * @typedef {Object.<string, unknown>} Props\n * @typedef {Array.<Node>|string} ChildrenOrValue\n *\n * @typedef {(<T extends string, P extends Record<string, unknown>, C extends Node[]>(type: T, props: P, children: C) => {type: T, children: C} & P)} BuildParentWithProps\n * @typedef {(<T extends string, P extends Record<string, unknown>>(type: T, props: P, value: string) => {type: T, value: string} & P)} BuildLiteralWithProps\n * @typedef {(<T extends string, P extends Record<string, unknown>>(type: T, props: P) => {type: T} & P)} BuildVoidWithProps\n * @typedef {(<T extends string, C extends Node[]>(type: T, children: C) => {type: T, children: C})} BuildParent\n * @typedef {(<T extends string>(type: T, value: string) => {type: T, value: string})} BuildLiteral\n * @typedef {(<T extends string>(type: T) => {type: T})} BuildVoid\n */\n\nexport var u = /**\n * @type {BuildVoid & BuildVoidWithProps & BuildLiteral & BuildLiteralWithProps & BuildParent & BuildParentWithProps}\n */ (\n /**\n * @param {string} type Type of node\n * @param {Props|ChildrenOrValue} [props] Additional properties for node (or `children` or `value`)\n * @param {ChildrenOrValue} [value] `children` or `value` of node\n * @returns {Node}\n */\n function (type, props, value) {\n /** @type {Node} */\n var node = {type: String(type)}\n\n if (\n (value === undefined || value === null) &&\n (typeof props === 'string' || Array.isArray(props))\n ) {\n value = props\n } else {\n Object.assign(node, props)\n }\n\n if (Array.isArray(value)) {\n node.children = value\n } else if (value !== undefined && value !== null) {\n node.value = String(value)\n }\n\n return node\n }\n)\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n *\n * @typedef {string} Type\n * @typedef {Object<string, unknown>} Props\n *\n * @typedef {null|undefined|Type|Props|TestFunctionAnything|Array.<Type|Props|TestFunctionAnything>} Test\n */\n\n/**\n * Check if a node passes a test\n *\n * @callback TestFunctionAnything\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean|void}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} X\n * @callback TestFunctionPredicate\n * @param {Node} node\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is X}\n */\n\n/**\n * @callback AssertAnything\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {boolean}\n */\n\n/**\n * Check if a node passes a certain node test\n *\n * @template {Node} Y\n * @callback AssertPredicate\n * @param {unknown} [node]\n * @param {number|null|undefined} [index]\n * @param {Parent|null|undefined} [parent]\n * @returns {node is Y}\n */\n\nexport const is =\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @type {(\n * (<T extends Node>(node: unknown, test: T['type']|Partial<T>|TestFunctionPredicate<T>|Array.<T['type']|Partial<T>|TestFunctionPredicate<T>>, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => node is T) &\n * ((node?: unknown, test?: Test, index?: number|null|undefined, parent?: Parent|null|undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * Check if a node passes a test.\n * When a `parent` node is known the `index` of node should also be given.\n *\n * @param {unknown} [node] Node to check\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return node.type === test}`.\n * When `function` checks if function passed the node is true.\n * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * When `array`, checks any one of the subtests pass.\n * @param {number|null|undefined} [index] Position of `node` in `parent`\n * @param {Parent|null|undefined} [parent] Parent of `node`\n * @param {unknown} [context] Context object to invoke `test` with\n * @returns {boolean} Whether test passed and `node` is a `Node` (object with `type` set to non-empty `string`).\n */\n // eslint-disable-next-line max-params\n function is(node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n // @ts-expect-error Looks like a node.\n return node && node.type && typeof node.type === 'string'\n ? Boolean(check.call(context, node, index, parent))\n : false\n }\n )\n\nexport const convert =\n /**\n * @type {(\n * (<T extends Node>(test: T['type']|Partial<T>|TestFunctionPredicate<T>) => AssertPredicate<T>) &\n * ((test?: Test) => AssertAnything)\n * )}\n */\n (\n /**\n * Generate an assertion from a check.\n * @param {Test} [test]\n * When nullish, checks if `node` is a `Node`.\n * When `string`, works like passing `function (node) {return node.type === test}`.\n * When `function` checks if function passed the node is true.\n * When `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * When `array`, checks any one of the subtests pass.\n * @returns {AssertAnything}\n */\n function (test) {\n if (test === undefined || 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 Array.isArray(test) ? anyFactory(test) : propsFactory(test)\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n/**\n * @param {Array.<Type|Props|TestFunctionAnything>} tests\n * @returns {AssertAnything}\n */\nfunction anyFactory(tests) {\n /** @type {Array.<AssertAnything>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @param {unknown[]} parameters\n * @returns {boolean}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].call(this, ...parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Utility to assert each property in `test` is represented in `node`, and each\n * values are strictly equal.\n *\n * @param {Props} check\n * @returns {AssertAnything}\n */\nfunction propsFactory(check) {\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n /** @type {string} */\n let key\n\n for (key in check) {\n // @ts-expect-error: hush, it sure works as an index.\n if (node[key] !== check[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n *\n * @param {Type} check\n * @returns {AssertAnything}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Utility to convert a string into a function which checks a given node’s type\n * for said string.\n * @param {TestFunctionAnything} check\n * @returns {AssertAnything}\n */\nfunction castFactory(check) {\n return assertion\n\n /**\n * @this {unknown}\n * @param {Array.<unknown>} parameters\n * @returns {boolean}\n */\n function assertion(...parameters) {\n // @ts-expect-error: spreading is fine.\n return Boolean(check.call(this, ...parameters))\n }\n}\n\n// Utility to return true.\nfunction ok() {\n return true\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('./complex-types.js').Action} Action\n * @typedef {import('./complex-types.js').Index} Index\n * @typedef {import('./complex-types.js').ActionTuple} ActionTuple\n * @typedef {import('./complex-types.js').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from './color.js'\n\n/**\n * Continue traversing as normal\n */\nexport const CONTINUE = true\n/**\n * Do not traverse this node’s children\n */\nexport const SKIP = 'skip'\n/**\n * Stop traversing immediately\n */\nexport const EXIT = false\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n * Tree to walk\n * @param [test]\n * `unist-util-is`-compatible test\n * @param visitor\n * Function called for nodes that pass `test`.\n * @param [reverse=false]\n * Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visitParents =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor<Tree, Check>, reverse?: boolean) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: import('./complex-types.js').BuildVisitor<Tree>, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types.js').Visitor<Node>} visitor\n * @param {boolean} [reverse=false]\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n test = null\n }\n\n const is = convert(test)\n const step = reverse ? -1 : 1\n\n factory(tree, null, [])()\n\n /**\n * @param {Node} node\n * @param {number?} index\n * @param {Array<Parent>} parents\n */\n function factory(node, index, parents) {\n /** @type {Record<string, unknown>} */\n // @ts-expect-error: hush\n const value = typeof node === 'object' && node !== null ? node : {}\n /** @type {string|undefined} */\n let 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 Object.defineProperty(visit, 'name', {\n value:\n 'node (' +\n color(value.type + (name ? '<' + name + '>' : '')) +\n ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {ActionTuple} */\n let result = []\n /** @type {ActionTuple} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<Parent>} */\n let grandparents\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 // @ts-expect-error looks like a parent.\n if (node.children && result[0] !== SKIP) {\n // @ts-expect-error looks like a parent.\n offset = (reverse ? node.children.length : -1) + step\n // @ts-expect-error looks like a parent.\n grandparents = parents.concat(node)\n\n // @ts-expect-error looks like a parent.\n while (offset > -1 && offset < node.children.length) {\n // @ts-expect-error looks like a parent.\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 )\n\n/**\n * @param {VisitorResult} value\n * @returns {ActionTuple}\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return [value]\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n * @typedef {import('unist-util-is').Test} Test\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n * @typedef {import('./complex-types.js').Visitor} Visitor\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\n/**\n * Visit children of tree which pass test.\n *\n * @param tree\n * Tree to walk\n * @param [test]\n * `unist-util-is`-compatible test\n * @param visitor\n * Function called for nodes that pass `test`.\n * @param reverse\n * Traverse in reverse preorder (NRL) instead of preorder (NLR) (default).\n */\nexport const visit =\n /**\n * @type {(\n * (<Tree extends Node, Check extends Test>(tree: Tree, test: Check, visitor: import('./complex-types.js').BuildVisitor<Tree, Check>, reverse?: boolean) => void) &\n * (<Tree extends Node>(tree: Tree, visitor: import('./complex-types.js').BuildVisitor<Tree>, reverse?: boolean) => void)\n * )}\n */\n (\n /**\n * @param {Node} tree\n * @param {Test} test\n * @param {import('./complex-types.js').Visitor} visitor\n * @param {boolean} [reverse]\n */\n function (tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {Node} node\n * @param {Array<Parent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n return visitor(\n node,\n parent ? parent.children.indexOf(node) : null,\n parent\n )\n }\n }\n )\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n","/**\n * @typedef {import('unist').Position} Position\n * @typedef {import('unist').Node} Node\n * @typedef {Record<string, unknown> & {type: string, position?: PositionLike|undefined}} NodeLike\n * @typedef {import('unist').Point} Point\n *\n * @typedef {Partial<Point>} PointLike\n *\n * @typedef PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n */\n\nexport const pointStart = point('start')\nexport const pointEnd = point('end')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {NodeLike|Node} [node]\n * @returns {Position}\n */\nexport function position(node) {\n return {start: pointStart(node), end: pointEnd(node)}\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'start'|'end'} type\n */\nfunction point(type) {\n return point\n\n /**\n * Get the positional info of `node`.\n *\n * @param {NodeLike|Node} [node]\n * @returns {Point}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n return {\n line: point.line || null,\n column: point.column || null,\n offset: point.offset > -1 ? point.offset : null\n }\n }\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Content} Node\n * @typedef {import('mdast').Definition} Definition\n */\n\nimport {visit} from 'unist-util-visit'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Find definitions in `node`.\n * Uses CommonMark precedence, which means that earlier definitions are\n * preferred over duplicate later definitions.\n *\n * @param {Node} node\n */\nexport function definitions(node) {\n /** @type {Record<string, Definition>} */\n const cache = Object.create(null)\n\n if (!node || !node.type) {\n throw new Error('mdast-util-definitions expected node')\n }\n\n visit(node, 'definition', (definition) => {\n const id = clean(definition.identifier)\n if (id && !own.call(cache, id)) {\n cache[id] = definition\n }\n })\n\n return definition\n\n /**\n * Get a node from the bound definition cache.\n *\n * @param {string} identifier\n * @returns {Definition|null}\n */\n function definition(identifier) {\n const id = clean(identifier)\n return id && own.call(cache, id) ? cache[id] : null\n }\n}\n\n/**\n * @param {string} [value]\n * @returns {string}\n */\nfunction clean(value) {\n return String(value || '').toUpperCase()\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('./index.js').H} H\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Transform an unknown node.\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction unknown(h, node) {\n const data = node.data || {}\n\n if (\n 'value' in node &&\n !(\n own.call(data, 'hName') ||\n own.call(data, 'hProperties') ||\n own.call(data, 'hChildren')\n )\n ) {\n return h.augment(node, u('text', node.value))\n }\n\n return h(node, 'div', all(h, node))\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nexport function one(h, node, parent) {\n const type = node && node.type\n /** @type {Handler} */\n let fn\n\n // Fail on non-nodes.\n if (!type) {\n throw new Error('Expected node, got `' + node + '`')\n }\n\n if (own.call(h.handlers, type)) {\n fn = h.handlers[type]\n } else if (h.passThrough && h.passThrough.includes(type)) {\n fn = returnNode\n } else {\n fn = h.unknownHandler\n }\n\n return (typeof fn === 'function' ? fn : unknown)(h, node, parent)\n}\n\n/**\n * @type {Handler}\n * @param {MdastNode} node\n */\nfunction returnNode(h, node) {\n // @ts-expect-error: Pass through custom node.\n return 'children' in node ? {...node, children: all(h, node)} : node\n}\n\n/**\n * @param {H} h\n * @param {MdastNode} parent\n */\nexport function all(h, parent) {\n /** @type {Array<Content>} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n\n while (++index < nodes.length) {\n const result = one(h, nodes[index], parent)\n\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = result.value.replace(/^\\s+/, '')\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = head.value.replace(/^\\s+/, '')\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n}\n","const characterReferences = {'\"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'}\n\n/**\n * Encode only the dangerous HTML characters.\n *\n * This ensures that certain characters which have special meaning in HTML are\n * dealt with.\n * Technically, we can skip `>` and `\"` in many cases, but CM includes them.\n *\n * @param {string} value\n * @returns {string}\n */\nexport function encode(value) {\n return value.replace(/[\"&<>]/g, replace)\n\n /**\n * @param {string} value\n * @returns {string}\n */\n function replace(value) {\n // @ts-expect-error Hush, it’s fine.\n return '&' + characterReferences[value] + ';'\n }\n}\n","import {asciiAlphanumeric} from 'micromark-util-character'\nimport {encode} from 'micromark-util-encode'\n\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri` below).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * Then, a regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`,\n * or `/^https?$/i` for `img[src]`.\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string|undefined} url\n * @param {RegExp} [protocol]\n * @returns {string}\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''))\n\n if (!protocol) {\n return value\n }\n\n const colon = value.indexOf(':')\n const questionMark = value.indexOf('?')\n const numberSign = value.indexOf('#')\n const slash = value.indexOf('/')\n\n if (\n // If there is no protocol, it’s relative.\n colon < 0 || // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n (slash > -1 && colon > slash) ||\n (questionMark > -1 && colon > questionMark) ||\n (numberSign > -1 && colon > numberSign) || // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))\n ) {\n return value\n }\n\n return ''\n}\n/**\n * Normalize a URL (such as used in definitions).\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * @returns {string}\n */\n\nfunction normalizeUri(value) {\n /** @type {string[]} */\n const result = []\n let index = -1\n let start = 0\n let skip = 0\n\n while (++index < value.length) {\n const code = value.charCodeAt(index)\n /** @type {string} */\n\n let replace = '' // A correct percent encoded value.\n\n if (\n code === 37 &&\n asciiAlphanumeric(value.charCodeAt(index + 1)) &&\n asciiAlphanumeric(value.charCodeAt(index + 2))\n ) {\n skip = 2\n } // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code)\n }\n } // Astral.\n else if (code > 55295 && code < 57344) {\n const next = value.charCodeAt(index + 1) // A correct surrogate pair.\n\n if (code < 56320 && next > 56319 && next < 57344) {\n replace = String.fromCharCode(code, next)\n skip = 1\n } // Lone surrogate.\n else {\n replace = '\\uFFFD'\n }\n } // Unicode.\n else {\n replace = String.fromCharCode(code)\n }\n\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace))\n start = index + skip + 1\n replace = ''\n }\n\n if (skip) {\n index += skip\n skip = 0\n }\n }\n\n return result.join('') + value.slice(start)\n}\n","/**\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Wrap `nodes` with line feeds between each entry.\n * Optionally adds line feeds at the start and end.\n *\n * @param {Array<Content>} nodes\n * @param {boolean} [loose=false]\n * @returns {Array<Content>}\n */\nexport function wrap(nodes, loose) {\n /** @type {Array<Content>} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push(u('text', '\\n'))\n }\n\n while (++index < nodes.length) {\n if (index) result.push(u('text', '\\n'))\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push(u('text', '\\n'))\n }\n\n return result\n}\n","/**\n * @typedef {import('mdast').FootnoteReference} FootnoteReference\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {sanitizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {FootnoteReference} node\n */\nexport function footnoteReference(h, node) {\n const id = String(node.identifier)\n const safeId = sanitizeUri(id.toLowerCase())\n const index = h.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n if (index === -1) {\n h.footnoteOrder.push(id)\n h.footnoteCounts[id] = 1\n counter = h.footnoteOrder.length\n } else {\n h.footnoteCounts[id]++\n counter = index + 1\n }\n\n const reuseCounter = h.footnoteCounts[id]\n\n return h(node, 'sup', [\n h(\n node.position,\n 'a',\n {\n href: '#' + h.clobberPrefix + 'fn-' + safeId,\n id:\n h.clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: 'footnote-label'\n },\n [u('text', String(counter))]\n )\n ])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('./index.js').Handler} Handler\n * @typedef {import('./index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @type {Handler}\n * @param {ImageReference|LinkReference} node\n * @returns {Content|Array<Content>}\n */\nexport function revert(h, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return u('text', '![' + node.alt + suffix)\n }\n\n const contents = all(h, node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift(u('text', '['))\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push(u('text', suffix))\n }\n\n return contents\n}\n","/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {ListItem} node\n * @param {List} parent\n */\nexport function listItem(h, node, parent) {\n const result = all(h, node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const props = {}\n /** @type {Array<Content>} */\n const wrapped = []\n\n if (typeof node.checked === 'boolean') {\n /** @type {Element} */\n let paragraph\n\n if (\n result[0] &&\n result[0].type === 'element' &&\n result[0].tagName === 'p'\n ) {\n paragraph = result[0]\n } else {\n paragraph = h(null, 'p', [])\n result.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift(u('text', ' '))\n }\n\n paragraph.children.unshift(\n h(null, 'input', {\n type: 'checkbox',\n checked: node.checked,\n disabled: true\n })\n )\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n props.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < result.length) {\n const child = result[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n wrapped.push(u('text', '\\n'))\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n wrapped.push(...child.children)\n } else {\n wrapped.push(child)\n }\n }\n\n const tail = result[result.length - 1]\n\n // Add a final eol.\n if (tail && (loose || !('tagName' in tail) || tail.tagName !== 'p')) {\n wrapped.push(u('text', '\\n'))\n }\n\n return h(node, 'li', props, wrapped)\n}\n\n/**\n * @param {List} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = node.spread\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n\n return Boolean(loose)\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === undefined || spread === null\n ? node.children.length > 1\n : spread\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array<string>} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {footnote} from './footnote.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n footnote,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n root,\n strong,\n table,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return null\n}\n","/**\n * @typedef {import('mdast').Blockquote} Blockquote\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Blockquote} node\n */\nexport function blockquote(h, node) {\n return h(node, 'blockquote', wrap(all(h, node), true))\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Text} Text\n * @typedef {import('mdast').Break} Break\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Break} node\n * @returns {Array<Element|Text>}\n */\nexport function hardBreak(h, node) {\n return [h(node, 'br'), u('text', '\\n')]\n}\n","/**\n * @typedef {import('mdast').Code} Code\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Code} node\n */\nexport function code(h, node) {\n const value = node.value ? node.value + '\\n' : ''\n // To do: next major, use `node.lang` w/o regex, the splitting’s been going\n // on for years in remark now.\n const lang = node.lang && node.lang.match(/^[^ \\t]+(?=[ \\t]|$)/)\n /** @type {Properties} */\n const props = {}\n\n if (lang) {\n props.className = ['language-' + lang]\n }\n\n const code = h(node, 'code', props, [u('text', value)])\n\n if (node.meta) {\n code.data = {meta: node.meta}\n }\n\n return h(node.position, 'pre', [code])\n}\n","/**\n * @typedef {import('mdast').Delete} Delete\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Delete} node\n */\nexport function strikethrough(h, node) {\n return h(node, 'del', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Emphasis} Emphasis\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Emphasis} node\n */\nexport function emphasis(h, node) {\n return h(node, 'em', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Footnote} Footnote\n * @typedef {import('../index.js').Handler} Handler\n *\n * @todo\n * `footnote` (or “inline noteâ€) are a pandoc footnotes feature (`^[a note]`)\n * that does not exist in GFM.\n * We still have support for it, so that things remain working with\n * `micromark-extension-footnote` and `mdast-util-footnote`, but in the future\n * we might be able to remove it?\n */\n\nimport {footnoteReference} from './footnote-reference.js'\n\n/**\n * @type {Handler}\n * @param {Footnote} node\n */\nexport function footnote(h, node) {\n const footnoteById = h.footnoteById\n let no = 1\n\n while (no in footnoteById) no++\n\n const identifier = String(no)\n\n footnoteById[identifier] = {\n type: 'footnoteDefinition',\n identifier,\n children: [{type: 'paragraph', children: node.children}],\n position: node.position\n }\n\n return footnoteReference(h, {\n type: 'footnoteReference',\n identifier,\n position: node.position\n })\n}\n","/**\n * @typedef {import('mdast').Heading} Heading\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Heading} node\n */\nexport function heading(h, node) {\n return h(node, 'h' + node.depth, all(h, node))\n}\n","/**\n * @typedef {import('mdast').HTML} HTML\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * Return either a `raw` node in dangerous mode, otherwise nothing.\n *\n * @type {Handler}\n * @param {HTML} node\n */\nexport function html(h, node) {\n return h.dangerous ? h.augment(node, u('raw', node.value)) : null\n}\n","/**\n * @typedef {import('mdast').ImageReference} ImageReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {revert} from '../revert.js'\n\n/**\n * @type {Handler}\n * @param {ImageReference} node\n */\nexport function imageReference(h, node) {\n const def = h.definition(node.identifier)\n\n if (!def) {\n return revert(h, node)\n }\n\n /** @type {Properties} */\n const props = {src: normalize(def.url || ''), alt: node.alt}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').Image} Image\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\n\n/**\n * @type {Handler}\n * @param {Image} node\n */\nexport function image(h, node) {\n /** @type {Properties} */\n const props = {src: normalize(node.url), alt: node.alt}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'img', props)\n}\n","/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {InlineCode} node\n */\nexport function inlineCode(h, node) {\n return h(node, 'code', [u('text', node.value.replace(/\\r?\\n|\\r/g, ' '))])\n}\n","/**\n * @typedef {import('mdast').LinkReference} LinkReference\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {revert} from '../revert.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {LinkReference} node\n */\nexport function linkReference(h, node) {\n const def = h.definition(node.identifier)\n\n if (!def) {\n return revert(h, node)\n }\n\n /** @type {Properties} */\n const props = {href: normalize(def.url || '')}\n\n if (def.title !== null && def.title !== undefined) {\n props.title = def.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').Link} Link\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport normalize from 'mdurl/encode.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Link} node\n */\nexport function link(h, node) {\n /** @type {Properties} */\n const props = {href: normalize(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n props.title = node.title\n }\n\n return h(node, 'a', props, all(h, node))\n}\n","/**\n * @typedef {import('mdast').List} List\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {List} node\n * @returns {Element}\n */\nexport function list(h, node) {\n /** @type {Properties} */\n const props = {}\n const name = node.ordered ? 'ol' : 'ul'\n const items = all(h, node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n props.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < items.length) {\n const item = items[index]\n\n if (\n item.type === 'element' &&\n item.tagName === 'li' &&\n item.properties &&\n Array.isArray(item.properties.className) &&\n item.properties.className.includes('task-list-item')\n ) {\n props.className = ['contains-task-list']\n break\n }\n }\n\n return h(node, name, props, wrap(items, true))\n}\n","/**\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Paragraph} node\n */\nexport function paragraph(h, node) {\n return h(node, 'p', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {u} from 'unist-builder'\nimport {all} from '../traverse.js'\nimport {wrap} from '../wrap.js'\n\n/**\n * @type {Handler}\n * @param {Root} node\n */\nexport function root(h, node) {\n // @ts-expect-error `root`s are also fine.\n return h.augment(node, u('root', wrap(all(h, node))))\n}\n","/**\n * @typedef {import('mdast').Strong} Strong\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Strong} node\n */\nexport function strong(h, node) {\n return h(node, 'strong', all(h, node))\n}\n","/**\n * @typedef {import('mdast').Table} Table\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n * @typedef {import('../index.js').Content} Content\n */\n\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {wrap} from '../wrap.js'\nimport {all} from '../traverse.js'\n\n/**\n * @type {Handler}\n * @param {Table} node\n */\nexport function table(h, node) {\n const rows = node.children\n let index = -1\n const align = node.align || []\n /** @type {Array<Element>} */\n const result = []\n\n while (++index < rows.length) {\n const row = rows[index].children\n const name = index === 0 ? 'th' : 'td'\n /** @type {Array<Content>} */\n const out = []\n let cellIndex = -1\n const length = node.align ? align.length : row.length\n\n while (++cellIndex < length) {\n const cell = row[cellIndex]\n out.push(\n h(cell, name, {align: align[cellIndex]}, cell ? all(h, cell) : [])\n )\n }\n\n result[index] = h(rows[index], 'tr', wrap(out, true))\n }\n\n return h(\n node,\n 'table',\n wrap(\n [h(result[0].position, 'thead', wrap([result[0]], true))].concat(\n result[1]\n ? h(\n {\n start: pointStart(result[1]),\n end: pointEnd(result[result.length - 1])\n },\n 'tbody',\n wrap(result.slice(1), true)\n )\n : []\n ),\n true\n )\n )\n}\n","/**\n * @typedef {import('mdast').Text} Text\n * @typedef {import('../index.js').Handler} Handler\n */\n\nimport {trimLines} from 'trim-lines'\nimport {u} from 'unist-builder'\n\n/**\n * @type {Handler}\n * @param {Text} node\n */\nexport function text(h, node) {\n return h.augment(node, u('text', trimLines(String(node.value))))\n}\n","/**\n * @typedef {import('mdast').ThematicBreak} ThematicBreak\n * @typedef {import('hast').Element} Element\n * @typedef {import('../index.js').Handler} Handler\n */\n\n/**\n * @type {Handler}\n * @param {ThematicBreak} [node]\n * @returns {Element}\n */\nexport function thematicBreak(h, node) {\n return h(node, 'hr')\n}\n","/**\n * @typedef {import('mdast').Root|import('mdast').Parent['children'][number]} MdastNode\n * @typedef {import('hast').Root|import('hast').Parent['children'][number]} HastNode\n * @typedef {import('mdast').Parent} Parent\n * @typedef {import('mdast').Definition} Definition\n * @typedef {import('mdast').FootnoteDefinition} FootnoteDefinition\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} Content\n * @typedef {import('unist-util-position').PositionLike} PositionLike\n *\n * @typedef EmbeddedHastFields\n * @property {string} [hName]\n * Defines the tag name of an element.\n * @property {Properties} [hProperties]\n * Defines the properties of an element.\n * @property {Array<Content>} [hChildren]\n * Defines the (hast) children of an element.\n *\n * @typedef {Record<string, unknown> & EmbeddedHastFields} Data\n * unist data with embedded hast fields.\n *\n * @typedef {MdastNode & {data?: Data}} NodeWithData\n * unist node with embedded hast data.\n *\n * @callback Handler\n * Handle a node.\n * @param {H} h\n * Handle context.\n * @param {any} node\n * mdast node to handle.\n * @param {Parent|null} parent\n * Parent of `node`.\n * @returns {Content|Array<Content>|null|undefined}\n * hast node.\n *\n * @callback HFunctionProps\n * @param {MdastNode|PositionLike|null|undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {Properties} props\n * Properties.\n * @param {Array<Content>?} [children]\n * hast content.\n * @returns {Element}\n * Compiled element.\n *\n * @callback HFunctionNoProps\n * @param {MdastNode|PositionLike|null|undefined} node\n * mdast node or unist position.\n * @param {string} tagName\n * HTML tag name.\n * @param {Array<Content>?} [children]\n * hast content\n * @returns {Element}\n * Compiled element.\n *\n * @typedef HFields\n * @property {boolean} dangerous\n * Whether HTML is allowed.\n * @property {string} clobberPrefix\n * Prefix to use to prevent DOM clobbering.\n * @property {string} footnoteLabel\n * Label to use to introduce the footnote section.\n * @property {string} footnoteLabelTagName\n * HTML used for the footnote label.\n * @property {Properties} footnoteLabelProperties\n * Properties on the HTML tag used for the footnote label.\n * @property {string} footnoteBackLabel\n * Label to use to go back to a footnote call from the footnote section.\n * @property {(identifier: string) => Definition|null} definition\n * Definition cache.\n * @property {Record<string, FootnoteDefinition>} footnoteById\n * Footnote cache.\n * @property {Array<string>} footnoteOrder\n * Order in which footnotes occur.\n * @property {Record<string, number>} footnoteCounts\n * Counts the same footnote was used.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {Handler} unknownHandler\n * Handler for any none not in `passThrough` or otherwise handled.\n * @property {(left: NodeWithData|PositionLike|null|undefined, right: Content) => Content} augment\n * Like `h` but lower-level and usable on non-elements.\n * @property {Array<string>} passThrough\n * List of node types to pass through untouched (except for their children).\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean} [allowDangerousHtml=false]\n * Whether to allow `html` nodes and inject them as `raw` HTML.\n * @property {string} [clobberPrefix='user-content-']\n * Prefix to use before the `id` attribute to prevent it from *clobbering*.\n * attributes.\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x)</script>\n * ```\n *\n * Elements by their ID are made available in browsers on the `window` object.\n * Using a prefix prevents this from being a problem.\n * @property {string} [footnoteLabel='Footnotes']\n * Label to use for the footnotes section.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {string} [footnoteLabelTagName='h2']\n * HTML tag to use for the footnote label.\n * Can be changed to match your document structure and play well with your choice of css.\n * @property {Properties} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label.\n * A 'sr-only' class is added by default to hide this from sighted users.\n * Change it to make the label visible, or add classes for other purposes.\n * @property {string} [footnoteBackLabel='Back to content']\n * Label to use from backreferences back to their footnote call.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {Handlers} [handlers]\n * Object mapping mdast nodes to functions handling them\n * @property {Array<string>} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast\n * @property {Handler} [unknownHandler]\n * Handler for all unknown nodes.\n *\n * @typedef {Record<string, Handler>} Handlers\n * Map of node types to handlers\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} H\n * Handle context\n */\n\nimport {u} from 'unist-builder'\nimport {visit} from 'unist-util-visit'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {one} from './traverse.js'\nimport {footer} from './footer.js'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Turn mdast into hast.\n *\n * @param {MdastNode} tree\n * mdast node.\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {H}\n * `h` function.\n */\nfunction factory(tree, options) {\n const settings = options || {}\n const dangerous = settings.allowDangerousHtml || false\n /** @type {Record<string, FootnoteDefinition>} */\n const footnoteById = {}\n\n h.dangerous = dangerous\n h.clobberPrefix =\n settings.clobberPrefix === undefined || settings.clobberPrefix === null\n ? 'user-content-'\n : settings.clobberPrefix\n h.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n h.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n h.footnoteLabelProperties = settings.footnoteLabelProperties || {\n className: ['sr-only']\n }\n h.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n h.definition = definitions(tree)\n h.footnoteById = footnoteById\n /** @type {Array<string>} */\n h.footnoteOrder = []\n /** @type {Record<string, number>} */\n h.footnoteCounts = {}\n h.augment = augment\n h.handlers = {...handlers, ...settings.handlers}\n h.unknownHandler = settings.unknownHandler\n h.passThrough = settings.passThrough\n\n visit(tree, 'footnoteDefinition', (definition) => {\n const id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/8290999/index.js#L26>.\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n })\n\n // @ts-expect-error Hush, it’s fine!\n return h\n\n /**\n * Finalise the created `right`, a hast node, from `left`, an mdast node.\n *\n * @param {(NodeWithData|PositionLike)?} left\n * @param {Content} right\n * @returns {Content}\n */\n function augment(left, right) {\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && 'data' in left && left.data) {\n /** @type {Data} */\n const data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = {...right.properties, ...data.hProperties}\n }\n\n if ('children' in right && right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n if (left) {\n const ctx = 'type' in left ? left : {position: left}\n\n if (!generated(ctx)) {\n // @ts-expect-error: fine.\n right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n }\n }\n\n return right\n }\n\n /**\n * Create an element for `node`.\n *\n * @type {HFunctionProps}\n */\n function h(node, tagName, props, children) {\n if (Array.isArray(props)) {\n children = props\n props = {}\n }\n\n // @ts-expect-error augmenting an element yields an element.\n return augment(node, {\n type: 'element',\n tagName,\n properties: props || {},\n children: children || []\n })\n }\n}\n\n/**\n * Transform `tree` (an mdast node) to a hast node.\n *\n * @param {MdastNode} tree mdast node\n * @param {Options} [options] Configuration\n * @returns {HastNode|null|undefined} hast node\n */\nexport function toHast(tree, options) {\n const h = factory(tree, options)\n const node = one(h, tree, null)\n const foot = footer(h)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push(u('text', '\\n'), foot)\n }\n\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n\nexport {handlers as defaultHandlers} from './handlers/index.js'\n","/**\n * @typedef {Object} PointLike\n * @property {number} [line]\n * @property {number} [column]\n * @property {number} [offset]\n *\n * @typedef {Object} PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n *\n * @typedef {Object} NodeLike\n * @property {PositionLike} [position]\n */\n\n/**\n * Check if `node` is *generated*.\n *\n * @param {NodeLike} [node]\n * @returns {boolean}\n */\nexport function generated(node) {\n return (\n !node ||\n !node.position ||\n !node.position.start ||\n !node.position.start.line ||\n !node.position.start.column ||\n !node.position.end ||\n !node.position.end.line ||\n !node.position.end.column\n )\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('./index.js').H} H\n */\n\nimport {sanitizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\nimport {wrap} from './wrap.js'\n\n/**\n * @param {H} h\n * @returns {Element|null}\n */\nexport function footer(h) {\n let index = -1\n /** @type {Array<ElementContent>} */\n const listItems = []\n\n while (++index < h.footnoteOrder.length) {\n const def = h.footnoteById[h.footnoteOrder[index].toUpperCase()]\n\n if (!def) {\n continue\n }\n\n const content = all(h, def)\n const id = String(def.identifier)\n const safeId = sanitizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array<ElementContent>} */\n const backReferences = []\n\n while (++referenceIndex <= h.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n h.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: h.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: h.clobberPrefix + 'fn-' + safeId},\n children: wrap(content, true)\n }\n\n if (def.position) {\n listItem.position = def.position\n }\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return null\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: h.footnoteLabelTagName,\n properties: {\n ...JSON.parse(JSON.stringify(h.footnoteLabelProperties)),\n id: 'footnote-label'\n },\n children: [u('text', h.footnoteLabel)]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor<any, any, any, any>} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `<MdastRoot, HastRoot>` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record<string, Info>} Properties\n * @typedef {Record<string, string>} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array<keyof types>} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record<string, string>} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record<string, number|null>} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array<string>} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record<string, string>} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // `<object>`. List of URIs to archives\n axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n background: null, // `<body>`. Use CSS `background-image` instead\n bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n border: number, // `<table>`. Use CSS `border-width` instead,\n borderColor: null, // `<table>`. Use CSS `border-color` instead,\n bottomMargin: number, // `<body>`\n cellPadding: null, // `<table>`\n cellSpacing: null, // `<table>`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // `<object>`\n clear: null, // `<br>`. Use CSS `clear` instead\n code: null, // `<object>`\n codeBase: null, // `<object>`\n codeType: null, // `<object>`\n color: null, // `<font>` and `<hr>`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // `<object>`\n event: null, // `<script>`\n face: null, // `<font>`. Use CSS instead\n frame: null, // `<table>`\n frameBorder: null, // `<iframe>`. Use CSS `border` instead\n hSpace: number, // `<img>` and `<object>`\n leftMargin: number, // `<body>`\n link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n lowSrc: null, // `<img>`. Use a `<picture>`\n marginHeight: number, // `<body>`\n marginWidth: number, // `<body>`\n noResize: boolean, // `<frame>`\n noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n noWrap: boolean, // `<td>` and `<th>`\n object: null, // `<applet>`\n profile: null, // `<head>`\n prompt: null, // `<isindex>`\n rev: null, // `<link>`\n rightMargin: number, // `<body>`\n rules: null, // `<table>`\n scheme: null, // `<meta>`\n scrolling: booleanish, // `<frame>`. Use overflow in the child context\n standby: null, // `<object>`\n summary: null, // `<table>`\n text: null, // `<body>`. Use CSS `color` instead\n topMargin: number, // `<body>`\n valueType: null, // `<param>`\n version: null, // `<html>`. Use a doctype.\n vAlign: null, // Several. Use CSS `vertical-align` instead\n vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n vSpace: number, // `<img>` and `<object>`\n\n // Non-standard Properties.\n allowTransparency: null,\n autoCorrect: null,\n autoSave: null,\n disablePictureInPicture: boolean,\n disableRemotePlayback: boolean,\n prefix: null,\n property: null,\n results: number,\n security: null,\n unselectable: null\n }\n})\n","import {\n boolean,\n number,\n spaceSeparated,\n commaSeparated,\n commaOrSpaceSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseSensitiveTransform} from './util/case-sensitive-transform.js'\n\nexport const svg = create({\n space: 'svg',\n attributes: {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n className: 'class',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n crossOrigin: 'crossorigin',\n dataType: 'datatype',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n hrefLang: 'hreflang',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n horizOriginY: 'horiz-origin-y',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n navDown: 'nav-down',\n navDownLeft: 'nav-down-left',\n navDownRight: 'nav-down-right',\n navLeft: 'nav-left',\n navNext: 'nav-next',\n navPrev: 'nav-prev',\n navRight: 'nav-right',\n navUp: 'nav-up',\n navUpLeft: 'nav-up-left',\n navUpRight: 'nav-up-right',\n onAbort: 'onabort',\n onActivate: 'onactivate',\n onAfterPrint: 'onafterprint',\n onBeforePrint: 'onbeforeprint',\n onBegin: 'onbegin',\n onCancel: 'oncancel',\n onCanPlay: 'oncanplay',\n onCanPlayThrough: 'oncanplaythrough',\n onChange: 'onchange',\n onClick: 'onclick',\n onClose: 'onclose',\n onCopy: 'oncopy',\n onCueChange: 'oncuechange',\n onCut: 'oncut',\n onDblClick: 'ondblclick',\n onDrag: 'ondrag',\n onDragEnd: 'ondragend',\n onDragEnter: 'ondragenter',\n onDragExit: 'ondragexit',\n onDragLeave: 'ondragleave',\n onDragOver: 'ondragover',\n onDragStart: 'ondragstart',\n onDrop: 'ondrop',\n onDurationChange: 'ondurationchange',\n onEmptied: 'onemptied',\n onEnd: 'onend',\n onEnded: 'onended',\n onError: 'onerror',\n onFocus: 'onfocus',\n onFocusIn: 'onfocusin',\n onFocusOut: 'onfocusout',\n onHashChange: 'onhashchange',\n onInput: 'oninput',\n onInvalid: 'oninvalid',\n onKeyDown: 'onkeydown',\n onKeyPress: 'onkeypress',\n onKeyUp: 'onkeyup',\n onLoad: 'onload',\n onLoadedData: 'onloadeddata',\n onLoadedMetadata: 'onloadedmetadata',\n onLoadStart: 'onloadstart',\n onMessage: 'onmessage',\n onMouseDown: 'onmousedown',\n onMouseEnter: 'onmouseenter',\n onMouseLeave: 'onmouseleave',\n onMouseMove: 'onmousemove',\n onMouseOut: 'onmouseout',\n onMouseOver: 'onmouseover',\n onMouseUp: 'onmouseup',\n onMouseWheel: 'onmousewheel',\n onOffline: 'onoffline',\n onOnline: 'ononline',\n onPageHide: 'onpagehide',\n onPageShow: 'onpageshow',\n onPaste: 'onpaste',\n onPause: 'onpause',\n onPlay: 'onplay',\n onPlaying: 'onplaying',\n onPopState: 'onpopstate',\n onProgress: 'onprogress',\n onRateChange: 'onratechange',\n onRepeat: 'onrepeat',\n onReset: 'onreset',\n onResize: 'onresize',\n onScroll: 'onscroll',\n onSeeked: 'onseeked',\n onSeeking: 'onseeking',\n onSelect: 'onselect',\n onShow: 'onshow',\n onStalled: 'onstalled',\n onStorage: 'onstorage',\n onSubmit: 'onsubmit',\n onSuspend: 'onsuspend',\n onTimeUpdate: 'ontimeupdate',\n onToggle: 'ontoggle',\n onUnload: 'onunload',\n onVolumeChange: 'onvolumechange',\n onWaiting: 'onwaiting',\n onZoom: 'onzoom',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n referrerPolicy: 'referrerpolicy',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDashArray: 'stroke-dasharray',\n strokeDashOffset: 'stroke-dashoffset',\n strokeLineCap: 'stroke-linecap',\n strokeLineJoin: 'stroke-linejoin',\n strokeMiterLimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n tabIndex: 'tabindex',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n typeOf: 'typeof',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n // These were camelcased in Tiny. Now lowercased in SVG 2\n playbackOrder: 'playbackorder',\n timelineBegin: 'timelinebegin'\n },\n transform: caseSensitiveTransform,\n properties: {\n about: commaOrSpaceSeparated,\n accentHeight: number,\n accumulate: null,\n additive: null,\n alignmentBaseline: null,\n alphabetic: number,\n amplitude: number,\n arabicForm: null,\n ascent: number,\n attributeName: null,\n attributeType: null,\n azimuth: number,\n bandwidth: null,\n baselineShift: null,\n baseFrequency: null,\n baseProfile: null,\n bbox: null,\n begin: null,\n bias: number,\n by: null,\n calcMode: null,\n capHeight: number,\n className: spaceSeparated,\n clip: null,\n clipPath: null,\n clipPathUnits: null,\n clipRule: null,\n color: null,\n colorInterpolation: null,\n colorInterpolationFilters: null,\n colorProfile: null,\n colorRendering: null,\n content: null,\n contentScriptType: null,\n contentStyleType: null,\n crossOrigin: null,\n cursor: null,\n cx: null,\n cy: null,\n d: null,\n dataType: null,\n defaultAction: null,\n descent: number,\n diffuseConstant: number,\n direction: null,\n display: null,\n dur: null,\n divisor: number,\n dominantBaseline: null,\n download: boolean,\n dx: null,\n dy: null,\n edgeMode: null,\n editable: null,\n elevation: number,\n enableBackground: null,\n end: null,\n event: null,\n exponent: number,\n externalResourcesRequired: null,\n fill: null,\n fillOpacity: number,\n fillRule: null,\n filter: null,\n filterRes: null,\n filterUnits: null,\n floodColor: null,\n floodOpacity: null,\n focusable: null,\n focusHighlight: null,\n fontFamily: null,\n fontSize: null,\n fontSizeAdjust: null,\n fontStretch: null,\n fontStyle: null,\n fontVariant: null,\n fontWeight: null,\n format: null,\n fr: null,\n from: null,\n fx: null,\n fy: null,\n g1: commaSeparated,\n g2: commaSeparated,\n glyphName: commaSeparated,\n glyphOrientationHorizontal: null,\n glyphOrientationVertical: null,\n glyphRef: null,\n gradientTransform: null,\n gradientUnits: null,\n handler: null,\n hanging: number,\n hatchContentUnits: null,\n hatchUnits: null,\n height: null,\n href: null,\n hrefLang: null,\n horizAdvX: number,\n horizOriginX: number,\n horizOriginY: number,\n id: null,\n ideographic: number,\n imageRendering: null,\n initialVisibility: null,\n in: null,\n in2: null,\n intercept: number,\n k: number,\n k1: number,\n k2: number,\n k3: number,\n k4: number,\n kernelMatrix: commaOrSpaceSeparated,\n kernelUnitLength: null,\n keyPoints: null, // SEMI_COLON_SEPARATED\n keySplines: null, // SEMI_COLON_SEPARATED\n keyTimes: null, // SEMI_COLON_SEPARATED\n kerning: null,\n lang: null,\n lengthAdjust: null,\n letterSpacing: null,\n lightingColor: null,\n limitingConeAngle: number,\n local: null,\n markerEnd: null,\n markerMid: null,\n markerStart: null,\n markerHeight: null,\n markerUnits: null,\n markerWidth: null,\n mask: null,\n maskContentUnits: null,\n maskUnits: null,\n mathematical: null,\n max: null,\n media: null,\n mediaCharacterEncoding: null,\n mediaContentEncodings: null,\n mediaSize: number,\n mediaTime: null,\n method: null,\n min: null,\n mode: null,\n name: null,\n navDown: null,\n navDownLeft: null,\n navDownRight: null,\n navLeft: null,\n navNext: null,\n navPrev: null,\n navRight: null,\n navUp: null,\n navUpLeft: null,\n navUpRight: null,\n numOctaves: null,\n observer: null,\n offset: null,\n onAbort: null,\n onActivate: null,\n onAfterPrint: null,\n onBeforePrint: null,\n onBegin: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnd: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFocusIn: null,\n onFocusOut: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadStart: null,\n onMessage: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onMouseWheel: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRepeat: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onShow: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onZoom: null,\n opacity: null,\n operator: null,\n order: null,\n orient: null,\n orientation: null,\n origin: null,\n overflow: null,\n overlay: null,\n overlinePosition: number,\n overlineThickness: number,\n paintOrder: null,\n panose1: null,\n path: null,\n pathLength: number,\n patternContentUnits: null,\n patternTransform: null,\n patternUnits: null,\n phase: null,\n ping: spaceSeparated,\n pitch: null,\n playbackOrder: null,\n pointerEvents: null,\n points: null,\n pointsAtX: number,\n pointsAtY: number,\n pointsAtZ: number,\n preserveAlpha: null,\n preserveAspectRatio: null,\n primitiveUnits: null,\n propagate: null,\n property: commaOrSpaceSeparated,\n r: null,\n radius: null,\n referrerPolicy: null,\n refX: null,\n refY: null,\n rel: commaOrSpaceSeparated,\n rev: commaOrSpaceSeparated,\n renderingIntent: null,\n repeatCount: null,\n repeatDur: null,\n requiredExtensions: commaOrSpaceSeparated,\n requiredFeatures: commaOrSpaceSeparated,\n requiredFonts: commaOrSpaceSeparated,\n requiredFormats: commaOrSpaceSeparated,\n resource: null,\n restart: null,\n result: null,\n rotate: null,\n rx: null,\n ry: null,\n scale: null,\n seed: null,\n shapeRendering: null,\n side: null,\n slope: null,\n snapshotTime: null,\n specularConstant: number,\n specularExponent: number,\n spreadMethod: null,\n spacing: null,\n startOffset: null,\n stdDeviation: null,\n stemh: null,\n stemv: null,\n stitchTiles: null,\n stopColor: null,\n stopOpacity: null,\n strikethroughPosition: number,\n strikethroughThickness: number,\n string: null,\n stroke: null,\n strokeDashArray: commaOrSpaceSeparated,\n strokeDashOffset: null,\n strokeLineCap: null,\n strokeLineJoin: null,\n strokeMiterLimit: number,\n strokeOpacity: number,\n strokeWidth: null,\n style: null,\n surfaceScale: number,\n syncBehavior: null,\n syncBehaviorDefault: null,\n syncMaster: null,\n syncTolerance: null,\n syncToleranceDefault: null,\n systemLanguage: commaOrSpaceSeparated,\n tabIndex: number,\n tableValues: null,\n target: null,\n targetX: number,\n targetY: number,\n textAnchor: null,\n textDecoration: null,\n textRendering: null,\n textLength: null,\n timelineBegin: null,\n title: null,\n transformBehavior: null,\n type: null,\n typeOf: commaOrSpaceSeparated,\n to: null,\n transform: null,\n u1: null,\n u2: null,\n underlinePosition: number,\n underlineThickness: number,\n unicode: null,\n unicodeBidi: null,\n unicodeRange: null,\n unitsPerEm: number,\n values: null,\n vAlphabetic: number,\n vMathematical: number,\n vectorEffect: null,\n vHanging: number,\n vIdeographic: number,\n version: null,\n vertAdvY: number,\n vertOriginX: number,\n vertOriginY: number,\n viewBox: null,\n viewTarget: null,\n visibility: null,\n width: null,\n widths: null,\n wordSpacing: null,\n writingMode: null,\n x: null,\n x1: null,\n x2: null,\n xChannelSelector: null,\n xHeight: number,\n y: null,\n y1: null,\n y2: null,\n yChannelSelector: null,\n z: null,\n zoomAndPan: null\n }\n})\n","/**\n * @typedef {import('./lib/util/info.js').Info} Info\n * @typedef {import('./lib/util/schema.js').Schema} Schema\n */\n\nimport {merge} from './lib/util/merge.js'\nimport {xlink} from './lib/xlink.js'\nimport {xml} from './lib/xml.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\n\nexport {find} from './lib/find.js'\nexport {hastToReact} from './lib/hast-to-react.js'\nexport {normalize} from './lib/normalize.js'\nexport const html = merge([xml, xlink, xmlns, aria, htmlBase], 'html')\nexport const svg = merge([xml, xlink, xmlns, aria, svgBase], 'svg')\n","import {visit} from 'unist-util-visit'\n\n/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n *\n * @callback AllowElement\n * @param {Element} element\n * @param {number} index\n * @param {Element|Root} parent\n * @returns {boolean|undefined}\n *\n * @typedef Options\n * @property {Array<string>} [allowedElements]\n * @property {Array<string>} [disallowedElements=[]]\n * @property {AllowElement} [allowElement]\n * @property {boolean} [unwrapDisallowed=false]\n */\n\n/**\n * @type {import('unified').Plugin<[Options], Root>}\n */\nexport default function rehypeFilter(options) {\n if (options.allowedElements && options.disallowedElements) {\n throw new TypeError(\n 'Only one of `allowedElements` and `disallowedElements` should be defined'\n )\n }\n\n if (\n options.allowedElements ||\n options.disallowedElements ||\n options.allowElement\n ) {\n return (tree) => {\n visit(tree, 'element', (node, index, parent_) => {\n const parent = /** @type {Element|Root} */ (parent_)\n /** @type {boolean|undefined} */\n let remove\n\n if (options.allowedElements) {\n remove = !options.allowedElements.includes(node.tagName)\n } else if (options.disallowedElements) {\n remove = options.disallowedElements.includes(node.tagName)\n }\n\n if (!remove && options.allowElement && typeof index === 'number') {\n remove = !options.allowElement(node, index, parent)\n }\n\n if (remove && typeof index === 'number') {\n if (options.unwrapDisallowed && node.children) {\n parent.children.splice(index, 1, ...node.children)\n } else {\n parent.children.splice(index, 1)\n }\n\n return index\n }\n\n return undefined\n })\n }\n }\n}\n","const protocols = ['http', 'https', 'mailto', 'tel']\n\n/**\n * @param {string} uri\n * @returns {string}\n */\nexport function uriTransformer(uri) {\n const url = (uri || '').trim()\n const first = url.charAt(0)\n\n if (first === '#' || first === '/') {\n return url\n }\n\n const colon = url.indexOf(':')\n if (colon === -1) {\n return url\n }\n\n let index = -1\n\n while (++index < protocols.length) {\n const protocol = protocols[index]\n\n if (\n colon === protocol.length &&\n url.slice(0, protocol.length).toLowerCase() === protocol\n ) {\n return url\n }\n }\n\n index = url.indexOf('?')\n if (index !== -1 && colon > index) {\n return url\n }\n\n index = url.indexOf('#')\n if (index !== -1 && colon > index) {\n return url\n }\n\n // eslint-disable-next-line no-script-url\n return 'javascript:void(0)'\n}\n","/**\n * @param {unknown} thing\n * @returns {boolean}\n */\nexport function whitespace(thing) {\n /** @type {string} */\n var value =\n // @ts-ignore looks like a node.\n thing && typeof thing === 'object' && thing.type === 'text'\n ? // @ts-ignore looks like a text.\n thing.value || ''\n : thing\n\n // HTML whitespace expression.\n // See <https://html.spec.whatwg.org/#space-character>.\n return typeof value === 'string' && value.replace(/[ \\t\\n\\f\\r]/g, '') === ''\n}\n","/**\n * @typedef {import('./util/schema.js').Schema} Schema\n */\n\nimport {normalize} from './normalize.js'\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\n\nconst valid = /^data[-\\w.:]+$/i\nconst dash = /-[a-z]/g\nconst cap = /[A-Z]/g\n\n/**\n * @param {Schema} schema\n * @param {string} value\n * @returns {Info}\n */\nexport function find(schema, value) {\n const normal = normalize(value)\n let prop = value\n let Type = Info\n\n if (normal in schema.normal) {\n return schema.property[schema.normal[normal]]\n }\n\n if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n // Attribute or property.\n if (value.charAt(4) === '-') {\n // Turn it into a property.\n const rest = value.slice(5).replace(dash, camelcase)\n prop = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n } else {\n // Turn it into an attribute.\n const rest = value.slice(4)\n\n if (!dash.test(rest)) {\n let dashes = rest.replace(cap, kebab)\n\n if (dashes.charAt(0) !== '-') {\n dashes = '-' + dashes\n }\n\n value = 'data' + dashes\n }\n }\n\n Type = DefinedInfo\n }\n\n return new Type(prop, value)\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction kebab($0) {\n return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n * @returns {string}\n */\nfunction camelcase($0) {\n return $0.charAt(1).toUpperCase()\n}\n","export const hastToReact = {\n classId: 'classID',\n dataType: 'datatype',\n itemId: 'itemID',\n strokeDashArray: 'strokeDasharray',\n strokeDashOffset: 'strokeDashoffset',\n strokeLineCap: 'strokeLinecap',\n strokeLineJoin: 'strokeLinejoin',\n strokeMiterLimit: 'strokeMiterlimit',\n typeOf: 'typeof',\n xLinkActuate: 'xlinkActuate',\n xLinkArcRole: 'xlinkArcrole',\n xLinkHref: 'xlinkHref',\n xLinkRole: 'xlinkRole',\n xLinkShow: 'xlinkShow',\n xLinkTitle: 'xlinkTitle',\n xLinkType: 'xlinkType',\n xmlnsXLink: 'xmlnsXlink'\n}\n","/**\n * @template T\n * @typedef {import('react').ComponentType<T>} ComponentType<T>\n */\n\n/**\n * @template T\n * @typedef {import('react').ComponentPropsWithoutRef<T>} ComponentPropsWithoutRef<T>\n */\n\n/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('unist').Position} Position\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Text} Text\n * @typedef {import('hast').Comment} Comment\n * @typedef {import('hast').DocType} Doctype\n * @typedef {import('property-information').Info} Info\n * @typedef {import('property-information').Schema} Schema\n * @typedef {import('./complex-types').ReactMarkdownProps} ReactMarkdownProps\n *\n * @typedef Raw\n * @property {'raw'} type\n * @property {string} value\n *\n * @typedef Context\n * @property {Options} options\n * @property {Schema} schema\n * @property {number} listDepth\n *\n * @callback TransformLink\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {string}\n *\n * @callback TransformImage\n * @param {string} src\n * @param {string} alt\n * @param {string?} title\n * @returns {string}\n *\n * @typedef {import('react').HTMLAttributeAnchorTarget} TransformLinkTargetType\n *\n * @callback TransformLinkTarget\n * @param {string} href\n * @param {Array<ElementContent>} children\n * @param {string?} title\n * @returns {TransformLinkTargetType|undefined}\n *\n * @typedef {keyof JSX.IntrinsicElements} ReactMarkdownNames\n *\n * To do: is `data-sourcepos` typeable?\n *\n * @typedef {ComponentPropsWithoutRef<'code'> & ReactMarkdownProps & {inline?: boolean}} CodeProps\n * @typedef {ComponentPropsWithoutRef<'h1'> & ReactMarkdownProps & {level: number}} HeadingProps\n * @typedef {ComponentPropsWithoutRef<'li'> & ReactMarkdownProps & {checked: boolean|null, index: number, ordered: boolean}} LiProps\n * @typedef {ComponentPropsWithoutRef<'ol'> & ReactMarkdownProps & {depth: number, ordered: true}} OrderedListProps\n * @typedef {ComponentPropsWithoutRef<'table'> & ReactMarkdownProps & {style?: Record<string, unknown>, isHeader: boolean}} TableCellProps\n * @typedef {ComponentPropsWithoutRef<'tr'> & ReactMarkdownProps & {isHeader: boolean}} TableRowProps\n * @typedef {ComponentPropsWithoutRef<'ul'> & ReactMarkdownProps & {depth: number, ordered: false}} UnorderedListProps\n *\n * @typedef {ComponentType<CodeProps>} CodeComponent\n * @typedef {ComponentType<HeadingProps>} HeadingComponent\n * @typedef {ComponentType<LiProps>} LiComponent\n * @typedef {ComponentType<OrderedListProps>} OrderedListComponent\n * @typedef {ComponentType<TableCellProps>} TableCellComponent\n * @typedef {ComponentType<TableRowProps>} TableRowComponent\n * @typedef {ComponentType<UnorderedListProps>} UnorderedListComponent\n *\n * @typedef SpecialComponents\n * @property {CodeComponent|ReactMarkdownNames} code\n * @property {HeadingComponent|ReactMarkdownNames} h1\n * @property {HeadingComponent|ReactMarkdownNames} h2\n * @property {HeadingComponent|ReactMarkdownNames} h3\n * @property {HeadingComponent|ReactMarkdownNames} h4\n * @property {HeadingComponent|ReactMarkdownNames} h5\n * @property {HeadingComponent|ReactMarkdownNames} h6\n * @property {LiComponent|ReactMarkdownNames} li\n * @property {OrderedListComponent|ReactMarkdownNames} ol\n * @property {TableCellComponent|ReactMarkdownNames} td\n * @property {TableCellComponent|ReactMarkdownNames} th\n * @property {TableRowComponent|ReactMarkdownNames} tr\n * @property {UnorderedListComponent|ReactMarkdownNames} ul\n *\n * @typedef {Partial<Omit<import('./complex-types').NormalComponents, keyof SpecialComponents> & SpecialComponents>} Components\n *\n * @typedef Options\n * @property {boolean} [sourcePos=false]\n * @property {boolean} [rawSourcePos=false]\n * @property {boolean} [skipHtml=false]\n * @property {boolean} [includeElementIndex=false]\n * @property {null|false|TransformLink} [transformLinkUri]\n * @property {TransformImage} [transformImageUri]\n * @property {TransformLinkTargetType|TransformLinkTarget} [linkTarget]\n * @property {Components} [components]\n */\n\nimport React from 'react'\nimport ReactIs from 'react-is'\nimport {whitespace} from 'hast-util-whitespace'\nimport {svg, find, hastToReact} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport style from 'style-to-object'\n\nconst own = {}.hasOwnProperty\n\n// The table-related elements that must not contain whitespace text according\n// to React.\nconst tableElements = new Set(['table', 'thead', 'tbody', 'tfoot', 'tr'])\n\n/**\n * @param {Context} context\n * @param {Element|Root} node\n */\nexport function childrenToReact(context, node) {\n /** @type {Array<ReactNode>} */\n const children = []\n let childIndex = -1\n /** @type {Comment|Doctype|Element|Raw|Text} */\n let child\n\n while (++childIndex < node.children.length) {\n child = node.children[childIndex]\n\n if (child.type === 'element') {\n children.push(toReact(context, child, childIndex, node))\n } else if (child.type === 'text') {\n // Currently, a warning is triggered by react for *any* white space in\n // tables.\n // So we drop it.\n // See: <https://github.com/facebook/react/pull/7081>.\n // See: <https://github.com/facebook/react/pull/7515>.\n // See: <https://github.com/remarkjs/remark-react/issues/64>.\n // See: <https://github.com/remarkjs/react-markdown/issues/576>.\n if (\n node.type !== 'element' ||\n !tableElements.has(node.tagName) ||\n !whitespace(child)\n ) {\n children.push(child.value)\n }\n } else if (child.type === 'raw' && !context.options.skipHtml) {\n // Default behavior is to show (encoded) HTML.\n children.push(child.value)\n }\n }\n\n return children\n}\n\n/**\n * @param {Context} context\n * @param {Element} node\n * @param {number} index\n * @param {Element|Root} parent\n */\nfunction toReact(context, node, index, parent) {\n const options = context.options\n const parentSchema = context.schema\n /** @type {ReactMarkdownNames} */\n // @ts-expect-error assume a known HTML/SVG element.\n const name = node.tagName\n /** @type {Record<string, unknown>} */\n const properties = {}\n let schema = parentSchema\n /** @type {string} */\n let property\n\n if (parentSchema.space === 'html' && name === 'svg') {\n schema = svg\n context.schema = schema\n }\n\n if (node.properties) {\n for (property in node.properties) {\n if (own.call(node.properties, property)) {\n addProperty(properties, property, node.properties[property], context)\n }\n }\n }\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth++\n }\n\n const children = childrenToReact(context, node)\n\n if (name === 'ol' || name === 'ul') {\n context.listDepth--\n }\n\n // Restore parent schema.\n context.schema = parentSchema\n\n // Nodes created by plugins do not have positional info, in which case we use\n // an object that matches the position interface.\n const position = node.position || {\n start: {line: null, column: null, offset: null},\n end: {line: null, column: null, offset: null}\n }\n const component =\n options.components && own.call(options.components, name)\n ? options.components[name]\n : name\n const basic = typeof component === 'string' || component === React.Fragment\n\n if (!ReactIs.isValidElementType(component)) {\n throw new TypeError(\n `Component for name \\`${name}\\` not defined or is not renderable`\n )\n }\n\n properties.key = [\n name,\n position.start.line,\n position.start.column,\n index\n ].join('-')\n\n if (name === 'a' && options.linkTarget) {\n properties.target =\n typeof options.linkTarget === 'function'\n ? options.linkTarget(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n : options.linkTarget\n }\n\n if (name === 'a' && options.transformLinkUri) {\n properties.href = options.transformLinkUri(\n String(properties.href || ''),\n node.children,\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (\n !basic &&\n name === 'code' &&\n parent.type === 'element' &&\n parent.tagName !== 'pre'\n ) {\n properties.inline = true\n }\n\n if (\n !basic &&\n (name === 'h1' ||\n name === 'h2' ||\n name === 'h3' ||\n name === 'h4' ||\n name === 'h5' ||\n name === 'h6')\n ) {\n properties.level = Number.parseInt(name.charAt(1), 10)\n }\n\n if (name === 'img' && options.transformImageUri) {\n properties.src = options.transformImageUri(\n String(properties.src || ''),\n String(properties.alt || ''),\n typeof properties.title === 'string' ? properties.title : null\n )\n }\n\n if (!basic && name === 'li' && parent.type === 'element') {\n const input = getInputElement(node)\n properties.checked =\n input && input.properties ? Boolean(input.properties.checked) : null\n properties.index = getElementsBeforeCount(parent, node)\n properties.ordered = parent.tagName === 'ol'\n }\n\n if (!basic && (name === 'ol' || name === 'ul')) {\n properties.ordered = name === 'ol'\n properties.depth = context.listDepth\n }\n\n if (name === 'td' || name === 'th') {\n if (properties.align) {\n if (!properties.style) properties.style = {}\n // @ts-expect-error assume `style` is an object\n properties.style.textAlign = properties.align\n delete properties.align\n }\n\n if (!basic) {\n properties.isHeader = name === 'th'\n }\n }\n\n if (!basic && name === 'tr' && parent.type === 'element') {\n properties.isHeader = Boolean(parent.tagName === 'thead')\n }\n\n // If `sourcePos` is given, pass source information (line/column info from markdown source).\n if (options.sourcePos) {\n properties['data-sourcepos'] = flattenPosition(position)\n }\n\n if (!basic && options.rawSourcePos) {\n properties.sourcePosition = node.position\n }\n\n // If `includeElementIndex` is given, pass node index info to components.\n if (!basic && options.includeElementIndex) {\n properties.index = getElementsBeforeCount(parent, node)\n properties.siblingCount = getElementsBeforeCount(parent)\n }\n\n if (!basic) {\n properties.node = node\n }\n\n // Ensure no React warnings are emitted for void elements w/ children.\n return children.length > 0\n ? React.createElement(component, properties, children)\n : React.createElement(component, properties)\n}\n\n/**\n * @param {Element|Root} node\n * @returns {Element?}\n */\nfunction getInputElement(node) {\n let index = -1\n\n while (++index < node.children.length) {\n const child = node.children[index]\n\n if (child.type === 'element' && child.tagName === 'input') {\n return child\n }\n }\n\n return null\n}\n\n/**\n * @param {Element|Root} parent\n * @param {Element} [node]\n * @returns {number}\n */\nfunction getElementsBeforeCount(parent, node) {\n let index = -1\n let count = 0\n\n while (++index < parent.children.length) {\n if (parent.children[index] === node) break\n if (parent.children[index].type === 'element') count++\n }\n\n return count\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string} prop\n * @param {unknown} value\n * @param {Context} ctx\n */\nfunction addProperty(props, prop, value, ctx) {\n const info = find(ctx.schema, prop)\n let result = value\n\n // Ignore nullish and `NaN` values.\n // eslint-disable-next-line no-self-compare\n if (result === null || result === undefined || result !== result) {\n return\n }\n\n // Accept `array`.\n // Most props are space-separated.\n if (Array.isArray(result)) {\n result = info.commaSeparated ? commas(result) : spaces(result)\n }\n\n if (info.property === 'style' && typeof result === 'string') {\n result = parseStyle(result)\n }\n\n if (info.space && info.property) {\n props[\n own.call(hastToReact, info.property)\n ? hastToReact[info.property]\n : info.property\n ] = result\n } else if (info.attribute) {\n props[info.attribute] = result\n }\n}\n\n/**\n * @param {string} value\n * @returns {Record<string, string>}\n */\nfunction parseStyle(value) {\n /** @type {Record<string, string>} */\n const result = {}\n\n try {\n style(value, iterator)\n } catch {\n // Silent.\n }\n\n return result\n\n /**\n * @param {string} name\n * @param {string} v\n */\n function iterator(name, v) {\n const k = name.slice(0, 4) === '-ms-' ? `ms-${name.slice(4)}` : name\n result[k.replace(/-([a-z])/g, styleReplacer)] = v\n }\n}\n\n/**\n * @param {unknown} _\n * @param {string} $1\n */\nfunction styleReplacer(_, $1) {\n return $1.toUpperCase()\n}\n\n/**\n * @param {Position|{start: {line: null, column: null, offset: null}, end: {line: null, column: null, offset: null}}} pos\n * @returns {string}\n */\nfunction flattenPosition(pos) {\n return [\n pos.start.line,\n ':',\n pos.start.column,\n '-',\n pos.end.line,\n ':',\n pos.end.column\n ]\n .map((d) => String(d))\n .join('')\n}\n","/**\n * @typedef {Object} StringifyOptions\n * @property {boolean} [padLeft=true] Whether to pad a space before a token (`boolean`, default: `true`).\n * @property {boolean} [padRight=false] Whether to pad a space after a token (`boolean`, default: `false`).\n */\n\n/**\n * Parse comma separated tokens to an array.\n *\n * @param {string} value\n * @returns {Array.<string>}\n */\nexport function parse(value) {\n /** @type {Array.<string>} */\n var tokens = []\n var input = String(value || '')\n var index = input.indexOf(',')\n var start = 0\n /** @type {boolean} */\n var end\n /** @type {string} */\n var token\n\n while (!end) {\n if (index === -1) {\n index = input.length\n end = true\n }\n\n token = input.slice(start, index).trim()\n\n if (token || !end) {\n tokens.push(token)\n }\n\n start = index + 1\n index = input.indexOf(',', start)\n }\n\n return tokens\n}\n\n/**\n * Serialize an array of strings to comma separated tokens.\n *\n * @param {Array.<string|number>} values\n * @param {StringifyOptions} [options]\n * @returns {string}\n */\nexport function stringify(values, options) {\n var settings = options || {}\n\n // Ensure the last empty entry is seen.\n if (values[values.length - 1] === '') {\n values = values.concat('')\n }\n\n return values\n .join(\n (settings.padRight ? ' ' : '') +\n ',' +\n (settings.padLeft === false ? '' : ' ')\n )\n .trim()\n}\n","/**\n * Parse space separated tokens to an array of strings.\n *\n * @param {string} value Space separated tokens\n * @returns {Array.<string>} Tokens\n */\nexport function parse(value) {\n const input = String(value || '').trim()\n return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated tokens.\n *\n * @param {Array.<string|number>} values Tokens\n * @returns {string} Space separated tokens\n */\nexport function stringify(values) {\n return values.join(' ').trim()\n}\n","/**\n * @typedef {import('react').ReactNode} ReactNode\n * @typedef {import('react').ReactElement<{}>} ReactElement\n * @typedef {import('unified').PluggableList} PluggableList\n * @typedef {import('hast').Root} Root\n * @typedef {import('./rehype-filter.js').Options} FilterOptions\n * @typedef {import('./ast-to-react.js').Options} TransformOptions\n *\n * @typedef CoreOptions\n * @property {string} children\n *\n * @typedef PluginOptions\n * @property {PluggableList} [remarkPlugins=[]]\n * @property {PluggableList} [rehypePlugins=[]]\n * @property {import('remark-rehype').Options | undefined} [remarkRehypeOptions={}]\n *\n * @typedef LayoutOptions\n * @property {string} [className]\n *\n * @typedef {CoreOptions & PluginOptions & LayoutOptions & FilterOptions & TransformOptions} ReactMarkdownOptions\n *\n * @typedef Deprecation\n * @property {string} id\n * @property {string} [to]\n */\n\nimport React from 'react'\nimport {VFile} from 'vfile'\nimport {unified} from 'unified'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport PropTypes from 'prop-types'\nimport {html} from 'property-information'\nimport rehypeFilter from './rehype-filter.js'\nimport {uriTransformer} from './uri-transformer.js'\nimport {childrenToReact} from './ast-to-react.js'\n\nconst own = {}.hasOwnProperty\nconst changelog =\n 'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {Record<string, Deprecation>} */\nconst deprecated = {\n plugins: {to: 'plugins', id: 'change-plugins-to-remarkplugins'},\n renderers: {to: 'components', id: 'change-renderers-to-components'},\n astPlugins: {id: 'remove-buggy-html-in-markdown-parser'},\n allowDangerousHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n escapeHtml: {id: 'remove-buggy-html-in-markdown-parser'},\n source: {to: 'children', id: 'change-source-to-children'},\n allowNode: {\n to: 'allowElement',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n allowedTypes: {\n to: 'allowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n disallowedTypes: {\n to: 'disallowedElements',\n id: 'replace-allownode-allowedtypes-and-disallowedtypes'\n },\n includeNodeIndex: {\n to: 'includeElementIndex',\n id: 'change-includenodeindex-to-includeelementindex'\n }\n}\n\n/**\n * React component to render markdown.\n *\n * @param {ReactMarkdownOptions} options\n * @returns {ReactElement}\n */\nexport function ReactMarkdown(options) {\n for (const key in deprecated) {\n if (own.call(deprecated, key) && own.call(options, key)) {\n const deprecation = deprecated[key]\n console.warn(\n `[react-markdown] Warning: please ${\n deprecation.to ? `use \\`${deprecation.to}\\` instead of` : 'remove'\n } \\`${key}\\` (see <${changelog}#${deprecation.id}> for more info)`\n )\n delete deprecated[key]\n }\n }\n\n const processor = unified()\n .use(remarkParse)\n .use(options.remarkPlugins || [])\n .use(remarkRehype, {\n ...options.remarkRehypeOptions,\n allowDangerousHtml: true\n })\n .use(options.rehypePlugins || [])\n .use(rehypeFilter, options)\n\n const file = new VFile()\n\n if (typeof options.children === 'string') {\n file.value = options.children\n } else if (options.children !== undefined && options.children !== null) {\n console.warn(\n `[react-markdown] Warning: please pass a string as \\`children\\` (not: \\`${options.children}\\`)`\n )\n }\n\n const hastNode = processor.runSync(processor.parse(file), file)\n\n if (hastNode.type !== 'root') {\n throw new TypeError('Expected a `root` node')\n }\n\n /** @type {ReactElement} */\n let result = React.createElement(\n React.Fragment,\n {},\n childrenToReact({options, schema: html, listDepth: 0}, hastNode)\n )\n\n if (options.className) {\n result = React.createElement('div', {className: options.className}, result)\n }\n\n return result\n}\n\nReactMarkdown.defaultProps = {transformLinkUri: uriTransformer}\n\nReactMarkdown.propTypes = {\n // Core options:\n children: PropTypes.string,\n // Layout options:\n className: PropTypes.string,\n // Filter options:\n allowElement: PropTypes.func,\n allowedElements: PropTypes.arrayOf(PropTypes.string),\n disallowedElements: PropTypes.arrayOf(PropTypes.string),\n unwrapDisallowed: PropTypes.bool,\n // Plugin options:\n remarkPlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n rehypePlugins: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string,\n PropTypes.object,\n PropTypes.func,\n PropTypes.arrayOf(\n // prettier-ignore\n // type-coverage:ignore-next-line\n PropTypes.any\n )\n ])\n )\n ])\n ),\n // Transform options:\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n skipHtml: PropTypes.bool,\n includeElementIndex: PropTypes.bool,\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n components: PropTypes.object\n}\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 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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 */\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 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 */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\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://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\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 */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\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};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\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\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\n return result;\n};\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};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challange you to try to remove it!\n\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\n if (!matchResult) {\n return null;\n }\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}\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\n return undefined;\n}\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\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 (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 (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/**\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\n /* Sunday */\n ,\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}; // 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.\n\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};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n var number = Number(dirtyNumber); // 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\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\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 (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;","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 */\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\";\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 * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\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 */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\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 */\n\nvar formatters = {\n // Year\n y: function (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 var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (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 (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (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 toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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 startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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\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\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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 toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\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 toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\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, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\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 toInteger from \"../toInteger/index.js\";\nimport getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import lightFormatters from \"../lightFormatters/index.js\";\nimport 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\";\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 (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\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\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\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 (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\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 (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\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\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\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 (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\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 (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\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\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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 (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\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\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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 (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\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 (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\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 (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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 (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\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\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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 (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\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\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\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\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 (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\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\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 (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\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\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\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\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (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 (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\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\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\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\n return formatTimezone(offset, dirtyDelimiter);\n}\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}\n\nexport default formatters;","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; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\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; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // 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\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\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}","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\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}","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://git.io/fxCyr\"));\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://git.io/fxCyr\"));\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://git.io/fxCyr\"));\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://git.io/fxCyr\"));\n }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/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\"; // 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\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\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://git.io/fxCyr\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://git.io/fxCyr\n *\n * 9. `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://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\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://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\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://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var 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 * var 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 * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\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\n\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\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\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\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tileProps = exports.tileGroupProps = exports.isView = exports.isClassName = exports.isViews = exports.isValue = exports.isMaxDate = exports.isMinDate = exports.isCalendarType = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { 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\nvar calendarTypes = ['ISO 8601', 'US', 'Arabic', 'Hebrew'];\nvar allViews = ['century', 'decade', 'year', 'month'];\n\nvar isCalendarType = _propTypes[\"default\"].oneOf(calendarTypes);\n\nexports.isCalendarType = isCalendarType;\n\nvar isMinDate = function isMinDate(props, propName, componentName) {\n var minDate = props[propName];\n\n if (minDate) {\n if (!(minDate instanceof Date)) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n }\n\n var maxDate = props.maxDate;\n\n if (maxDate && minDate > maxDate) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, minDate cannot be larger than maxDate.\"));\n }\n } // Everything is fine\n\n\n return null;\n};\n\nexports.isMinDate = isMinDate;\n\nvar isMaxDate = function isMaxDate(props, propName, componentName) {\n var maxDate = props[propName];\n\n if (maxDate) {\n if (!(maxDate instanceof Date)) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n }\n\n var minDate = props.minDate;\n\n if (minDate && maxDate < minDate) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, maxDate cannot be smaller than minDate.\"));\n }\n } // Everything is fine\n\n\n return null;\n};\n\nexports.isMaxDate = isMaxDate;\n\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].instanceOf(Date), _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].instanceOf(Date))]);\n\nexports.isValue = isValue;\n\nvar isViews = _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].oneOf(allViews));\n\nexports.isViews = isViews;\n\nvar isClassName = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]);\n\nexports.isClassName = isClassName;\n\nvar isView = function isView(props, propName, componentName) {\n var view = props[propName];\n var views = props.views;\n var allowedViews = views || allViews;\n\n if (view !== undefined && allowedViews.indexOf(view) === -1) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of value `\").concat(view, \"` supplied to `\").concat(componentName, \"`, expected one of [\").concat(allowedViews.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n }).join(', '), \"].\"));\n } // Everything is fine\n\n\n return null;\n};\n\nexports.isView = isView;\n\nisView.isRequired = function (props, propName, componentName) {\n var view = props[propName];\n\n if (!view) {\n return new Error(\"The prop `\".concat(propName, \"` is marked as required in `\").concat(componentName, \"`, but its value is `\").concat(view, \"`.\"));\n }\n\n return isView(props, propName, componentName);\n};\n\nvar tileGroupProps = {\n activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n hover: _propTypes[\"default\"].instanceOf(Date),\n locale: _propTypes[\"default\"].string,\n maxDate: isMaxDate,\n minDate: isMinDate,\n onClick: _propTypes[\"default\"].func,\n onMouseOver: _propTypes[\"default\"].func,\n tileClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, isClassName]),\n tileContent: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].node]),\n value: isValue,\n valueType: _propTypes[\"default\"].string\n};\nexports.tileGroupProps = tileGroupProps;\nvar tileProps = {\n activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n classes: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string).isRequired,\n date: _propTypes[\"default\"].instanceOf(Date).isRequired,\n locale: _propTypes[\"default\"].string,\n maxDate: isMaxDate,\n minDate: isMinDate,\n onClick: _propTypes[\"default\"].func,\n onMouseOver: _propTypes[\"default\"].func,\n style: _propTypes[\"default\"].objectOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].number])),\n tileClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, isClassName]),\n tileContent: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].node]),\n tileDisabled: _propTypes[\"default\"].func\n};\nexports.tileProps = tileProps;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getYear = getYear;\nexports.getMonth = getMonth;\nexports.getMonthIndex = getMonthIndex;\nexports.getDay = getDay;\nexports.getDayOfWeek = getDayOfWeek;\nexports.getBeginOfCenturyYear = getBeginOfCenturyYear;\nexports.getBeginOfCentury = getBeginOfCentury;\nexports.getEndOfCentury = getEndOfCentury;\nexports.getCenturyRange = getCenturyRange;\nexports.getBeginOfPreviousCentury = getBeginOfPreviousCentury;\nexports.getEndOfPreviousCentury = getEndOfPreviousCentury;\nexports.getBeginOfNextCentury = getBeginOfNextCentury;\nexports.getBeginOfDecadeYear = getBeginOfDecadeYear;\nexports.getBeginOfDecade = getBeginOfDecade;\nexports.getEndOfDecade = getEndOfDecade;\nexports.getDecadeRange = getDecadeRange;\nexports.getBeginOfPreviousDecade = getBeginOfPreviousDecade;\nexports.getEndOfPreviousDecade = getEndOfPreviousDecade;\nexports.getBeginOfNextDecade = getBeginOfNextDecade;\nexports.getBeginOfYear = getBeginOfYear;\nexports.getEndOfYear = getEndOfYear;\nexports.getYearRange = getYearRange;\nexports.getBeginOfPreviousYear = getBeginOfPreviousYear;\nexports.getEndOfPreviousYear = getEndOfPreviousYear;\nexports.getBeginOfNextYear = getBeginOfNextYear;\nexports.getBeginOfMonth = getBeginOfMonth;\nexports.getEndOfMonth = getEndOfMonth;\nexports.getBeginOfWeek = getBeginOfWeek;\nexports.getMonthRange = getMonthRange;\nexports.getBeginOfPreviousMonth = getBeginOfPreviousMonth;\nexports.getEndOfPreviousMonth = getEndOfPreviousMonth;\nexports.getBeginOfNextMonth = getBeginOfNextMonth;\nexports.getBeginOfDay = getBeginOfDay;\nexports.getEndOfDay = getEndOfDay;\nexports.getDayRange = getDayRange;\nexports.getWeekNumber = getWeekNumber;\nexports.getBegin = getBegin;\nexports.getBeginPrevious = getBeginPrevious;\nexports.getBeginNext = getBeginNext;\nexports.getEnd = getEnd;\nexports.getEndPrevious = getEndPrevious;\nexports.getRange = getRange;\nexports.getValueRange = getValueRange;\nexports.getDaysInMonth = getDaysInMonth;\nexports.getCenturyLabel = getCenturyLabel;\nexports.getDecadeLabel = getDecadeLabel;\nexports.isWeekend = isWeekend;\nexports.getISOLocalMonth = getISOLocalMonth;\nexports.getISOLocalDate = getISOLocalDate;\nexports.getEndPrevious2 = exports.getBeginNext2 = exports.getBeginPrevious2 = void 0;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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\nvar _map = _toConsumableArray(Array(7)).map(function (el, index) {\n return index;\n}),\n _map2 = _slicedToArray(_map, 7),\n // eslint-disable-next-line no-unused-vars\nSUNDAY = _map2[0],\n MONDAY = _map2[1],\n TUESDAY = _map2[2],\n WEDNESDAY = _map2[3],\n THURSDAY = _map2[4],\n FRIDAY = _map2[5],\n SATURDAY = _map2[6];\n/* Simple getters - getting a property of a given point in time */\n\n\nfunction getYear(date) {\n if (date instanceof Date) {\n return date.getFullYear();\n }\n\n if (typeof date === 'number') {\n return date;\n }\n\n var year = parseInt(date, 10);\n\n if (typeof date === 'string' && !isNaN(year)) {\n return year;\n }\n\n throw new Error(\"Failed to get year from date: \".concat(date, \".\"));\n}\n\nfunction getMonth(date) {\n return date.getMonth() + 1;\n}\n\nfunction getMonthIndex(date) {\n return date.getMonth();\n}\n\nfunction getDay(date) {\n return date.getDate();\n}\n\nfunction getDayOfWeek(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ISO 8601';\n var weekday = date.getDay();\n\n switch (calendarType) {\n case 'ISO 8601':\n // Shifts days of the week so that Monday is 0, Sunday is 6\n return (weekday + 6) % 7;\n\n case 'Arabic':\n return (weekday + 1) % 7;\n\n case 'Hebrew':\n case 'US':\n return weekday;\n\n default:\n throw new Error('Unsupported calendar type.');\n }\n}\n/* Complex getters - getting a property somehow related to a given point in time */\n\n\nfunction getBeginOfCenturyYear(date) {\n var year = getYear(date) - 1;\n return year + -year % 100 + 1;\n}\n\nfunction getBeginOfCentury(date) {\n var beginOfCenturyYear = getBeginOfCenturyYear(date);\n return new Date(beginOfCenturyYear, 0, 1);\n}\n\nfunction getEndOfCentury(date) {\n var beginOfCenturyYear = getBeginOfCenturyYear(date);\n return new Date(beginOfCenturyYear + 100, 0, 1, 0, 0, 0, -1);\n}\n\nfunction getCenturyRange(date) {\n return [getBeginOfCentury(date), getEndOfCentury(date)];\n}\n\nfunction getBeginOfPreviousCentury(date) {\n var previousCenturyYear = getYear(date) - 100;\n return getBeginOfCentury(previousCenturyYear);\n}\n\nfunction getEndOfPreviousCentury(date) {\n var previousCenturyYear = getYear(date) - 100;\n return getEndOfCentury(previousCenturyYear);\n}\n\nfunction getBeginOfNextCentury(date) {\n var nextCenturyYear = getYear(date) + 100;\n return getBeginOfCentury(nextCenturyYear);\n}\n\nfunction getBeginOfDecadeYear(date) {\n var year = getYear(date) - 1;\n return year + -year % 10 + 1;\n}\n\nfunction getBeginOfDecade(date) {\n var beginOfDecadeYear = getBeginOfDecadeYear(date);\n return new Date(beginOfDecadeYear, 0, 1);\n}\n\nfunction getEndOfDecade(date) {\n var beginOfDecadeYear = getBeginOfDecadeYear(date);\n return new Date(beginOfDecadeYear + 10, 0, 1, 0, 0, 0, -1);\n}\n\nfunction getDecadeRange(date) {\n return [getBeginOfDecade(date), getEndOfDecade(date)];\n}\n\nfunction getBeginOfPreviousDecade(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n var previousDecadeYear = getBeginOfDecadeYear(date) - offset;\n return getBeginOfDecade(previousDecadeYear);\n}\n\nfunction getEndOfPreviousDecade(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n var previousDecadeYear = getBeginOfDecadeYear(date) - offset;\n return getEndOfDecade(previousDecadeYear);\n}\n\nfunction getBeginOfNextDecade(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 10;\n var nextDecadeYear = getBeginOfDecadeYear(date) + offset;\n return getBeginOfDecade(nextDecadeYear);\n}\n/**\n * Returns the beginning of a given year.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getBeginOfYear(date) {\n var year = getYear(date);\n return new Date(year, 0, 1);\n}\n/**\n * Returns the end of a given year.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getEndOfYear(date) {\n var year = getYear(date);\n return new Date(year + 1, 0, 1, 0, 0, 0, -1);\n}\n/**\n * Returns an array with the beginning and the end of a given year.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getYearRange(date) {\n return [getBeginOfYear(date), getEndOfYear(date)];\n}\n\nfunction getBeginOfPreviousYear(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var previousYear = getYear(date) - offset;\n return getBeginOfYear(previousYear);\n}\n\nfunction getEndOfPreviousYear(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var previousYear = getYear(date) - offset;\n return getEndOfYear(previousYear);\n}\n\nfunction getBeginOfNextYear(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var nextYear = getYear(date) + offset;\n return getBeginOfYear(nextYear);\n}\n/**\n * Returns the beginning of a given month.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getBeginOfMonth(date) {\n var year = getYear(date);\n var monthIndex = getMonthIndex(date);\n return new Date(year, monthIndex, 1);\n}\n/**\n * Returns the end of a given month.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getEndOfMonth(date) {\n var year = getYear(date);\n var monthIndex = getMonthIndex(date);\n return new Date(year, monthIndex + 1, 1, 0, 0, 0, -1);\n}\n/**\n * Returns the beginning of a given week.\n *\n * @param {Date} date Date.\n * @param {String} calendarType Calendar type. Can be ISO 8601 or US.\n */\n\n\nfunction getBeginOfWeek(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ISO 8601';\n var year = getYear(date);\n var monthIndex = getMonthIndex(date);\n var day = date.getDate() - getDayOfWeek(date, calendarType);\n return new Date(year, monthIndex, day);\n}\n/**\n * Returns an array with the beginning and the end of a given month.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getMonthRange(date) {\n return [getBeginOfMonth(date), getEndOfMonth(date)];\n}\n\nfunction getDifferentMonth(date, offset) {\n var year = getYear(date);\n var previousMonthIndex = getMonthIndex(date) + offset;\n return new Date(year, previousMonthIndex, 1);\n}\n\nfunction getBeginOfPreviousMonth(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var previousMonth = getDifferentMonth(date, -offset);\n return getBeginOfMonth(previousMonth);\n}\n\nfunction getEndOfPreviousMonth(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var previousMonth = getDifferentMonth(date, -offset);\n return getEndOfMonth(previousMonth);\n}\n\nfunction getBeginOfNextMonth(date) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var nextMonth = getDifferentMonth(date, offset);\n return getBeginOfMonth(nextMonth);\n}\n\nfunction getBeginOfDay(date) {\n var year = getYear(date);\n var monthIndex = getMonthIndex(date);\n var day = getDay(date);\n return new Date(year, monthIndex, day);\n}\n\nfunction getEndOfDay(date) {\n var year = getYear(date);\n var monthIndex = getMonthIndex(date);\n var day = getDay(date);\n return new Date(year, monthIndex, day + 1, 0, 0, 0, -1);\n}\n/**\n * Returns an array with the beginning and the end of a given day.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getDayRange(date) {\n return [getBeginOfDay(date), getEndOfDay(date)];\n}\n/**\n * Gets week number according to ISO 8601 or US standard.\n * In ISO 8601, Arabic and Hebrew week 1 is the one with January 4.\n * In US calendar week 1 is the one with January 1.\n *\n * @param {Date} date Date.\n * @param {String} calendarType Calendar type. Can be ISO 8601 or US.\n */\n\n\nfunction getWeekNumber(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ISO 8601';\n var calendarTypeForWeekNumber = calendarType === 'US' ? 'US' : 'ISO 8601';\n var beginOfWeek = getBeginOfWeek(date, calendarTypeForWeekNumber);\n var year = getYear(date) + 1;\n var dayInWeekOne;\n var beginOfFirstWeek; // Look for the first week one that does not come after a given date\n\n do {\n dayInWeekOne = new Date(year, 0, calendarTypeForWeekNumber === 'ISO 8601' ? 4 : 1);\n beginOfFirstWeek = getBeginOfWeek(dayInWeekOne, calendarTypeForWeekNumber);\n year -= 1;\n } while (date - beginOfFirstWeek < 0);\n\n return Math.round((beginOfWeek - beginOfFirstWeek) / (8.64e7 * 7)) + 1;\n}\n/**\n * Returns the beginning of a given range.\n *\n * @param {String} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\n\nfunction getBegin(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getBeginOfCentury(date);\n\n case 'decade':\n return getBeginOfDecade(date);\n\n case 'year':\n return getBeginOfYear(date);\n\n case 'month':\n return getBeginOfMonth(date);\n\n case 'day':\n return getBeginOfDay(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n\nfunction getBeginPrevious(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getBeginOfPreviousCentury(date);\n\n case 'decade':\n return getBeginOfPreviousDecade(date);\n\n case 'year':\n return getBeginOfPreviousYear(date);\n\n case 'month':\n return getBeginOfPreviousMonth(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n\nfunction getBeginNext(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getBeginOfNextCentury(date);\n\n case 'decade':\n return getBeginOfNextDecade(date);\n\n case 'year':\n return getBeginOfNextYear(date);\n\n case 'month':\n return getBeginOfNextMonth(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n\nvar getBeginPrevious2 = function getBeginPrevious2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getBeginOfPreviousDecade(date, 100);\n\n case 'year':\n return getBeginOfPreviousYear(date, 10);\n\n case 'month':\n return getBeginOfPreviousMonth(date, 12);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n};\n\nexports.getBeginPrevious2 = getBeginPrevious2;\n\nvar getBeginNext2 = function getBeginNext2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getBeginOfNextDecade(date, 100);\n\n case 'year':\n return getBeginOfNextYear(date, 10);\n\n case 'month':\n return getBeginOfNextMonth(date, 12);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n};\n/**\n * Returns the end of a given range.\n *\n * @param {String} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\n\nexports.getBeginNext2 = getBeginNext2;\n\nfunction getEnd(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getEndOfCentury(date);\n\n case 'decade':\n return getEndOfDecade(date);\n\n case 'year':\n return getEndOfYear(date);\n\n case 'month':\n return getEndOfMonth(date);\n\n case 'day':\n return getEndOfDay(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n\nfunction getEndPrevious(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getEndOfPreviousCentury(date);\n\n case 'decade':\n return getEndOfPreviousDecade(date);\n\n case 'year':\n return getEndOfPreviousYear(date);\n\n case 'month':\n return getEndOfPreviousMonth(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n\nvar getEndPrevious2 = function getEndPrevious2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getEndOfPreviousDecade(date, 100);\n\n case 'year':\n return getEndOfPreviousYear(date, 10);\n\n case 'month':\n return getEndOfPreviousMonth(date, 12);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n};\n/**\n * Returns an array with the beginning and the end of a given range.\n *\n * @param {String} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n */\n\n\nexports.getEndPrevious2 = getEndPrevious2;\n\nfunction getRange(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyRange(date);\n\n case 'decade':\n return getDecadeRange(date);\n\n case 'year':\n return getYearRange(date);\n\n case 'month':\n return getMonthRange(date);\n\n case 'day':\n return getDayRange(date);\n\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n/**\n * Creates a range out of two values, ensuring they are in order and covering entire period ranges.\n *\n * @param {String} rangeType Range type (e.g. 'day')\n * @param {Date} date1 First date.\n * @param {Date} date2 Second date.\n */\n\n\nfunction getValueRange(rangeType, date1, date2) {\n var rawNextValue = [date1, date2].sort(function (a, b) {\n return a - b;\n });\n return [getBegin(rangeType, rawNextValue[0]), getEnd(rangeType, rawNextValue[1])];\n}\n/**\n * Returns a number of days in a month of a given date.\n *\n * @param {Date} date Date.\n */\n\n\nfunction getDaysInMonth(date) {\n var year = getYear(date);\n var monthIndex = getMonthIndex(date);\n return new Date(year, monthIndex + 1, 0).getDate();\n}\n\nfunction toYearLabel(_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n start = _ref2[0],\n end = _ref2[1];\n\n return \"\".concat(getYear(start), \" \\u2013 \").concat(getYear(end));\n}\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2001-2100.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\n\n\nfunction getCenturyLabel(date) {\n return toYearLabel(getCenturyRange(date));\n}\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2011-2020.\n *\n * @param {Date|String|Number} date Date or a year as a string or as a number.\n */\n\n\nfunction getDecadeLabel(date) {\n return toYearLabel(getDecadeRange(date));\n}\n/**\n * Returns a boolean determining whether a given date is on Saturday or Sunday.\n *\n * @param {Date} date Date.\n */\n\n\nfunction isWeekend(date) {\n var calendarType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'ISO 8601';\n var weekday = date.getDay();\n\n switch (calendarType) {\n case 'Arabic':\n case 'Hebrew':\n return weekday === FRIDAY || weekday === SATURDAY;\n\n case 'ISO 8601':\n case 'US':\n return weekday === SATURDAY || weekday === SUNDAY;\n\n default:\n throw new Error('Unsupported calendar type.');\n }\n}\n/**\n * Returns local month in ISO-like format (YYYY-MM).\n */\n\n\nfunction getISOLocalMonth(value) {\n if (!value) {\n return value;\n }\n\n var date = new Date(value);\n\n if (isNaN(date.getTime())) {\n throw new Error(\"Invalid date: \".concat(value));\n }\n\n var year = getYear(date);\n var month = \"0\".concat(getMonth(date)).slice(-2);\n return \"\".concat(year, \"-\").concat(month);\n}\n/**\n * Returns local date in ISO-like format (YYYY-MM-DD).\n */\n\n\nfunction getISOLocalDate(value) {\n if (!value) {\n return value;\n }\n\n var date = new Date(value);\n\n if (isNaN(date.getTime())) {\n throw new Error(\"Invalid date: \".concat(value));\n }\n\n var year = getYear(date);\n var month = \"0\".concat(getMonth(date)).slice(-2);\n var day = \"0\".concat(getDay(date)).slice(-2);\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isValueType = exports.isTime = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { 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\nvar allViews = ['hour', 'minute', 'second'];\nvar allValueTypes = [].concat(allViews);\nvar hourOptionalSecondsRegExp = /^(([0-1])?[0-9]|2[0-3]):[0-5][0-9](:([0-5][0-9]))?$/;\n\nvar isTime = function isTime(props, propName, componentName) {\n var time = props[propName];\n\n if (time) {\n if (!hourOptionalSecondsRegExp.test(time)) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(typeof minDate === \"undefined\" ? \"undefined\" : _typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected time in HH:mm(:ss) format.\"));\n }\n } // Everything is fine\n\n\n return null;\n};\n\nexports.isTime = isTime;\n\nvar isValueType = _propTypes[\"default\"].oneOf(allValueTypes);\n\nexports.isValueType = isValueType;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.callIfDefined = exports.getAmPmLabels = exports.max = exports.min = void 0;\n\nvar _dateFormatter = require(\"./dateFormatter\");\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar isValidNumber = function isValidNumber(a) {\n return typeof a === 'number' && !isNaN(a);\n};\n\nvar min = function min() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return Math.min.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n};\n\nexports.min = min;\n\nvar max = function max() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return Math.max.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n};\n\nexports.max = max;\nvar nines = ['9', 'Ù©'];\nvar ninesRegExp = new RegExp(\"[\".concat(nines.join(''), \"]\"));\nvar amPmFormatter = (0, _dateFormatter.getFormatter)({\n hour: 'numeric'\n});\n\nvar getAmPmLabels = function getAmPmLabels(locale) {\n var amString = amPmFormatter(locale, new Date(2017, 0, 1, 9));\n var pmString = amPmFormatter(locale, new Date(2017, 0, 1, 21));\n\n var _amString$split = amString.split(ninesRegExp),\n _amString$split2 = _slicedToArray(_amString$split, 2),\n am1 = _amString$split2[0],\n am2 = _amString$split2[1];\n\n var _pmString$split = pmString.split(ninesRegExp),\n _pmString$split2 = _slicedToArray(_pmString$split, 2),\n pm1 = _pmString$split2[0],\n pm2 = _pmString$split2[1];\n\n if (pm2 !== undefined) {\n // If pm2 is undefined, nine was not found in pmString - this locale is not using 12-hour time\n if (am1 !== pm1) {\n return [am1, pm1].map(function (el) {\n return el.trim();\n });\n }\n\n if (am2 !== pm2) {\n return [am2, pm2].map(function (el) {\n return el.trim();\n });\n }\n } // Fallback\n\n\n return ['AM', 'PM'];\n};\n/**\n * Calls a function, if it's defined, with specified arguments\n * @param {Function} fn\n * @param {Object} args\n */\n\n\nexports.getAmPmLabels = getAmPmLabels;\n\nvar callIfDefined = function callIfDefined(fn) {\n if (fn && typeof fn === 'function') {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n fn.apply(void 0, args);\n }\n};\n\nexports.callIfDefined = callIfDefined;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.between = between;\nexports.callIfDefined = callIfDefined;\nexports.safeMin = safeMin;\nexports.safeMax = safeMax;\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {*} value Value to return.\n * @param {*} min Minimum return value.\n * @param {*} max Maximum return value.\n */\nfunction between(value, min, max) {\n if (min && min > value) {\n return min;\n }\n\n if (max && max < value) {\n return max;\n }\n\n return value;\n}\n/**\n * Calls a function, if it's defined, with specified arguments\n * @param {Function} fn\n * @param {Object} args\n */\n\n\nfunction callIfDefined(fn) {\n if (fn && typeof fn === 'function') {\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 fn.apply(void 0, args);\n }\n}\n\nfunction isValidNumber(num) {\n return num !== null && num !== false && !Number.isNaN(Number(num));\n}\n\nfunction safeMin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return Math.min.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n}\n\nfunction safeMax() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return Math.max.apply(Math, _toConsumableArray(args.filter(isValidNumber)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatShortWeekday = exports.formatWeekday = exports.formatMonth = exports.formatMonthYear = exports.formatLongDate = exports.formatDate = void 0;\n\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction getFormatter(options) {\n return function (locale, date) {\n return date.toLocaleString(locale || (0, _getUserLocale[\"default\"])(), options);\n };\n}\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n */\n\n\nfunction toSafeHour(date) {\n var safeDate = new Date(date);\n return new Date(safeDate.setHours(12));\n}\n\nfunction getSafeFormatter(options) {\n return function (locale, date) {\n return getFormatter(options)(locale, toSafeHour(date));\n };\n}\n\nvar formatDateOptions = {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric'\n};\nvar formatLongDateOptions = {\n day: 'numeric',\n month: 'long',\n year: 'numeric'\n};\nvar formatMonthYearOptions = {\n month: 'long',\n year: 'numeric'\n};\nvar formatMonthOptions = {\n month: 'long'\n};\nvar formatWeekdayOptions = {\n weekday: 'long'\n};\nvar formatShortWeekdayOptions = {\n weekday: 'short'\n};\nvar formatDate = getSafeFormatter(formatDateOptions);\nexports.formatDate = formatDate;\nvar formatLongDate = getSafeFormatter(formatLongDateOptions);\nexports.formatLongDate = formatLongDate;\nvar formatMonthYear = getSafeFormatter(formatMonthYearOptions);\nexports.formatMonthYear = formatMonthYear;\nvar formatMonth = getSafeFormatter(formatMonthOptions);\nexports.formatMonth = formatMonth;\nvar formatWeekday = getSafeFormatter(formatWeekdayOptions);\nexports.formatWeekday = formatWeekday;\nvar formatShortWeekday = getSafeFormatter(formatShortWeekdayOptions);\nexports.formatShortWeekday = formatShortWeekday;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = TileGroup;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Flex = _interopRequireDefault(require(\"./Flex\"));\n\nvar _utils = require(\"./shared/utils\");\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _extends() { _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; }; return _extends.apply(this, arguments); }\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\nfunction TileGroup(_ref) {\n var className = _ref.className,\n count = _ref.count,\n dateTransform = _ref.dateTransform,\n dateType = _ref.dateType,\n end = _ref.end,\n hover = _ref.hover,\n offset = _ref.offset,\n start = _ref.start,\n step = _ref.step,\n Tile = _ref.tile,\n value = _ref.value,\n valueType = _ref.valueType,\n tileProps = _objectWithoutProperties(_ref, [\"className\", \"count\", \"dateTransform\", \"dateType\", \"end\", \"hover\", \"offset\", \"start\", \"step\", \"tile\", \"value\", \"valueType\"]);\n\n var tiles = [];\n\n for (var point = start; point <= end; point += step) {\n var date = dateTransform(point);\n tiles.push(_react[\"default\"].createElement(Tile, _extends({\n key: date.getTime(),\n classes: (0, _utils.getTileClasses)({\n value: value,\n valueType: valueType,\n date: date,\n dateType: dateType,\n hover: hover\n }),\n date: date,\n point: point\n }, tileProps)));\n }\n\n return _react[\"default\"].createElement(_Flex[\"default\"], {\n className: className,\n count: count,\n offset: offset,\n wrap: true\n }, tiles);\n}\n\nTileGroup.propTypes = _objectSpread({}, _propTypes2.tileGroupProps, {\n activeStartDate: _propTypes[\"default\"].instanceOf(Date),\n count: _propTypes[\"default\"].number,\n dateTransform: _propTypes[\"default\"].func.isRequired,\n offset: _propTypes[\"default\"].number,\n step: _propTypes[\"default\"].number,\n tile: _propTypes[\"default\"].func.isRequired\n});\nTileGroup.defaultProps = {\n count: 3,\n step: 1\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _typeof(obj) { 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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\nvar Tile =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Tile, _Component);\n\n function Tile() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Tile);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Tile)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {});\n\n return _this;\n }\n\n _createClass(Tile, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n activeStartDate = _this$props.activeStartDate,\n children = _this$props.children,\n classes = _this$props.classes,\n date = _this$props.date,\n formatAbbr = _this$props.formatAbbr,\n locale = _this$props.locale,\n maxDate = _this$props.maxDate,\n maxDateTransform = _this$props.maxDateTransform,\n minDate = _this$props.minDate,\n minDateTransform = _this$props.minDateTransform,\n onClick = _this$props.onClick,\n onMouseOver = _this$props.onMouseOver,\n style = _this$props.style,\n tileDisabled = _this$props.tileDisabled,\n view = _this$props.view;\n var _this$state = this.state,\n tileClassName = _this$state.tileClassName,\n tileContent = _this$state.tileContent;\n return _react[\"default\"].createElement(\"button\", {\n className: (0, _mergeClassNames[\"default\"])(classes, tileClassName),\n disabled: minDate && minDateTransform(minDate) > date || maxDate && maxDateTransform(maxDate) < date || tileDisabled && tileDisabled({\n activeStartDate: activeStartDate,\n date: date,\n view: view\n }),\n onClick: onClick && function () {\n return onClick(date);\n },\n onFocus: onMouseOver && function () {\n return onMouseOver(date);\n },\n onMouseOver: onMouseOver && function () {\n return onMouseOver(date);\n },\n style: style,\n type: \"button\"\n }, formatAbbr ? _react[\"default\"].createElement(\"abbr\", {\n \"aria-label\": formatAbbr(locale, date)\n }, children) : children, tileContent);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var date = nextProps.date,\n tileClassName = nextProps.tileClassName,\n tileContent = nextProps.tileContent,\n view = nextProps.view;\n var nextState = {};\n\n if (tileClassName !== prevState.tileClassNameProps) {\n nextState.tileClassName = typeof tileClassName === 'function' ? tileClassName({\n date: date,\n view: view\n }) : tileClassName;\n nextState.tileClassNameProps = tileClassName;\n }\n\n if (tileContent !== prevState.tileContentProps) {\n nextState.tileContent = typeof tileContent === 'function' ? tileContent({\n date: date,\n view: view\n }) : tileContent;\n nextState.tileContentProps = tileContent;\n }\n\n return nextState;\n }\n }]);\n\n return Tile;\n}(_react.Component);\n\nexports[\"default\"] = Tile;\nTile.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n children: _propTypes[\"default\"].node.isRequired,\n formatAbbr: _propTypes[\"default\"].func,\n maxDateTransform: _propTypes[\"default\"].func.isRequired,\n minDateTransform: _propTypes[\"default\"].func.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isMaxDate = exports.isMinDate = exports.isValueType = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\n\nvar isValueType = _propTypes[\"default\"].oneOf(allValueTypes);\n\nexports.isValueType = isValueType;\n\nvar isMinDate = function isMinDate(props, propName, componentName) {\n var minDate = props[propName];\n\n if (!minDate) {\n return null;\n }\n\n if (!(minDate instanceof Date)) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n }\n\n var maxDate = props.maxDate;\n\n if (maxDate && minDate > maxDate) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(minDate), \"` supplied to `\").concat(componentName, \"`, minDate cannot be larger than maxDate.\"));\n }\n\n return null;\n};\n\nexports.isMinDate = isMinDate;\n\nvar isMaxDate = function isMaxDate(props, propName, componentName) {\n var maxDate = props[propName];\n\n if (!maxDate) {\n return null;\n }\n\n if (!(maxDate instanceof Date)) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, expected instance of `Date`.\"));\n }\n\n var minDate = props.minDate;\n\n if (minDate && maxDate < minDate) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(maxDate), \"` supplied to `\").concat(componentName, \"`, maxDate cannot be smaller than minDate.\"));\n }\n\n return null;\n};\n\nexports.isMaxDate = isMaxDate;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Input;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _updateInputWidth = _interopRequireWildcard(require(\"update-input-width\"));\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* eslint-disable jsx-a11y/no-autofocus */\nfunction onFocus(event) {\n var target = event.target;\n requestAnimationFrame(function () {\n return target.select();\n });\n}\n\nfunction updateInputWidthOnFontLoad(element) {\n if (!document.fonts) {\n return;\n }\n\n var font = (0, _updateInputWidth.getFontShorthand)(element);\n\n if (!font) {\n return;\n }\n\n var isFontLoaded = document.fonts.check(font);\n\n if (isFontLoaded) {\n return;\n }\n\n function onLoadingDone() {\n (0, _updateInputWidth[\"default\"])(element);\n }\n\n document.fonts.addEventListener('loadingdone', onLoadingDone);\n}\n\nfunction getSelectionString() {\n if (typeof window === 'undefined') {\n return null;\n }\n\n return window.getSelection().toString();\n}\n\nfunction makeOnKeyPress(maxLength) {\n return function onKeyPress(event) {\n var value = event.target.value;\n var selection = getSelectionString();\n\n if (selection || value.length < maxLength) {\n return;\n }\n\n event.preventDefault();\n };\n}\n\nfunction Input(_ref) {\n var ariaLabel = _ref.ariaLabel,\n autoFocus = _ref.autoFocus,\n className = _ref.className,\n disabled = _ref.disabled,\n itemRef = _ref.itemRef,\n max = _ref.max,\n min = _ref.min,\n name = _ref.name,\n nameForClass = _ref.nameForClass,\n onChange = _ref.onChange,\n onKeyDown = _ref.onKeyDown,\n _onKeyUp = _ref.onKeyUp,\n _ref$placeholder = _ref.placeholder,\n placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n required = _ref.required,\n showLeadingZeros = _ref.showLeadingZeros,\n step = _ref.step,\n value = _ref.value;\n var hasLeadingZero = showLeadingZeros && value !== null && value < 10;\n var maxLength = max.toString().length;\n return [hasLeadingZero && _react[\"default\"].createElement(\"span\", {\n key: \"leadingZero\",\n className: \"\".concat(className, \"__leadingZero\")\n }, \"0\"), _react[\"default\"].createElement(\"input\", {\n key: \"input\",\n \"aria-label\": ariaLabel,\n autoComplete: \"off\",\n autoFocus: autoFocus,\n className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(nameForClass || name), hasLeadingZero && \"\".concat(className, \"__input--hasLeadingZero\")),\n disabled: disabled,\n max: max,\n min: min,\n name: name,\n onChange: onChange,\n onFocus: onFocus,\n onKeyDown: onKeyDown,\n onKeyPress: makeOnKeyPress(maxLength),\n onKeyUp: function onKeyUp(event) {\n (0, _updateInputWidth[\"default\"])(event.target);\n\n if (_onKeyUp) {\n _onKeyUp(event);\n }\n },\n placeholder: placeholder,\n ref: function ref(_ref2) {\n if (_ref2) {\n (0, _updateInputWidth[\"default\"])(_ref2);\n updateInputWidthOnFontLoad(_ref2);\n }\n\n if (itemRef) {\n itemRef(_ref2, name);\n }\n },\n required: required,\n step: step,\n type: \"number\",\n value: value !== null ? value : ''\n })];\n}\n\nInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n itemRef: _propTypes[\"default\"].func,\n max: _propTypes[\"default\"].number,\n min: _propTypes[\"default\"].number,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n step: _propTypes[\"default\"].number,\n value: _propTypes[\"default\"].number\n};","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Flex;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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\nfunction toPercent(num) {\n return \"\".concat(num, \"%\");\n}\n\nfunction Flex(_ref) {\n var children = _ref.children,\n className = _ref.className,\n direction = _ref.direction,\n count = _ref.count,\n offset = _ref.offset,\n style = _ref.style,\n wrap = _ref.wrap,\n otherProps = _objectWithoutProperties(_ref, [\"children\", \"className\", \"direction\", \"count\", \"offset\", \"style\", \"wrap\"]);\n\n return _react[\"default\"].createElement(\"div\", _extends({\n className: className,\n style: _objectSpread({\n display: 'flex',\n flexDirection: direction,\n flexWrap: wrap ? 'wrap' : 'no-wrap'\n }, style)\n }, otherProps), _react[\"default\"].Children.map(children, function (child, index) {\n return _react[\"default\"].cloneElement(child, _objectSpread({}, child.props, {\n style: {\n flexBasis: toPercent(100 / count),\n maxWidth: toPercent(100 / count),\n overflow: 'hidden',\n marginLeft: offset && index === 0 ? toPercent(100 * offset / count) : null\n }\n }));\n }));\n}\n\nFlex.propTypes = {\n children: _propTypes[\"default\"].node,\n className: _propTypes[\"default\"].string,\n count: _propTypes[\"default\"].number.isRequired,\n direction: _propTypes[\"default\"].string,\n offset: _propTypes[\"default\"].number,\n style: _propTypes[\"default\"].objectOf(_propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].number])),\n wrap: _propTypes[\"default\"].bool\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isMarkWidth = exports.isMarkLength = exports.isHandWidth = exports.isOppositeHandLength = exports.isHandLength = void 0;\n\nvar _utils = require(\"./utils\");\n\nfunction _typeof(obj) { 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\nvar isNumberBetween = function isNumberBetween(min, max) {\n return function (props, propName, componentName) {\n var value = props[propName];\n\n if ((0, _utils.isDefined)(value)) {\n if (typeof value !== 'number') {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(value), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n }\n\n if (value < min || value > max) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(value), \"` supplied to `\").concat(componentName, \"`, length must be between \").concat(min, \" and \").concat(max, \".\"));\n }\n } // Everything is fine\n\n\n return null;\n };\n};\n\nvar isHandLength = isNumberBetween(0, 100);\nexports.isHandLength = isHandLength;\nvar isOppositeHandLength = isNumberBetween(-100, 100);\nexports.isOppositeHandLength = isOppositeHandLength;\n\nvar isHandWidth = function isHandWidth(props, propName, componentName) {\n var width = props[propName];\n\n if ((0, _utils.isDefined)(width)) {\n if (typeof width !== 'number') {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(width), \"` supplied to `\").concat(componentName, \"`, expected `number`.\"));\n }\n\n if (width < 0) {\n return new Error(\"Invalid prop `\".concat(propName, \"` of type `\").concat(_typeof(width), \"` supplied to `\").concat(componentName, \"`, width must be greater or equal to 0.\"));\n }\n } // Everything is fine\n\n\n return null;\n};\n\nexports.isHandWidth = isHandWidth;\nvar isMarkLength = isHandLength;\nexports.isMarkLength = isMarkLength;\nvar isMarkWidth = isHandWidth;\nexports.isMarkWidth = isMarkWidth;","\"use strict\";\n\nfunction _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\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Input;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _updateInputWidth = _interopRequireWildcard(require(\"update-input-width\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* eslint-disable jsx-a11y/no-autofocus */\nfunction onFocus(event) {\n var target = event.target;\n requestAnimationFrame(function () {\n return target.select();\n });\n}\n\nfunction updateInputWidthOnFontLoad(element) {\n if (!document.fonts) {\n return;\n }\n\n var font = (0, _updateInputWidth.getFontShorthand)(element);\n\n if (!font) {\n return;\n }\n\n var isFontLoaded = document.fonts.check(font);\n\n if (isFontLoaded) {\n return;\n }\n\n function onLoadingDone() {\n (0, _updateInputWidth[\"default\"])(element);\n }\n\n document.fonts.addEventListener('loadingdone', onLoadingDone);\n}\n\nfunction getSelectionString() {\n if (typeof window === 'undefined') {\n return null;\n }\n\n return window.getSelection().toString();\n}\n\nfunction makeOnKeyPress(maxLength) {\n return function onKeyPress(event) {\n var value = event.target.value;\n var selection = getSelectionString();\n\n if (selection || value.length < maxLength) {\n return;\n }\n\n event.preventDefault();\n };\n}\n\nfunction Input(_ref) {\n var ariaLabel = _ref.ariaLabel,\n autoFocus = _ref.autoFocus,\n className = _ref.className,\n disabled = _ref.disabled,\n itemRef = _ref.itemRef,\n max = _ref.max,\n min = _ref.min,\n name = _ref.name,\n nameForClass = _ref.nameForClass,\n onChange = _ref.onChange,\n onKeyDown = _ref.onKeyDown,\n _onKeyUp = _ref.onKeyUp,\n _ref$placeholder = _ref.placeholder,\n placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n required = _ref.required,\n showLeadingZeros = _ref.showLeadingZeros,\n step = _ref.step,\n value = _ref.value;\n var hasLeadingZero = showLeadingZeros && value !== null && value < 10;\n var maxLength = max.toString().length;\n return [hasLeadingZero && _react[\"default\"].createElement(\"span\", {\n key: \"leadingZero\",\n className: \"\".concat(className, \"__leadingZero\")\n }, \"0\"), _react[\"default\"].createElement(\"input\", {\n key: \"input\",\n \"aria-label\": ariaLabel,\n autoComplete: \"off\",\n autoFocus: autoFocus,\n className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(nameForClass || name), hasLeadingZero && \"\".concat(className, \"__input--hasLeadingZero\")),\n disabled: disabled,\n max: max,\n min: min,\n name: name,\n onChange: onChange,\n onFocus: onFocus,\n onKeyDown: onKeyDown,\n onKeyPress: makeOnKeyPress(maxLength),\n onKeyUp: function onKeyUp(event) {\n (0, _updateInputWidth[\"default\"])(event.target);\n\n if (_onKeyUp) {\n _onKeyUp(event);\n }\n },\n placeholder: placeholder,\n ref: function ref(_ref2) {\n if (_ref2) {\n (0, _updateInputWidth[\"default\"])(_ref2);\n updateInputWidthOnFontLoad(_ref2);\n }\n\n if (itemRef) {\n itemRef(_ref2, name);\n }\n },\n required: required,\n step: step,\n type: \"number\",\n value: value !== null ? value : ''\n })];\n}\n\nInput.propTypes = {\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n itemRef: _propTypes[\"default\"].func,\n max: _propTypes[\"default\"].number,\n min: _propTypes[\"default\"].number,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n step: _propTypes[\"default\"].number,\n value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convert12to24 = convert12to24;\nexports.convert24to12 = convert24to12;\n\nfunction convert12to24(hour12, amPm) {\n var hour24 = parseInt(hour12, 10);\n\n if (amPm === 'am' && hour24 === 12) {\n hour24 = 0;\n } else if (amPm === 'pm' && hour24 < 12) {\n hour24 += 12;\n }\n\n return hour24;\n}\n\nfunction convert24to12(hour24) {\n var hour12 = hour24 % 12 || 12;\n return [hour12, hour24 < 12 ? 'am' : 'pm'];\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"isMaxDate\", {\n enumerable: true,\n get: function get() {\n return _propTypes.isMaxDate;\n }\n});\nObject.defineProperty(exports, \"isMinDate\", {\n enumerable: true,\n get: function get() {\n return _propTypes.isMinDate;\n }\n});\nObject.defineProperty(exports, \"isValueType\", {\n enumerable: true,\n get: function get() {\n return _propTypes2.isValueType;\n }\n});\n\nvar _propTypes = require(\"react-calendar/dist/shared/propTypes\");\n\nvar _propTypes2 = require(\"react-time-picker/dist/shared/propTypes\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nrequire(\"react-calendar/dist/Calendar.css\");\n\nrequire(\"react-clock/dist/Clock.css\");\n\nvar _DateTimePicker = _interopRequireDefault(require(\"./DateTimePicker\"));\n\nrequire(\"./DateTimePicker.css\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n// File is created during build phase and placed in dist directory\n// eslint-disable-next-line import/no-unresolved\nvar _default = _DateTimePicker[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = CenturyView;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Decades = _interopRequireDefault(require(\"./CenturyView/Decades\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction CenturyView(props) {\n function renderDecades() {\n return _react[\"default\"].createElement(_Decades[\"default\"], props);\n }\n\n return _react[\"default\"].createElement(\"div\", {\n className: \"react-calendar__century-view\"\n }, renderDecades());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTileClasses = exports.between = exports.doRangesOverlap = exports.isRangeWithinRange = exports.isValueWithinRange = exports.callIfDefined = exports.mergeFunctions = void 0;\n\nvar _dates = require(\"./dates\");\n\n/**\n * Returns a function that, when called, calls all the functions\n * passed to it, applying its arguments to them.\n *\n * @param {Function[]} functions\n */\nvar mergeFunctions = function mergeFunctions() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return functions.filter(Boolean).forEach(function (f) {\n return f.apply(void 0, args);\n });\n };\n};\n/**\n * Calls a function, if it's defined, with specified arguments\n * @param {Function} fn\n * @param {Object} args\n */\n\n\nexports.mergeFunctions = mergeFunctions;\n\nvar callIfDefined = function callIfDefined(fn) {\n if (fn && typeof fn === 'function') {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n fn.apply(void 0, args);\n }\n};\n\nexports.callIfDefined = callIfDefined;\n\nvar isValueWithinRange = function isValueWithinRange(value, range) {\n return range[0] <= value && range[1] >= value;\n};\n\nexports.isValueWithinRange = isValueWithinRange;\n\nvar isRangeWithinRange = function isRangeWithinRange(greaterRange, smallerRange) {\n return greaterRange[0] <= smallerRange[0] && greaterRange[1] >= smallerRange[1];\n};\n\nexports.isRangeWithinRange = isRangeWithinRange;\n\nvar doRangesOverlap = function doRangesOverlap(range1, range2) {\n return isValueWithinRange(range1[0], range2) || isValueWithinRange(range1[1], range2);\n};\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {*} value Value to return.\n * @param {*} min Minimum return value.\n * @param {*} max Maximum return value.\n */\n\n\nexports.doRangesOverlap = doRangesOverlap;\n\nvar between = function between(value, min, max) {\n if (min && min > value) {\n return min;\n }\n\n if (max && max < value) {\n return max;\n }\n\n return value;\n};\n\nexports.between = between;\n\nvar getTileClasses = function getTileClasses() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n value = _ref.value,\n valueType = _ref.valueType,\n date = _ref.date,\n dateType = _ref.dateType,\n hover = _ref.hover;\n\n var className = 'react-calendar__tile';\n var classes = [className];\n\n if (!date) {\n return classes;\n }\n\n if (!(date instanceof Array) && !dateType) {\n throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n }\n\n var now = new Date();\n var dateRange = date instanceof Array ? date : (0, _dates.getRange)(dateType, date);\n\n if (isValueWithinRange(now, dateRange)) {\n classes.push(\"\".concat(className, \"--now\"));\n }\n\n if (!value) {\n return classes;\n }\n\n if (!(value instanceof Array) && !valueType) {\n throw new Error('getTileClasses(): Unable to get tile activity classes because one or more required arguments were not passed.');\n }\n\n var valueRange = value instanceof Array ? value : (0, _dates.getRange)(valueType, value);\n\n if (isRangeWithinRange(valueRange, dateRange)) {\n classes.push(\"\".concat(className, \"--active\"));\n } else if (doRangesOverlap(valueRange, dateRange)) {\n classes.push(\"\".concat(className, \"--hasActive\"));\n } else if (hover && ( // Date before value\n dateRange[1] < valueRange[0] && doRangesOverlap(dateRange, [hover, valueRange[0]]) || // Date after value\n dateRange[0] > valueRange[1] && doRangesOverlap(dateRange, [valueRange[1], hover]))) {\n classes.push(\"\".concat(className, \"--hover\"));\n }\n\n var isRangeStart = isValueWithinRange(valueRange[0], dateRange);\n var isRangeEnd = isValueWithinRange(valueRange[1], dateRange);\n\n if (isRangeStart) {\n classes.push(\"\".concat(className, \"--rangeStart\"));\n }\n\n if (isRangeEnd) {\n classes.push(\"\".concat(className, \"--rangeEnd\"));\n }\n\n if (isRangeStart && isRangeEnd) {\n classes.push(\"\".concat(className, \"--rangeBothEnds\"));\n }\n\n return classes;\n};\n\nexports.getTileClasses = getTileClasses;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = DecadeView;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Years = _interopRequireDefault(require(\"./DecadeView/Years\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction DecadeView(props) {\n function renderYears() {\n return _react[\"default\"].createElement(_Years[\"default\"], props);\n }\n\n return _react[\"default\"].createElement(\"div\", {\n className: \"react-calendar__decade-view\"\n }, renderYears());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = YearView;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Months = _interopRequireDefault(require(\"./YearView/Months\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction YearView(props) {\n function renderMonths() {\n return _react[\"default\"].createElement(_Months[\"default\"], props);\n }\n\n return _react[\"default\"].createElement(\"div\", {\n className: \"react-calendar__year-view\"\n }, renderMonths());\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = MonthView;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Days = _interopRequireDefault(require(\"./MonthView/Days\"));\n\nvar _Weekdays = _interopRequireDefault(require(\"./MonthView/Weekdays\"));\n\nvar _WeekNumbers = _interopRequireDefault(require(\"./MonthView/WeekNumbers\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\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\nfunction MonthView(props) {\n var activeStartDate = props.activeStartDate,\n locale = props.locale,\n onMouseLeave = props.onMouseLeave,\n showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n\n var calendarTypeProps = props.calendarType,\n formatShortWeekday = props.formatShortWeekday,\n onClickWeekNumber = props.onClickWeekNumber,\n showWeekNumbers = props.showWeekNumbers,\n childProps = _objectWithoutProperties(props, [\"calendarType\", \"formatShortWeekday\", \"onClickWeekNumber\", \"showWeekNumbers\"]);\n\n var calendarType = function () {\n if (calendarTypeProps) {\n return calendarTypeProps;\n }\n\n switch (locale) {\n case 'en-CA':\n case 'en-US':\n case 'es-AR':\n case 'es-BO':\n case 'es-CL':\n case 'es-CO':\n case 'es-CR':\n case 'es-DO':\n case 'es-EC':\n case 'es-GT':\n case 'es-HN':\n case 'es-MX':\n case 'es-NI':\n case 'es-PA':\n case 'es-PE':\n case 'es-PR':\n case 'es-SV':\n case 'es-VE':\n case 'pt-BR':\n return 'US';\n // ar-LB, ar-MA intentionally missing\n\n case 'ar':\n case 'ar-AE':\n case 'ar-BH':\n case 'ar-DZ':\n case 'ar-EG':\n case 'ar-IQ':\n case 'ar-JO':\n case 'ar-KW':\n case 'ar-LY':\n case 'ar-OM':\n case 'ar-QA':\n case 'ar-SA':\n case 'ar-SD':\n case 'ar-SY':\n case 'ar-YE':\n case 'dv':\n case 'dv-MV':\n case 'ps':\n case 'ps-AR':\n return 'Arabic';\n\n case 'he':\n case 'he-IL':\n return 'Hebrew';\n\n default:\n return 'ISO 8601';\n }\n }();\n\n function renderWeekdays() {\n return _react[\"default\"].createElement(_Weekdays[\"default\"], {\n calendarType: calendarType,\n formatShortWeekday: formatShortWeekday,\n locale: locale,\n onMouseLeave: onMouseLeave\n });\n }\n\n function renderWeekNumbers() {\n if (!showWeekNumbers) {\n return null;\n }\n\n return _react[\"default\"].createElement(_WeekNumbers[\"default\"], {\n activeStartDate: activeStartDate,\n calendarType: calendarType,\n onClickWeekNumber: onClickWeekNumber,\n onMouseLeave: onMouseLeave,\n showFixedNumberOfWeeks: showFixedNumberOfWeeks\n });\n }\n\n function renderDays() {\n return _react[\"default\"].createElement(_Days[\"default\"], _extends({\n calendarType: calendarType\n }, childProps));\n }\n\n var className = 'react-calendar__month-view';\n return _react[\"default\"].createElement(\"div\", {\n className: [className, showWeekNumbers ? \"\".concat(className, \"--weekNumbers\") : ''].join(' ')\n }, _react[\"default\"].createElement(\"div\", {\n style: {\n display: 'flex',\n alignItems: 'flex-end'\n }\n }, renderWeekNumbers(), _react[\"default\"].createElement(\"div\", {\n style: {\n flexGrow: 1,\n width: '100%'\n }\n }, renderWeekdays(), renderDays())));\n}\n\nMonthView.propTypes = {\n activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n calendarType: _propTypes2.isCalendarType,\n formatShortWeekday: _propTypes[\"default\"].func,\n locale: _propTypes[\"default\"].string,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n onChange: _propTypes[\"default\"].func,\n onClickWeekNumber: _propTypes[\"default\"].func,\n onMouseLeave: _propTypes[\"default\"].func,\n setActiveRange: _propTypes[\"default\"].func,\n showFixedNumberOfWeeks: _propTypes[\"default\"].bool,\n showNeighboringMonth: _propTypes[\"default\"].bool,\n showWeekNumbers: _propTypes[\"default\"].bool,\n value: _propTypes2.isValue,\n valueType: _propTypes[\"default\"].string\n};","var allowedVariants = ['normal', 'small-caps'];\n/**\n * Gets font CSS shorthand property given element.\n *\n * @param {HTMLElement} element Element to get font CSS shorthand property from\n */\n\nexport function getFontShorthand(element) {\n if (!element) {\n return '';\n }\n\n var style = window.getComputedStyle(element);\n\n if (style.font) {\n return style.font;\n }\n\n var isFontDefined = style['font-family'] !== '';\n\n if (!isFontDefined) {\n return '';\n }\n\n var fontVariant = allowedVariants.includes(style['font-variant']) ? style['font-variant'] : 'normal';\n return \"\".concat(style['font-style'], \" \").concat(fontVariant, \" \").concat(style['font-weight'], \" \").concat(style['font-size'], \" / \").concat(style['line-height'], \" \").concat(style['font-family']);\n}\n/**\n * Measures text width given text and font CSS shorthand.\n *\n * @param {string} text Text to measure\n * @param {string} font Font to use when measuring the text\n */\n\nexport function measureText(text, font) {\n var canvas = measureText.canvas || (measureText.canvas = document.createElement('canvas'));\n var context = canvas.getContext('2d'); // Context type not supported\n\n if (!context) {\n return null;\n }\n\n context.font = font;\n\n var _context$measureText = context.measureText(text),\n width = _context$measureText.width;\n\n return Math.ceil(width);\n}\n/**\n * Updates input element width to fit its content given input element\n * @param {HTMLInputElement} element\n */\n\nexport function updateInputWidth(element) {\n if (typeof window === 'undefined' || !element) {\n return null;\n }\n\n var font = getFontShorthand(element);\n var text = element.value || element.placeholder;\n var width = measureText(text, font);\n\n if (width === null) {\n return null;\n }\n\n element.style.width = \"\".concat(width, \"px\");\n return width;\n}\nexport default updateInputWidth;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"between\", {\n enumerable: true,\n get: function get() {\n return _utils.between;\n }\n});\nObject.defineProperty(exports, \"callIfDefined\", {\n enumerable: true,\n get: function get() {\n return _utils.callIfDefined;\n }\n});\nObject.defineProperty(exports, \"min\", {\n enumerable: true,\n get: function get() {\n return _utils.min;\n }\n});\nObject.defineProperty(exports, \"max\", {\n enumerable: true,\n get: function get() {\n return _utils.max;\n }\n});\nObject.defineProperty(exports, \"getAmPmLabels\", {\n enumerable: true,\n get: function get() {\n return _utils2.getAmPmLabels;\n }\n});\n\nvar _utils = require(\"react-date-picker/dist/shared/utils\");\n\nvar _utils2 = require(\"react-time-picker/dist/shared/utils\");","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _makeEventProps = _interopRequireDefault(require(\"make-event-props\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _reactFit = _interopRequireDefault(require(\"react-fit\"));\n\nvar _entry = _interopRequireDefault(require(\"react-calendar/dist/entry.nostyle\"));\n\nvar _entry2 = _interopRequireDefault(require(\"react-clock/dist/entry.nostyle\"));\n\nvar _DateTimeInput = _interopRequireDefault(require(\"./DateTimeInput\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nvar _utils = require(\"./shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _typeof(obj) { 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 _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\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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\nvar allViews = ['hour', 'minute', 'second'];\nvar baseClassName = 'react-datetime-picker';\nvar outsideActionEvents = ['mousedown', 'focusin', 'touchstart'];\n\nvar DateTimePicker =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(DateTimePicker, _PureComponent);\n\n function DateTimePicker() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, DateTimePicker);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(DateTimePicker)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"onOutsideAction\", function (event) {\n if (_this.wrapper && !_this.wrapper.contains(event.target)) {\n _this.closeWidgets();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDateChange\", function (value) {\n var closeWidgets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var prevValue = _this.props.value;\n\n if (prevValue) {\n var valueWithHour = new Date(value);\n valueWithHour.setHours(prevValue.getHours(), prevValue.getMinutes(), prevValue.getSeconds(), prevValue.getMilliseconds());\n\n _this.onChange(valueWithHour, closeWidgets);\n } else {\n _this.onChange(value, closeWidgets);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (value) {\n var closeWidgets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n _this.setState(function (prevState) {\n return {\n isCalendarOpen: prevState.isCalendarOpen && !closeWidgets,\n isClockOpen: prevState.isClockOpen && !closeWidgets\n };\n });\n\n var onChange = _this.props.onChange;\n\n if (onChange) {\n onChange(value);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function (event) {\n var _this$props = _this.props,\n disabled = _this$props.disabled,\n onFocus = _this$props.onFocus;\n\n if (onFocus) {\n onFocus(event);\n } // Internet Explorer still fires onFocus on disabled elements\n\n\n if (disabled) {\n return;\n }\n\n switch (event.target.name) {\n case 'day':\n case 'month':\n case 'year':\n _this.openCalendar();\n\n break;\n\n case 'hour12':\n case 'hour24':\n case 'minute':\n case 'second':\n _this.openClock();\n\n break;\n\n default:\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"openClock\", function () {\n _this.setState({\n isCalendarOpen: false,\n isClockOpen: true\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"openCalendar\", function () {\n _this.setState({\n isCalendarOpen: true,\n isClockOpen: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"toggleCalendar\", function () {\n _this.setState(function (prevState) {\n return {\n isCalendarOpen: !prevState.isCalendarOpen,\n isClockOpen: false\n };\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"closeWidgets\", function () {\n _this.setState(function (prevState) {\n if (!prevState.isCalendarOpen && !prevState.isClockOpen) {\n return null;\n }\n\n return {\n isCalendarOpen: false,\n isClockOpen: false\n };\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"stopPropagation\", function (event) {\n return event.stopPropagation();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clear\", function () {\n return _this.onChange(null);\n });\n\n return _this;\n }\n\n _createClass(DateTimePicker, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.handleOutsideActionListeners();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$state = this.state,\n isCalendarOpen = _this$state.isCalendarOpen,\n isClockOpen = _this$state.isClockOpen;\n var _this$props2 = this.props,\n onCalendarClose = _this$props2.onCalendarClose,\n onCalendarOpen = _this$props2.onCalendarOpen,\n onClockClose = _this$props2.onClockClose,\n onClockOpen = _this$props2.onClockOpen;\n var isWidgetOpen = isCalendarOpen || isClockOpen;\n var prevIsWidgetOpen = prevState.isCalendarOpen || prevState.isClockOpen;\n\n if (isWidgetOpen !== prevIsWidgetOpen) {\n this.handleOutsideActionListeners();\n }\n\n if (isCalendarOpen !== prevState.isCalendarOpen) {\n (0, _utils.callIfDefined)(isCalendarOpen ? onCalendarOpen : onCalendarClose);\n }\n\n if (isClockOpen !== prevState.isClockOpen) {\n (0, _utils.callIfDefined)(isClockOpen ? onClockOpen : onClockClose);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.handleOutsideActionListeners(false);\n }\n }, {\n key: \"handleOutsideActionListeners\",\n value: function handleOutsideActionListeners(shouldListen) {\n var _this2 = this;\n\n var _this$state2 = this.state,\n isCalendarOpen = _this$state2.isCalendarOpen,\n isClockOpen = _this$state2.isClockOpen;\n var isWidgetOpen = isCalendarOpen || isClockOpen;\n var shouldListenWithFallback = typeof shouldListen !== 'undefined' ? shouldListen : isWidgetOpen;\n var fnName = shouldListenWithFallback ? 'addEventListener' : 'removeEventListener';\n outsideActionEvents.forEach(function (eventName) {\n return document[fnName](eventName, _this2.onOutsideAction);\n });\n }\n }, {\n key: \"renderInputs\",\n value: function renderInputs() {\n var _this$props3 = this.props,\n amPmAriaLabel = _this$props3.amPmAriaLabel,\n autoFocus = _this$props3.autoFocus,\n calendarAriaLabel = _this$props3.calendarAriaLabel,\n calendarIcon = _this$props3.calendarIcon,\n clearAriaLabel = _this$props3.clearAriaLabel,\n clearIcon = _this$props3.clearIcon,\n dayAriaLabel = _this$props3.dayAriaLabel,\n dayPlaceholder = _this$props3.dayPlaceholder,\n disableCalendar = _this$props3.disableCalendar,\n disabled = _this$props3.disabled,\n format = _this$props3.format,\n hourAriaLabel = _this$props3.hourAriaLabel,\n hourPlaceholder = _this$props3.hourPlaceholder,\n locale = _this$props3.locale,\n maxDate = _this$props3.maxDate,\n maxDetail = _this$props3.maxDetail,\n minDate = _this$props3.minDate,\n minuteAriaLabel = _this$props3.minuteAriaLabel,\n minutePlaceholder = _this$props3.minutePlaceholder,\n monthAriaLabel = _this$props3.monthAriaLabel,\n monthPlaceholder = _this$props3.monthPlaceholder,\n name = _this$props3.name,\n nativeInputAriaLabel = _this$props3.nativeInputAriaLabel,\n required = _this$props3.required,\n secondAriaLabel = _this$props3.secondAriaLabel,\n secondPlaceholder = _this$props3.secondPlaceholder,\n showLeadingZeros = _this$props3.showLeadingZeros,\n value = _this$props3.value,\n yearAriaLabel = _this$props3.yearAriaLabel,\n yearPlaceholder = _this$props3.yearPlaceholder;\n var _this$state3 = this.state,\n isCalendarOpen = _this$state3.isCalendarOpen,\n isClockOpen = _this$state3.isClockOpen;\n\n var _concat = [].concat(value),\n _concat2 = _slicedToArray(_concat, 1),\n valueFrom = _concat2[0];\n\n var ariaLabelProps = {\n amPmAriaLabel: amPmAriaLabel,\n dayAriaLabel: dayAriaLabel,\n hourAriaLabel: hourAriaLabel,\n minuteAriaLabel: minuteAriaLabel,\n monthAriaLabel: monthAriaLabel,\n nativeInputAriaLabel: nativeInputAriaLabel,\n secondAriaLabel: secondAriaLabel,\n yearAriaLabel: yearAriaLabel\n };\n var placeholderProps = {\n dayPlaceholder: dayPlaceholder,\n hourPlaceholder: hourPlaceholder,\n minutePlaceholder: minutePlaceholder,\n monthPlaceholder: monthPlaceholder,\n secondPlaceholder: secondPlaceholder,\n yearPlaceholder: yearPlaceholder\n };\n return _react[\"default\"].createElement(\"div\", {\n className: \"\".concat(baseClassName, \"__wrapper\")\n }, _react[\"default\"].createElement(_DateTimeInput[\"default\"], _extends({}, ariaLabelProps, placeholderProps, {\n autoFocus: autoFocus,\n className: \"\".concat(baseClassName, \"__inputGroup\"),\n disabled: disabled,\n format: format,\n isWidgetOpen: isCalendarOpen || isClockOpen,\n locale: locale,\n maxDate: maxDate,\n maxDetail: maxDetail,\n minDate: minDate,\n name: name,\n onChange: this.onChange,\n placeholder: this.placeholder,\n required: required,\n showLeadingZeros: showLeadingZeros,\n value: valueFrom\n })), clearIcon !== null && _react[\"default\"].createElement(\"button\", {\n \"aria-label\": clearAriaLabel,\n className: \"\".concat(baseClassName, \"__clear-button \").concat(baseClassName, \"__button\"),\n disabled: disabled,\n onClick: this.clear,\n onFocus: this.stopPropagation,\n type: \"button\"\n }, clearIcon), calendarIcon !== null && !disableCalendar && _react[\"default\"].createElement(\"button\", {\n \"aria-label\": calendarAriaLabel,\n className: \"\".concat(baseClassName, \"__calendar-button \").concat(baseClassName, \"__button\"),\n disabled: disabled,\n onBlur: this.resetValue,\n onClick: this.toggleCalendar,\n onFocus: this.stopPropagation,\n type: \"button\"\n }, calendarIcon));\n }\n }, {\n key: \"renderCalendar\",\n value: function renderCalendar() {\n var disableCalendar = this.props.disableCalendar;\n var isCalendarOpen = this.state.isCalendarOpen;\n\n if (isCalendarOpen === null || disableCalendar) {\n return null;\n }\n\n var _this$props4 = this.props,\n calendarClassName = _this$props4.calendarClassName,\n dateTimePickerClassName = _this$props4.className,\n dateTimePickerMaxDetail = _this$props4.maxDetail,\n onChange = _this$props4.onChange,\n value = _this$props4.value,\n calendarProps = _objectWithoutProperties(_this$props4, [\"calendarClassName\", \"className\", \"maxDetail\", \"onChange\", \"value\"]);\n\n var className = \"\".concat(baseClassName, \"__calendar\");\n return _react[\"default\"].createElement(_reactFit[\"default\"], null, _react[\"default\"].createElement(\"div\", {\n className: (0, _mergeClassNames[\"default\"])(className, \"\".concat(className, \"--\").concat(isCalendarOpen ? 'open' : 'closed'))\n }, _react[\"default\"].createElement(_entry[\"default\"], _extends({\n className: calendarClassName,\n onChange: this.onDateChange,\n value: value || null\n }, calendarProps))));\n }\n }, {\n key: \"renderClock\",\n value: function renderClock() {\n var disableClock = this.props.disableClock;\n var isClockOpen = this.state.isClockOpen;\n\n if (isClockOpen === null || disableClock) {\n return null;\n }\n\n var _this$props5 = this.props,\n clockClassName = _this$props5.clockClassName,\n dateTimePickerClassName = _this$props5.className,\n maxDetail = _this$props5.maxDetail,\n onChange = _this$props5.onChange,\n value = _this$props5.value,\n clockProps = _objectWithoutProperties(_this$props5, [\"clockClassName\", \"className\", \"maxDetail\", \"onChange\", \"value\"]);\n\n var className = \"\".concat(baseClassName, \"__clock\");\n\n var _concat3 = [].concat(value),\n _concat4 = _slicedToArray(_concat3, 1),\n valueFrom = _concat4[0];\n\n var maxDetailIndex = allViews.indexOf(maxDetail);\n return _react[\"default\"].createElement(_reactFit[\"default\"], null, _react[\"default\"].createElement(\"div\", {\n className: (0, _mergeClassNames[\"default\"])(className, \"\".concat(className, \"--\").concat(isClockOpen ? 'open' : 'closed'))\n }, _react[\"default\"].createElement(_entry2[\"default\"], _extends({\n className: clockClassName,\n renderMinuteHand: maxDetailIndex > 0,\n renderSecondHand: maxDetailIndex > 1,\n value: valueFrom\n }, clockProps))));\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props6 = this.props,\n className = _this$props6.className,\n disabled = _this$props6.disabled;\n var _this$state4 = this.state,\n isCalendarOpen = _this$state4.isCalendarOpen,\n isClockOpen = _this$state4.isClockOpen;\n return _react[\"default\"].createElement(\"div\", _extends({\n className: (0, _mergeClassNames[\"default\"])(baseClassName, \"\".concat(baseClassName, \"--\").concat(isCalendarOpen || isClockOpen ? 'open' : 'closed'), \"\".concat(baseClassName, \"--\").concat(disabled ? 'disabled' : 'enabled'), className)\n }, this.eventProps, {\n onFocus: this.onFocus,\n ref: function ref(_ref) {\n if (!_ref) {\n return;\n }\n\n _this3.wrapper = _ref;\n }\n }), this.renderInputs(), this.renderCalendar(), this.renderClock());\n }\n }, {\n key: \"eventProps\",\n get: function get() {\n return (0, _makeEventProps[\"default\"])(this.props);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var nextState = {};\n\n if (nextProps.isCalendarOpen !== prevState.isCalendarOpenProps) {\n nextState.isCalendarOpen = nextProps.isCalendarOpen;\n nextState.isCalendarOpenProps = nextProps.isCalendarOpen;\n }\n\n if (nextProps.isClockOpen !== prevState.isClockOpenProps) {\n nextState.isClockOpen = nextProps.isClockOpen;\n nextState.isClockOpenProps = nextProps.isClockOpen;\n }\n\n return nextState;\n }\n }]);\n\n return DateTimePicker;\n}(_react.PureComponent);\n\nexports[\"default\"] = DateTimePicker;\nvar iconProps = {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 19,\n height: 19,\n viewBox: '0 0 19 19',\n stroke: 'black',\n strokeWidth: 2\n};\n\nvar CalendarIcon = _react[\"default\"].createElement(\"svg\", _extends({}, iconProps, {\n className: \"\".concat(baseClassName, \"__calendar-button__icon \").concat(baseClassName, \"__button__icon\")\n}), _react[\"default\"].createElement(\"rect\", {\n fill: \"none\",\n height: \"15\",\n width: \"15\",\n x: \"2\",\n y: \"2\"\n}), _react[\"default\"].createElement(\"line\", {\n x1: \"6\",\n x2: \"6\",\n y1: \"0\",\n y2: \"4\"\n}), _react[\"default\"].createElement(\"line\", {\n x1: \"13\",\n x2: \"13\",\n y1: \"0\",\n y2: \"4\"\n}));\n\nvar ClearIcon = _react[\"default\"].createElement(\"svg\", _extends({}, iconProps, {\n className: \"\".concat(baseClassName, \"__clear-button__icon \").concat(baseClassName, \"__button__icon\")\n}), _react[\"default\"].createElement(\"line\", {\n x1: \"4\",\n x2: \"15\",\n y1: \"4\",\n y2: \"15\"\n}), _react[\"default\"].createElement(\"line\", {\n x1: \"15\",\n x2: \"4\",\n y1: \"4\",\n y2: \"15\"\n}));\n\nDateTimePicker.defaultProps = {\n calendarIcon: CalendarIcon,\n clearIcon: ClearIcon,\n isCalendarOpen: null,\n isClockOpen: null,\n maxDetail: 'minute'\n};\n\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]);\n\nDateTimePicker.propTypes = {\n amPmAriaLabel: _propTypes[\"default\"].string,\n autoFocus: _propTypes[\"default\"].bool,\n calendarAriaLabel: _propTypes[\"default\"].string,\n calendarClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n calendarIcon: _propTypes[\"default\"].node,\n className: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n clearAriaLabel: _propTypes[\"default\"].string,\n clearIcon: _propTypes[\"default\"].node,\n clockClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n dayAriaLabel: _propTypes[\"default\"].string,\n dayPlaceholder: _propTypes[\"default\"].string,\n disableCalendar: _propTypes[\"default\"].bool,\n disableClock: _propTypes[\"default\"].bool,\n disabled: _propTypes[\"default\"].bool,\n format: _propTypes[\"default\"].string,\n hourAriaLabel: _propTypes[\"default\"].string,\n hourPlaceholder: _propTypes[\"default\"].string,\n isCalendarOpen: _propTypes[\"default\"].bool,\n isClockOpen: _propTypes[\"default\"].bool,\n locale: _propTypes[\"default\"].string,\n maxDate: _propTypes2.isMaxDate,\n maxDetail: _propTypes[\"default\"].oneOf(allViews),\n minDate: _propTypes2.isMinDate,\n minuteAriaLabel: _propTypes[\"default\"].string,\n minutePlaceholder: _propTypes[\"default\"].string,\n monthAriaLabel: _propTypes[\"default\"].string,\n monthPlaceholder: _propTypes[\"default\"].string,\n name: _propTypes[\"default\"].string,\n nativeInputAriaLabel: _propTypes[\"default\"].string,\n onCalendarClose: _propTypes[\"default\"].func,\n onCalendarOpen: _propTypes[\"default\"].func,\n onChange: _propTypes[\"default\"].func,\n onClockClose: _propTypes[\"default\"].func,\n onClockOpen: _propTypes[\"default\"].func,\n onFocus: _propTypes[\"default\"].func,\n required: _propTypes[\"default\"].bool,\n secondAriaLabel: _propTypes[\"default\"].string,\n secondPlaceholder: _propTypes[\"default\"].string,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].oneOfType([isValue, _propTypes[\"default\"].arrayOf(isValue)]),\n yearAriaLabel: _propTypes[\"default\"].string,\n yearPlaceholder: _propTypes[\"default\"].string\n};\n(0, _reactLifecyclesCompat.polyfill)(DateTimePicker);","// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport var clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport var compositionEvents = ['onCompositionEnd', 'onCompositionStart', 'onCompositionUpdate'];\nexport var keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport var focusEvents = ['onFocus', 'onBlur'];\nexport var formEvents = ['onChange', 'onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport var genericEvents = ['onError', 'onLoad'];\nexport var mouseEvents = ['onClick', 'onContextMenu', 'onDoubleClick', 'onDrag', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp'];\nexport var pointerEvents = ['onPointerDown', 'onPointerMove', 'onPointerUp', 'onPointerCancel', 'onGotPointerCapture', 'onLostPointerCapture', 'onPointerEnter', 'onPointerLeave', 'onPointerOver', 'onPointerOut'];\nexport var selectionEvents = ['onSelect'];\nexport var touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport var uiEvents = ['onScroll'];\nexport var wheelEvents = ['onWheel'];\nexport var mediaEvents = ['onAbort', 'onCanPlay', 'onCanPlayThrough', 'onDurationChange', 'onEmptied', 'onEncrypted', 'onEnded', 'onError', 'onLoadedData', 'onLoadedMetadata', 'onLoadStart', 'onPause', 'onPlay', 'onPlaying', 'onProgress', 'onRateChange', 'onSeeked', 'onSeeking', 'onStalled', 'onSuspend', 'onTimeUpdate', 'onVolumeChange', 'onWaiting'];\nexport var imageEvents = ['onLoad', 'onError'];\nexport var animationEvents = ['onAnimationStart', 'onAnimationEnd', 'onAnimationIteration'];\nexport var transitionEvents = ['onTransitionEnd'];\nexport var otherEvents = ['onToggle'];\nexport var allEvents = [].concat(clipboardEvents, compositionEvents, keyboardEvents, focusEvents, formEvents, genericEvents, mouseEvents, pointerEvents, selectionEvents, touchEvents, uiEvents, wheelEvents, mediaEvents, imageEvents, animationEvents, transitionEvents, otherEvents);\n/**\n * Returns an object with on-event callback props curried with provided args.\n * @param {Object} props Props passed to a component.\n * @param {Function=} getArgs A function that returns argument(s) on-event callbacks\n * shall be curried with.\n */\n\nvar makeEventProps = function makeEventProps(props, getArgs) {\n var eventProps = {};\n allEvents.forEach(function (eventName) {\n if (!(eventName in props)) {\n return;\n }\n\n if (!getArgs) {\n eventProps[eventName] = props[eventName];\n return;\n }\n\n eventProps[eventName] = function (event) {\n return props[eventName](event, getArgs(eventName));\n };\n });\n return eventProps;\n};\n\nexport default makeEventProps;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Calendar\", {\n enumerable: true,\n get: function get() {\n return _Calendar[\"default\"];\n }\n});\nObject.defineProperty(exports, \"CenturyView\", {\n enumerable: true,\n get: function get() {\n return _CenturyView[\"default\"];\n }\n});\nObject.defineProperty(exports, \"DecadeView\", {\n enumerable: true,\n get: function get() {\n return _DecadeView[\"default\"];\n }\n});\nObject.defineProperty(exports, \"YearView\", {\n enumerable: true,\n get: function get() {\n return _YearView[\"default\"];\n }\n});\nObject.defineProperty(exports, \"MonthView\", {\n enumerable: true,\n get: function get() {\n return _MonthView[\"default\"];\n }\n});\nexports[\"default\"] = void 0;\n\nvar _Calendar = _interopRequireDefault(require(\"./Calendar\"));\n\nvar _CenturyView = _interopRequireDefault(require(\"./CenturyView\"));\n\nvar _DecadeView = _interopRequireDefault(require(\"./DecadeView\"));\n\nvar _YearView = _interopRequireDefault(require(\"./YearView\"));\n\nvar _MonthView = _interopRequireDefault(require(\"./MonthView\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _Calendar[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _Navigation = _interopRequireDefault(require(\"./Calendar/Navigation\"));\n\nvar _CenturyView = _interopRequireDefault(require(\"./CenturyView\"));\n\nvar _DecadeView = _interopRequireDefault(require(\"./DecadeView\"));\n\nvar _YearView = _interopRequireDefault(require(\"./YearView\"));\n\nvar _MonthView = _interopRequireDefault(require(\"./MonthView\"));\n\nvar _dates = require(\"./shared/dates\");\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nvar _utils = require(\"./shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _typeof(obj) { 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 _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar baseClassName = 'react-calendar';\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = [].concat(_toConsumableArray(allViews.slice(1)), ['day']);\n\nvar datesAreDifferent = function datesAreDifferent(date1, date2) {\n return date1 && !date2 || !date1 && date2 || date1 && date2 && date1.getTime() !== date2.getTime();\n};\n/**\n * Returns views array with disallowed values cut off.\n */\n\n\nvar getLimitedViews = function getLimitedViews(minDetail, maxDetail) {\n return allViews.slice(allViews.indexOf(minDetail), allViews.indexOf(maxDetail) + 1);\n};\n/**\n * Determines whether a given view is allowed with currently applied settings.\n */\n\n\nvar isViewAllowed = function isViewAllowed(view, minDetail, maxDetail) {\n var views = getLimitedViews(minDetail, maxDetail);\n return views.indexOf(view) !== -1;\n};\n/**\n * Gets either provided view if allowed by minDetail and maxDetail, or gets\n * the default view if not allowed.\n */\n\n\nvar getView = function getView(view, minDetail, maxDetail) {\n if (isViewAllowed(view, minDetail, maxDetail)) {\n return view;\n }\n\n return getLimitedViews(minDetail, maxDetail).pop();\n};\n/**\n * Returns value type that can be returned with currently applied settings.\n */\n\n\nvar getValueType = function getValueType(maxDetail) {\n return allValueTypes[allViews.indexOf(maxDetail)];\n};\n\nvar getValueFrom = function getValueFrom(value) {\n if (!value) {\n return null;\n }\n\n var rawValueFrom = value instanceof Array && value.length === 2 ? value[0] : value;\n\n if (!rawValueFrom) {\n return null;\n }\n\n var valueFromDate = new Date(rawValueFrom);\n\n if (isNaN(valueFromDate.getTime())) {\n throw new Error(\"Invalid date: \".concat(value));\n }\n\n return valueFromDate;\n};\n\nvar getDetailValueFrom = function getDetailValueFrom(value, minDate, maxDate, maxDetail) {\n var valueFrom = getValueFrom(value);\n\n if (!valueFrom) {\n return null;\n }\n\n var detailValueFrom = (0, _dates.getBegin)(getValueType(maxDetail), valueFrom);\n return (0, _utils.between)(detailValueFrom, minDate, maxDate);\n};\n\nvar getValueTo = function getValueTo(value) {\n if (!value) {\n return null;\n }\n\n var rawValueTo = value instanceof Array && value.length === 2 ? value[1] : value;\n\n if (!rawValueTo) {\n return null;\n }\n\n var valueToDate = new Date(rawValueTo);\n\n if (isNaN(valueToDate.getTime())) {\n throw new Error(\"Invalid date: \".concat(value));\n }\n\n return valueToDate;\n};\n\nvar getDetailValueTo = function getDetailValueTo(value, minDate, maxDate, maxDetail) {\n var valueTo = getValueTo(value);\n\n if (!valueTo) {\n return null;\n }\n\n var detailValueTo = (0, _dates.getEnd)(getValueType(maxDetail), valueTo);\n return (0, _utils.between)(detailValueTo, minDate, maxDate);\n};\n\nvar getDetailValueArray = function getDetailValueArray(value, minDate, maxDate, maxDetail) {\n if (value instanceof Array) {\n return value;\n }\n\n return [getDetailValueFrom(value, minDate, maxDate, maxDetail), getDetailValueTo(value, minDate, maxDate, maxDetail)];\n};\n\nvar getActiveStartDate = function getActiveStartDate(props) {\n var activeStartDate = props.activeStartDate,\n maxDate = props.maxDate,\n maxDetail = props.maxDetail,\n minDate = props.minDate,\n minDetail = props.minDetail,\n value = props.value,\n view = props.view;\n var rangeType = getView(view, minDetail, maxDetail);\n var valueFrom = getDetailValueFrom(value, minDate, maxDate, maxDetail) || activeStartDate || new Date();\n return (0, _dates.getBegin)(rangeType, valueFrom);\n};\n\nvar Calendar =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Calendar, _Component);\n\n function Calendar() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Calendar);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Calendar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"setActiveStartDate\", function (activeStartDate) {\n var onActiveDateChange = _this.props.onActiveDateChange;\n\n _this.setState({\n activeStartDate: activeStartDate\n }, function () {\n var view = _this.state.view;\n (0, _utils.callIfDefined)(onActiveDateChange, {\n activeStartDate: activeStartDate,\n view: view\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"drillDown\", function (activeStartDate) {\n if (!_this.drillDownAvailable) {\n return;\n }\n\n var _this$props = _this.props,\n maxDetail = _this$props.maxDetail,\n minDetail = _this$props.minDetail,\n onDrillDown = _this$props.onDrillDown;\n var views = getLimitedViews(minDetail, maxDetail);\n\n _this.setState(function (prevState) {\n var nextView = views[views.indexOf(prevState.view) + 1];\n return {\n activeStartDate: activeStartDate,\n view: nextView\n };\n }, function () {\n var view = _this.state.view;\n (0, _utils.callIfDefined)(onDrillDown, {\n activeStartDate: activeStartDate,\n view: view\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"drillUp\", function () {\n if (!_this.drillUpAvailable) {\n return;\n }\n\n var _this$props2 = _this.props,\n maxDetail = _this$props2.maxDetail,\n minDetail = _this$props2.minDetail,\n onDrillUp = _this$props2.onDrillUp;\n var views = getLimitedViews(minDetail, maxDetail);\n\n _this.setState(function (prevState) {\n var nextView = views[views.indexOf(prevState.view) - 1];\n var activeStartDate = (0, _dates.getBegin)(nextView, prevState.activeStartDate);\n return {\n activeStartDate: activeStartDate,\n view: nextView\n };\n }, function () {\n var _this$state = _this.state,\n activeStartDate = _this$state.activeStartDate,\n view = _this$state.view;\n (0, _utils.callIfDefined)(onDrillUp, {\n activeStartDate: activeStartDate,\n view: view\n });\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (value) {\n var _this$props3 = _this.props,\n onChange = _this$props3.onChange,\n selectRange = _this$props3.selectRange;\n var nextValue;\n var callback;\n\n if (selectRange) {\n var previousValue = _this.state.value; // Range selection turned on\n\n if (!previousValue || [].concat(previousValue).length !== 1 // 0 or 2 - either way we're starting a new array\n ) {\n // First value\n nextValue = (0, _dates.getBegin)(_this.valueType, value);\n } else {\n // Second value\n nextValue = (0, _dates.getValueRange)(_this.valueType, previousValue, value);\n\n callback = function callback() {\n return (0, _utils.callIfDefined)(onChange, nextValue);\n };\n }\n } else {\n // Range selection turned off\n nextValue = _this.getProcessedValue(value);\n\n callback = function callback() {\n return (0, _utils.callIfDefined)(onChange, nextValue);\n };\n }\n\n _this.setState({\n value: nextValue\n }, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseOver\", function (value) {\n _this.setState(function (prevState) {\n if (prevState.hover && prevState.hover.getTime() === value.getTime()) {\n return null;\n }\n\n return {\n hover: value\n };\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onMouseLeave\", function () {\n _this.setState({\n hover: null\n });\n });\n\n return _this;\n }\n\n _createClass(Calendar, [{\n key: \"getProcessedValue\",\n\n /**\n * Gets current value in a desired format.\n */\n value: function getProcessedValue(value) {\n var _this$props4 = this.props,\n minDate = _this$props4.minDate,\n maxDate = _this$props4.maxDate,\n maxDetail = _this$props4.maxDetail,\n returnValue = _this$props4.returnValue;\n\n var processFunction = function () {\n switch (returnValue) {\n case 'start':\n return getDetailValueFrom;\n\n case 'end':\n return getDetailValueTo;\n\n case 'range':\n return getDetailValueArray;\n\n default:\n throw new Error('Invalid returnValue.');\n }\n }();\n\n return processFunction(value, minDate, maxDate, maxDetail);\n }\n /**\n * Called when the user uses navigation buttons.\n */\n\n }, {\n key: \"renderContent\",\n value: function renderContent() {\n var _this$props5 = this.props,\n calendarType = _this$props5.calendarType,\n locale = _this$props5.locale,\n maxDate = _this$props5.maxDate,\n minDate = _this$props5.minDate,\n renderChildren = _this$props5.renderChildren,\n selectRange = _this$props5.selectRange,\n tileClassName = _this$props5.tileClassName,\n tileContent = _this$props5.tileContent,\n tileDisabled = _this$props5.tileDisabled;\n var _this$state2 = this.state,\n activeStartDate = _this$state2.activeStartDate,\n hover = _this$state2.hover,\n value = _this$state2.value,\n view = _this$state2.view;\n var onMouseOver = this.onMouseOver,\n valueType = this.valueType;\n var commonProps = {\n activeStartDate: activeStartDate,\n hover: hover,\n locale: locale,\n maxDate: maxDate,\n minDate: minDate,\n onMouseOver: selectRange ? onMouseOver : null,\n tileClassName: tileClassName,\n tileContent: tileContent || renderChildren,\n // For backwards compatibility\n tileDisabled: tileDisabled,\n value: value,\n valueType: valueType\n };\n var clickAction = this.drillDownAvailable ? this.drillDown : this.onChange;\n\n switch (view) {\n case 'century':\n {\n var onClickDecade = this.props.onClickDecade;\n return _react[\"default\"].createElement(_CenturyView[\"default\"], _extends({\n onClick: (0, _utils.mergeFunctions)(clickAction, onClickDecade)\n }, commonProps));\n }\n\n case 'decade':\n {\n var onClickYear = this.props.onClickYear;\n return _react[\"default\"].createElement(_DecadeView[\"default\"], _extends({\n onClick: (0, _utils.mergeFunctions)(clickAction, onClickYear)\n }, commonProps));\n }\n\n case 'year':\n {\n var _this$props6 = this.props,\n formatMonth = _this$props6.formatMonth,\n onClickMonth = _this$props6.onClickMonth;\n return _react[\"default\"].createElement(_YearView[\"default\"], _extends({\n formatMonth: formatMonth,\n onClick: (0, _utils.mergeFunctions)(clickAction, onClickMonth)\n }, commonProps));\n }\n\n case 'month':\n {\n var _this$props7 = this.props,\n formatShortWeekday = _this$props7.formatShortWeekday,\n onClickDay = _this$props7.onClickDay,\n onClickWeekNumber = _this$props7.onClickWeekNumber,\n showFixedNumberOfWeeks = _this$props7.showFixedNumberOfWeeks,\n showNeighboringMonth = _this$props7.showNeighboringMonth,\n showWeekNumbers = _this$props7.showWeekNumbers;\n var onMouseLeave = this.onMouseLeave;\n return _react[\"default\"].createElement(_MonthView[\"default\"], _extends({\n calendarType: calendarType,\n formatShortWeekday: formatShortWeekday,\n onClick: (0, _utils.mergeFunctions)(clickAction, onClickDay),\n onClickWeekNumber: onClickWeekNumber,\n onMouseLeave: onMouseLeave,\n showFixedNumberOfWeeks: showFixedNumberOfWeeks,\n showNeighboringMonth: showNeighboringMonth,\n showWeekNumbers: showWeekNumbers\n }, commonProps));\n }\n\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n }\n }, {\n key: \"renderNavigation\",\n value: function renderNavigation() {\n var showNavigation = this.props.showNavigation;\n\n if (!showNavigation) {\n return null;\n }\n\n var _this$props8 = this.props,\n formatMonthYear = _this$props8.formatMonthYear,\n locale = _this$props8.locale,\n maxDate = _this$props8.maxDate,\n maxDetail = _this$props8.maxDetail,\n minDate = _this$props8.minDate,\n minDetail = _this$props8.minDetail,\n navigationAriaLabel = _this$props8.navigationAriaLabel,\n navigationLabel = _this$props8.navigationLabel,\n next2AriaLabel = _this$props8.next2AriaLabel,\n next2Label = _this$props8.next2Label,\n nextAriaLabel = _this$props8.nextAriaLabel,\n nextLabel = _this$props8.nextLabel,\n prev2AriaLabel = _this$props8.prev2AriaLabel,\n prev2Label = _this$props8.prev2Label,\n prevAriaLabel = _this$props8.prevAriaLabel,\n prevLabel = _this$props8.prevLabel;\n var _this$state3 = this.state,\n activeStartDate = _this$state3.activeStartDate,\n view = _this$state3.view;\n return _react[\"default\"].createElement(_Navigation[\"default\"], {\n activeStartDate: activeStartDate,\n drillUp: this.drillUp,\n formatMonthYear: formatMonthYear,\n locale: locale,\n maxDate: maxDate,\n minDate: minDate,\n navigationAriaLabel: navigationAriaLabel,\n navigationLabel: navigationLabel,\n next2AriaLabel: next2AriaLabel,\n next2Label: next2Label,\n nextAriaLabel: nextAriaLabel,\n nextLabel: nextLabel,\n prev2AriaLabel: prev2AriaLabel,\n prev2Label: prev2Label,\n prevAriaLabel: prevAriaLabel,\n prevLabel: prevLabel,\n setActiveStartDate: this.setActiveStartDate,\n view: view,\n views: getLimitedViews(minDetail, maxDetail)\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props9 = this.props,\n className = _this$props9.className,\n selectRange = _this$props9.selectRange;\n var value = this.state.value;\n var onMouseLeave = this.onMouseLeave;\n var valueArray = [].concat(value);\n return _react[\"default\"].createElement(\"div\", {\n className: (0, _mergeClassNames[\"default\"])(baseClassName, selectRange && valueArray.length === 1 && \"\".concat(baseClassName, \"--selectRange\"), className)\n }, this.renderNavigation(), _react[\"default\"].createElement(\"div\", {\n className: \"\".concat(baseClassName, \"__viewContainer\"),\n onBlur: selectRange ? onMouseLeave : null,\n onMouseLeave: selectRange ? onMouseLeave : null\n }, this.renderContent()));\n }\n }, {\n key: \"drillDownAvailable\",\n get: function get() {\n var _this$props10 = this.props,\n maxDetail = _this$props10.maxDetail,\n minDetail = _this$props10.minDetail;\n var view = this.state.view;\n var views = getLimitedViews(minDetail, maxDetail);\n return views.indexOf(view) < views.length - 1;\n }\n }, {\n key: \"drillUpAvailable\",\n get: function get() {\n var _this$props11 = this.props,\n maxDetail = _this$props11.maxDetail,\n minDetail = _this$props11.minDetail;\n var view = this.state.view;\n var views = getLimitedViews(minDetail, maxDetail);\n return views.indexOf(view) > 0;\n }\n }, {\n key: \"valueType\",\n get: function get() {\n var maxDetail = this.props.maxDetail;\n return getValueType(maxDetail);\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var minDate = nextProps.minDate,\n maxDate = nextProps.maxDate,\n minDetail = nextProps.minDetail,\n maxDetail = nextProps.maxDetail;\n var nextState = {};\n /**\n * If the next activeStartDate is different from the current one, update\n * activeStartDate (for display) and activeStartDateProps (for future comparisons)\n */\n\n var nextActiveStartDate = getActiveStartDate(nextProps);\n\n if (datesAreDifferent(nextActiveStartDate, prevState.activeStartDateProps)) {\n nextState.activeStartDate = nextActiveStartDate;\n nextState.activeStartDateProps = nextActiveStartDate;\n }\n /**\n * If the next view is different from the current one, and the previously set view is not\n * valid based on minDetail and maxDetail, get a new one.\n */\n\n\n var nextView = getView(nextProps.view, minDetail, maxDetail);\n\n if (nextView !== prevState.viewProps && !isViewAllowed(prevState.view, minDetail, maxDetail)) {\n nextState.view = nextView;\n nextState.viewProps = nextView;\n }\n /**\n * If the next value is different from the current one (with an exception of situation in\n * which values provided are limited by minDate and maxDate so that the dates are the same),\n * get a new one.\n */\n\n\n var values = [nextProps.value, prevState.valueProps];\n\n if (nextState.view // Allowed view changed\n || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n return getValueFrom(value, minDate, maxDate, maxDetail);\n }))) || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n return getValueTo(value, minDate, maxDate, maxDetail);\n })))) {\n nextState.value = nextProps.value;\n nextState.valueProps = nextProps.value;\n }\n\n if (!nextProps.selectRange && prevState.hover) {\n nextState.hover = null;\n }\n\n return nextState;\n }\n }]);\n\n return Calendar;\n}(_react.Component);\n\nexports[\"default\"] = Calendar;\nCalendar.defaultProps = {\n maxDetail: 'month',\n minDetail: 'century',\n returnValue: 'start',\n showNavigation: true,\n showNeighboringMonth: true,\n view: 'month'\n};\nCalendar.propTypes = {\n activeStartDate: _propTypes[\"default\"].instanceOf(Date),\n calendarType: _propTypes2.isCalendarType,\n className: _propTypes2.isClassName,\n formatMonth: _propTypes[\"default\"].func,\n formatMonthYear: _propTypes[\"default\"].func,\n formatShortWeekday: _propTypes[\"default\"].func,\n locale: _propTypes[\"default\"].string,\n maxDate: _propTypes2.isMaxDate,\n maxDetail: _propTypes[\"default\"].oneOf(allViews),\n minDate: _propTypes2.isMinDate,\n minDetail: _propTypes[\"default\"].oneOf(allViews),\n navigationAriaLabel: _propTypes[\"default\"].string,\n navigationLabel: _propTypes[\"default\"].func,\n next2AriaLabel: _propTypes[\"default\"].string,\n next2Label: _propTypes[\"default\"].node,\n nextAriaLabel: _propTypes[\"default\"].string,\n nextLabel: _propTypes[\"default\"].node,\n onActiveDateChange: _propTypes[\"default\"].func,\n onChange: _propTypes[\"default\"].func,\n onClickDay: _propTypes[\"default\"].func,\n onClickDecade: _propTypes[\"default\"].func,\n onClickMonth: _propTypes[\"default\"].func,\n onClickWeekNumber: _propTypes[\"default\"].func,\n onClickYear: _propTypes[\"default\"].func,\n onDrillDown: _propTypes[\"default\"].func,\n onDrillUp: _propTypes[\"default\"].func,\n prev2AriaLabel: _propTypes[\"default\"].string,\n prev2Label: _propTypes[\"default\"].node,\n prevAriaLabel: _propTypes[\"default\"].string,\n prevLabel: _propTypes[\"default\"].node,\n renderChildren: _propTypes[\"default\"].func,\n // For backwards compatibility\n returnValue: _propTypes[\"default\"].oneOf(['start', 'end', 'range']),\n selectRange: _propTypes[\"default\"].bool,\n showFixedNumberOfWeeks: _propTypes[\"default\"].bool,\n showNavigation: _propTypes[\"default\"].bool,\n showNeighboringMonth: _propTypes[\"default\"].bool,\n showWeekNumbers: _propTypes[\"default\"].bool,\n tileClassName: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes2.isClassName]),\n tileContent: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].func, _propTypes[\"default\"].node]),\n tileDisabled: _propTypes[\"default\"].func,\n value: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes2.isValue]),\n view: _propTypes[\"default\"].oneOf(allViews)\n};\n(0, _reactLifecyclesCompat.polyfill)(Calendar);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Navigation;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar className = 'react-calendar__navigation';\n\nfunction Navigation(_ref) {\n var date = _ref.activeStartDate,\n drillUp = _ref.drillUp,\n formatMonthYear = _ref.formatMonthYear,\n locale = _ref.locale,\n maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n navigationAriaLabel = _ref.navigationAriaLabel,\n navigationLabel = _ref.navigationLabel,\n next2AriaLabel = _ref.next2AriaLabel,\n next2Label = _ref.next2Label,\n nextAriaLabel = _ref.nextAriaLabel,\n nextLabel = _ref.nextLabel,\n prev2AriaLabel = _ref.prev2AriaLabel,\n prev2Label = _ref.prev2Label,\n prevAriaLabel = _ref.prevAriaLabel,\n prevLabel = _ref.prevLabel,\n setActiveStartDate = _ref.setActiveStartDate,\n view = _ref.view,\n views = _ref.views;\n var drillUpAvailable = views.indexOf(view) > 0;\n var shouldShowPrevNext2Buttons = view !== 'century';\n var previousActiveStartDate = (0, _dates.getBeginPrevious)(view, date);\n var previousActiveStartDate2 = shouldShowPrevNext2Buttons && (0, _dates.getBeginPrevious2)(view, date);\n var nextActiveStartDate = (0, _dates.getBeginNext)(view, date);\n var nextActiveStartDate2 = shouldShowPrevNext2Buttons && (0, _dates.getBeginNext2)(view, date);\n\n var prevButtonDisabled = function () {\n if (previousActiveStartDate.getFullYear() < 1000) {\n return true;\n }\n\n var previousActiveEndDate = (0, _dates.getEndPrevious)(view, date);\n return minDate && minDate >= previousActiveEndDate;\n }();\n\n var prev2ButtonDisabled = shouldShowPrevNext2Buttons && function () {\n if (previousActiveStartDate2.getFullYear() < 1000) {\n return true;\n }\n\n var previousActiveEndDate = (0, _dates.getEndPrevious2)(view, date);\n return minDate && minDate >= previousActiveEndDate;\n }();\n\n var nextButtonDisabled = maxDate && maxDate <= nextActiveStartDate;\n var next2ButtonDisabled = shouldShowPrevNext2Buttons && maxDate && maxDate <= nextActiveStartDate2;\n\n function onClickPrevious() {\n setActiveStartDate(previousActiveStartDate);\n }\n\n function onClickPrevious2() {\n setActiveStartDate(previousActiveStartDate2);\n }\n\n function onClickNext() {\n setActiveStartDate(nextActiveStartDate);\n }\n\n function onClickNext2() {\n setActiveStartDate(nextActiveStartDate2);\n }\n\n var label = function () {\n switch (view) {\n case 'century':\n return (0, _dates.getCenturyLabel)(date);\n\n case 'decade':\n return (0, _dates.getDecadeLabel)(date);\n\n case 'year':\n return (0, _dates.getYear)(date);\n\n case 'month':\n return formatMonthYear(locale, date);\n\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n }();\n\n return _react[\"default\"].createElement(\"div\", {\n className: className,\n style: {\n display: 'flex'\n }\n }, prev2Label !== null && shouldShowPrevNext2Buttons && _react[\"default\"].createElement(\"button\", {\n \"aria-label\": prev2AriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__prev2-button\"),\n disabled: prev2ButtonDisabled,\n onClick: onClickPrevious2,\n type: \"button\"\n }, prev2Label), _react[\"default\"].createElement(\"button\", {\n \"aria-label\": prevAriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__prev-button\"),\n disabled: prevButtonDisabled,\n onClick: onClickPrevious,\n type: \"button\"\n }, prevLabel), _react[\"default\"].createElement(\"button\", {\n \"aria-label\": navigationAriaLabel,\n className: \"react-calendar__navigation__label\",\n disabled: !drillUpAvailable,\n onClick: drillUp,\n style: {\n flexGrow: 1\n },\n type: \"button\"\n }, navigationLabel ? navigationLabel({\n date: date,\n view: view,\n label: label\n }) : label), _react[\"default\"].createElement(\"button\", {\n \"aria-label\": nextAriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__next-button\"),\n disabled: nextButtonDisabled,\n onClick: onClickNext,\n type: \"button\"\n }, nextLabel), next2Label !== null && shouldShowPrevNext2Buttons && _react[\"default\"].createElement(\"button\", {\n \"aria-label\": next2AriaLabel,\n className: \"\".concat(className, \"__arrow \").concat(className, \"__next2-button\"),\n disabled: next2ButtonDisabled,\n onClick: onClickNext2,\n type: \"button\"\n }, next2Label));\n}\n\nNavigation.defaultProps = {\n formatMonthYear: _dateFormatter.formatMonthYear,\n navigationAriaLabel: '',\n next2AriaLabel: '',\n next2Label: '»',\n nextAriaLabel: '',\n nextLabel: '›',\n prev2AriaLabel: '',\n prev2Label: '«',\n prevAriaLabel: '',\n prevLabel: '‹'\n};\nNavigation.propTypes = {\n activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n drillUp: _propTypes[\"default\"].func.isRequired,\n formatMonthYear: _propTypes[\"default\"].func,\n locale: _propTypes[\"default\"].string,\n maxDate: _propTypes[\"default\"].instanceOf(Date),\n minDate: _propTypes[\"default\"].instanceOf(Date),\n navigationAriaLabel: _propTypes[\"default\"].string,\n navigationLabel: _propTypes[\"default\"].func,\n next2AriaLabel: _propTypes[\"default\"].string,\n next2Label: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node]),\n nextAriaLabel: _propTypes[\"default\"].string,\n nextLabel: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node]),\n prev2AriaLabel: _propTypes[\"default\"].string,\n prev2Label: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node]),\n prevAriaLabel: _propTypes[\"default\"].string,\n prevLabel: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].node]),\n setActiveStartDate: _propTypes[\"default\"].func.isRequired,\n view: _propTypes2.isView.isRequired,\n views: _propTypes2.isViews.isRequired\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Decades;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _TileGroup = _interopRequireDefault(require(\"../TileGroup\"));\n\nvar _Decade = _interopRequireDefault(require(\"./Decade\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction Decades(props) {\n var activeStartDate = props.activeStartDate;\n var start = (0, _dates.getBeginOfCenturyYear)(activeStartDate);\n var end = start + 99;\n return _react[\"default\"].createElement(_TileGroup[\"default\"], _extends({}, props, {\n className: \"react-calendar__century-view__decades\",\n dateTransform: _dates.getBeginOfDecade,\n dateType: \"decade\",\n end: end,\n start: start,\n step: 10,\n tile: _Decade[\"default\"]\n }));\n}\n\nDecades.propTypes = _objectSpread({}, _propTypes.tileGroupProps);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Decade;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Tile = _interopRequireDefault(require(\"../Tile\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _extends() { _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; }; return _extends.apply(this, arguments); }\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\nvar className = 'react-calendar__century-view__decades__decade';\n\nfunction Decade(_ref) {\n var classes = _ref.classes,\n point = _ref.point,\n otherProps = _objectWithoutProperties(_ref, [\"classes\", \"point\"]);\n\n return _react[\"default\"].createElement(_Tile[\"default\"], _extends({}, otherProps, {\n classes: [].concat(classes, className),\n maxDateTransform: _dates.getEndOfDecade,\n minDateTransform: _dates.getBeginOfDecade,\n view: \"century\"\n }), (0, _dates.getDecadeLabel)(point));\n}\n\nDecade.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n point: _propTypes[\"default\"].number.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Years;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _TileGroup = _interopRequireDefault(require(\"../TileGroup\"));\n\nvar _Year = _interopRequireDefault(require(\"./Year\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction Years(props) {\n var activeStartDate = props.activeStartDate;\n var start = (0, _dates.getBeginOfDecadeYear)(activeStartDate);\n var end = start + 9;\n return _react[\"default\"].createElement(_TileGroup[\"default\"], _extends({}, props, {\n className: \"react-calendar__decade-view__years\",\n dateTransform: function dateTransform(year) {\n return new Date(year, 0, 1);\n },\n dateType: \"year\",\n end: end,\n start: start,\n tile: _Year[\"default\"]\n }));\n}\n\nYears.propTypes = _objectSpread({}, _propTypes.tileGroupProps);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Year;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Tile = _interopRequireDefault(require(\"../Tile\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _extends() { _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; }; return _extends.apply(this, arguments); }\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\nvar className = 'react-calendar__decade-view__years__year';\n\nfunction Year(_ref) {\n var classes = _ref.classes,\n point = _ref.point,\n otherProps = _objectWithoutProperties(_ref, [\"classes\", \"point\"]);\n\n return _react[\"default\"].createElement(_Tile[\"default\"], _extends({}, otherProps, {\n classes: [].concat(classes, className),\n maxDateTransform: _dates.getEndOfYear,\n minDateTransform: _dates.getBeginOfYear,\n view: \"decade\"\n }), point);\n}\n\nYear.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n point: _propTypes[\"default\"].number.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Months;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _TileGroup = _interopRequireDefault(require(\"../TileGroup\"));\n\nvar _Month = _interopRequireDefault(require(\"./Month\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction Months(props) {\n var activeStartDate = props.activeStartDate;\n var start = 0;\n var end = 11;\n var year = (0, _dates.getYear)(activeStartDate);\n return _react[\"default\"].createElement(_TileGroup[\"default\"], _extends({}, props, {\n className: \"react-calendar__year-view__months\",\n dateTransform: function dateTransform(monthIndex) {\n return new Date(year, monthIndex, 1);\n },\n dateType: \"month\",\n end: end,\n start: start,\n tile: _Month[\"default\"]\n }));\n}\n\nMonths.propTypes = _objectSpread({}, _propTypes2.tileGroupProps, {\n locale: _propTypes[\"default\"].string\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Month;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Tile = _interopRequireDefault(require(\"../Tile\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _extends() { _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; }; return _extends.apply(this, arguments); }\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\nvar className = 'react-calendar__year-view__months__month';\n\nfunction Month(_ref) {\n var classes = _ref.classes,\n date = _ref.date,\n formatMonth = _ref.formatMonth,\n locale = _ref.locale,\n otherProps = _objectWithoutProperties(_ref, [\"classes\", \"date\", \"formatMonth\", \"locale\"]);\n\n return _react[\"default\"].createElement(_Tile[\"default\"], _extends({}, otherProps, {\n classes: [].concat(classes, className),\n date: date,\n formatAbbr: _dateFormatter.formatMonthYear,\n locale: locale,\n maxDateTransform: _dates.getEndOfMonth,\n minDateTransform: _dates.getBeginOfMonth,\n view: \"year\"\n }), formatMonth(locale, date));\n}\n\nMonth.defaultProps = {\n formatMonth: _dateFormatter.formatMonth\n};\nMonth.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n formatMonth: _propTypes[\"default\"].func\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Days;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _TileGroup = _interopRequireDefault(require(\"../TileGroup\"));\n\nvar _Day = _interopRequireDefault(require(\"./Day\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _extends() { _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; }; return _extends.apply(this, arguments); }\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\nfunction Days(props) {\n var activeStartDate = props.activeStartDate,\n calendarType = props.calendarType;\n\n var showFixedNumberOfWeeks = props.showFixedNumberOfWeeks,\n showNeighboringMonth = props.showNeighboringMonth,\n otherProps = _objectWithoutProperties(props, [\"showFixedNumberOfWeeks\", \"showNeighboringMonth\"]);\n\n var year = (0, _dates.getYear)(activeStartDate);\n var monthIndex = (0, _dates.getMonthIndex)(activeStartDate);\n var hasFixedNumberOfWeeks = showFixedNumberOfWeeks || showNeighboringMonth;\n var dayOfWeek = (0, _dates.getDayOfWeek)(activeStartDate, calendarType);\n var offset = hasFixedNumberOfWeeks ? 0 : dayOfWeek;\n /**\n * Defines on which day of the month the grid shall start. If we simply show current\n * month, we obviously start on day one, but if showNeighboringMonth is set to\n * true, we need to find the beginning of the week the first day of the month is in.\n */\n\n var start = (hasFixedNumberOfWeeks ? -dayOfWeek : 0) + 1;\n /**\n * Defines on which day of the month the grid shall end. If we simply show current\n * month, we need to stop on the last day of the month, but if showNeighboringMonth\n * is set to true, we need to find the end of the week the last day of the month is in.\n */\n\n var end = function () {\n if (showFixedNumberOfWeeks) {\n // Always show 6 weeks\n return start + 6 * 7 - 1;\n }\n\n var daysInMonth = (0, _dates.getDaysInMonth)(activeStartDate);\n\n if (showNeighboringMonth) {\n var activeEndDate = new Date(year, monthIndex, daysInMonth);\n return daysInMonth + (7 - (0, _dates.getDayOfWeek)(activeEndDate, calendarType) - 1);\n }\n\n return daysInMonth;\n }();\n\n return _react[\"default\"].createElement(_TileGroup[\"default\"], _extends({}, otherProps, {\n className: \"react-calendar__month-view__days\",\n count: 7,\n currentMonthIndex: monthIndex,\n dateTransform: function dateTransform(day) {\n return new Date(year, monthIndex, day);\n },\n dateType: \"day\",\n end: end,\n offset: offset,\n start: start,\n tile: _Day[\"default\"]\n }));\n}\n\nDays.propTypes = _objectSpread({\n calendarType: _propTypes2.isCalendarType.isRequired,\n showFixedNumberOfWeeks: _propTypes[\"default\"].bool,\n showNeighboringMonth: _propTypes[\"default\"].bool\n}, _propTypes2.tileGroupProps);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Day;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Tile = _interopRequireDefault(require(\"../Tile\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(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 _extends() { _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; }; return _extends.apply(this, arguments); }\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\nvar className = 'react-calendar__month-view__days__day';\n\nfunction Day(_ref) {\n var calendarType = _ref.calendarType,\n classes = _ref.classes,\n currentMonthIndex = _ref.currentMonthIndex,\n date = _ref.date,\n otherProps = _objectWithoutProperties(_ref, [\"calendarType\", \"classes\", \"currentMonthIndex\", \"date\"]);\n\n return _react[\"default\"].createElement(_Tile[\"default\"], _extends({}, otherProps, {\n classes: [].concat(classes, className, (0, _dates.isWeekend)(date, calendarType) ? \"\".concat(className, \"--weekend\") : null, date.getMonth() !== currentMonthIndex ? \"\".concat(className, \"--neighboringMonth\") : null),\n date: date,\n formatAbbr: _dateFormatter.formatLongDate,\n maxDateTransform: _dates.getEndOfDay,\n minDateTransform: _dates.getBeginOfDay,\n view: \"month\"\n }), (0, _dates.getDay)(date));\n}\n\nDay.propTypes = _objectSpread({}, _propTypes2.tileProps, {\n currentMonthIndex: _propTypes[\"default\"].number.isRequired\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Weekdays;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _Flex = _interopRequireDefault(require(\"../Flex\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Weekdays(props) {\n var calendarType = props.calendarType,\n formatShortWeekday = props.formatShortWeekday,\n locale = props.locale,\n onMouseLeave = props.onMouseLeave;\n var anyDate = new Date();\n var beginOfMonth = (0, _dates.getBeginOfMonth)(anyDate);\n var year = (0, _dates.getYear)(beginOfMonth);\n var monthIndex = (0, _dates.getMonthIndex)(beginOfMonth);\n var weekdays = [];\n\n for (var weekday = 1; weekday <= 7; weekday += 1) {\n var weekdayDate = new Date(year, monthIndex, weekday - (0, _dates.getDayOfWeek)(beginOfMonth, calendarType));\n var abbr = (0, _dateFormatter.formatWeekday)(locale, weekdayDate);\n weekdays.push(_react[\"default\"].createElement(\"div\", {\n key: weekday,\n className: \"react-calendar__month-view__weekdays__weekday\"\n }, _react[\"default\"].createElement(\"abbr\", {\n \"aria-label\": abbr,\n title: abbr\n }, formatShortWeekday(locale, weekdayDate).replace('.', ''))));\n }\n\n return _react[\"default\"].createElement(_Flex[\"default\"], {\n className: \"react-calendar__month-view__weekdays\",\n count: 7,\n onFocus: onMouseLeave,\n onMouseOver: onMouseLeave\n }, weekdays);\n}\n\nWeekdays.defaultProps = {\n formatShortWeekday: _dateFormatter.formatShortWeekday\n};\nWeekdays.propTypes = {\n calendarType: _propTypes2.isCalendarType.isRequired,\n formatShortWeekday: _propTypes[\"default\"].func,\n locale: _propTypes[\"default\"].string,\n onMouseLeave: _propTypes[\"default\"].func\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = WeekNumbers;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _WeekNumber = _interopRequireDefault(require(\"./WeekNumber\"));\n\nvar _Flex = _interopRequireDefault(require(\"../Flex\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction WeekNumbers(props) {\n var activeStartDate = props.activeStartDate,\n calendarType = props.calendarType,\n onClickWeekNumber = props.onClickWeekNumber,\n onMouseLeave = props.onMouseLeave,\n showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n\n var numberOfWeeks = function () {\n if (showFixedNumberOfWeeks) {\n return 6;\n }\n\n var numberOfDays = (0, _dates.getDaysInMonth)(activeStartDate);\n var startWeekday = (0, _dates.getDayOfWeek)(activeStartDate, calendarType);\n var days = numberOfDays - (7 - startWeekday);\n return 1 + Math.ceil(days / 7);\n }();\n\n var dates = function () {\n var year = (0, _dates.getYear)(activeStartDate);\n var monthIndex = (0, _dates.getMonthIndex)(activeStartDate);\n var day = (0, _dates.getDay)(activeStartDate);\n var result = [];\n\n for (var index = 0; index < numberOfWeeks; index += 1) {\n result.push((0, _dates.getBeginOfWeek)(new Date(year, monthIndex, day + index * 7), calendarType));\n }\n\n return result;\n }();\n\n var weekNumbers = dates.map(function (date) {\n return (0, _dates.getWeekNumber)(date, calendarType);\n });\n return _react[\"default\"].createElement(_Flex[\"default\"], {\n className: \"react-calendar__month-view__weekNumbers\",\n count: numberOfWeeks,\n direction: \"column\",\n onFocus: onMouseLeave,\n onMouseOver: onMouseLeave,\n style: {\n flexBasis: 'calc(100% * (1 / 8)',\n flexShrink: 0\n }\n }, weekNumbers.map(function (weekNumber, weekIndex) {\n return _react[\"default\"].createElement(_WeekNumber[\"default\"], {\n key: weekNumber,\n date: dates[weekIndex],\n onClickWeekNumber: onClickWeekNumber,\n weekNumber: weekNumber\n });\n }));\n}\n\nWeekNumbers.propTypes = {\n activeStartDate: _propTypes[\"default\"].instanceOf(Date).isRequired,\n calendarType: _propTypes2.isCalendarType.isRequired,\n onClickWeekNumber: _propTypes[\"default\"].func,\n onMouseLeave: _propTypes[\"default\"].func,\n showFixedNumberOfWeeks: _propTypes[\"default\"].bool\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = WeekNumber;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction WeekNumber(_ref) {\n var date = _ref.date,\n onClickWeekNumber = _ref.onClickWeekNumber,\n weekNumber = _ref.weekNumber;\n return onClickWeekNumber ? _react[\"default\"].createElement(\"button\", {\n className: \"react-calendar__tile\",\n onClick: function onClick() {\n return onClickWeekNumber(weekNumber, date);\n },\n style: {\n flexGrow: 1\n },\n type: \"button\"\n }, _react[\"default\"].createElement(\"span\", null, weekNumber)) : _react[\"default\"].createElement(\"div\", {\n className: \"react-calendar__tile\",\n style: {\n flexGrow: 1\n }\n }, _react[\"default\"].createElement(\"span\", null, weekNumber));\n}\n\nWeekNumber.propTypes = {\n date: _propTypes[\"default\"].instanceOf(Date).isRequired,\n onClickWeekNumber: _propTypes[\"default\"].func,\n weekNumber: _propTypes[\"default\"].number.isRequired\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Clock\", {\n enumerable: true,\n get: function get() {\n return _Clock[\"default\"];\n }\n});\nexports[\"default\"] = void 0;\n\nvar _Clock = _interopRequireDefault(require(\"./Clock\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _Clock[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Clock;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _Hand = _interopRequireDefault(require(\"./Hand\"));\n\nvar _Mark = _interopRequireDefault(require(\"./Mark\"));\n\nvar _dates = require(\"./shared/dates\");\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Clock(_ref) {\n var className = _ref.className,\n hourHandLength = _ref.hourHandLength,\n hourHandOppositeLength = _ref.hourHandOppositeLength,\n hourHandWidth = _ref.hourHandWidth,\n hourMarksLength = _ref.hourMarksLength,\n hourMarksWidth = _ref.hourMarksWidth,\n minuteHandLength = _ref.minuteHandLength,\n minuteHandOppositeLength = _ref.minuteHandOppositeLength,\n minuteHandWidth = _ref.minuteHandWidth,\n minuteMarksLength = _ref.minuteMarksLength,\n minuteMarksWidth = _ref.minuteMarksWidth,\n renderHourMarks = _ref.renderHourMarks,\n renderMinuteHand = _ref.renderMinuteHand,\n renderMinuteMarks = _ref.renderMinuteMarks,\n renderNumbers = _ref.renderNumbers,\n renderSecondHand = _ref.renderSecondHand,\n secondHandLength = _ref.secondHandLength,\n secondHandOppositeLength = _ref.secondHandOppositeLength,\n secondHandWidth = _ref.secondHandWidth,\n size = _ref.size,\n value = _ref.value;\n\n function renderMinuteMarksFn() {\n if (!renderMinuteMarks) {\n return null;\n }\n\n var minuteMarks = [];\n\n for (var i = 1; i <= 60; i += 1) {\n var isHourMark = renderHourMarks && !(i % 5);\n\n if (!isHourMark) {\n minuteMarks.push(_react[\"default\"].createElement(_Mark[\"default\"], {\n key: \"minute_\".concat(i),\n angle: i * 6,\n length: minuteMarksLength,\n name: \"minute\",\n width: minuteMarksWidth\n }));\n }\n }\n\n return minuteMarks;\n }\n\n function renderHourMarksFn() {\n if (!renderHourMarks) {\n return null;\n }\n\n var hourMarks = [];\n\n for (var i = 1; i <= 12; i += 1) {\n hourMarks.push(_react[\"default\"].createElement(_Mark[\"default\"], {\n key: \"hour_\".concat(i),\n angle: i * 30,\n length: hourMarksLength,\n name: \"hour\",\n number: renderNumbers ? i : null,\n width: hourMarksWidth\n }));\n }\n\n return hourMarks;\n }\n\n function renderFace() {\n return _react[\"default\"].createElement(\"div\", {\n className: \"react-clock__face\"\n }, renderMinuteMarksFn(), renderHourMarksFn());\n }\n\n function renderHourHandFn() {\n var angle = value ? (0, _dates.getHours)(value) * 30 + (0, _dates.getMinutes)(value) / 2 + (0, _dates.getSeconds)(value) / 600 : 0;\n return _react[\"default\"].createElement(_Hand[\"default\"], {\n angle: angle,\n length: hourHandLength,\n name: \"hour\",\n oppositeLength: hourHandOppositeLength,\n width: hourHandWidth\n });\n }\n\n function renderMinuteHandFn() {\n if (!renderMinuteHand) {\n return null;\n }\n\n var angle = value ? (0, _dates.getHours)(value) * 360 + (0, _dates.getMinutes)(value) * 6 + (0, _dates.getSeconds)(value) / 10 : 0;\n return _react[\"default\"].createElement(_Hand[\"default\"], {\n angle: angle,\n length: minuteHandLength,\n name: \"minute\",\n oppositeLength: minuteHandOppositeLength,\n width: minuteHandWidth\n });\n }\n\n function renderSecondHandFn() {\n if (!renderSecondHand) {\n return null;\n }\n\n var angle = value ? (0, _dates.getMinutes)(value) * 360 + (0, _dates.getSeconds)(value) * 6 : 0;\n return _react[\"default\"].createElement(_Hand[\"default\"], {\n angle: angle,\n length: secondHandLength,\n name: \"second\",\n oppositeLength: secondHandOppositeLength,\n width: secondHandWidth\n });\n }\n\n return _react[\"default\"].createElement(\"time\", {\n className: (0, _mergeClassNames[\"default\"])('react-clock', className),\n dateTime: value instanceof Date ? value.toISOString() : value,\n style: {\n width: \"\".concat(size, \"px\"),\n height: \"\".concat(size, \"px\")\n }\n }, renderFace(), renderHourHandFn(), renderMinuteHandFn(), renderSecondHandFn());\n}\n\nClock.defaultProps = {\n hourHandLength: 50,\n hourHandWidth: 4,\n hourMarksLength: 10,\n hourMarksWidth: 3,\n minuteHandLength: 70,\n minuteHandWidth: 2,\n minuteMarksLength: 6,\n minuteMarksWidth: 1,\n renderHourMarks: true,\n renderMinuteHand: true,\n renderMinuteMarks: true,\n renderSecondHand: true,\n secondHandLength: 90,\n secondHandWidth: 1,\n size: 150\n};\nClock.propTypes = {\n className: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].string)]),\n hourHandLength: _propTypes2.isHandLength,\n hourHandOppositeLength: _propTypes2.isOppositeHandLength,\n hourHandWidth: _propTypes2.isHandWidth,\n hourMarksLength: _propTypes2.isMarkLength,\n hourMarksWidth: _propTypes2.isMarkWidth,\n minuteHandLength: _propTypes2.isHandLength,\n minuteHandOppositeLength: _propTypes2.isOppositeHandLength,\n minuteHandWidth: _propTypes2.isHandWidth,\n minuteMarksLength: _propTypes2.isMarkLength,\n minuteMarksWidth: _propTypes2.isMarkWidth,\n renderHourMarks: _propTypes[\"default\"].bool,\n renderMinuteHand: _propTypes[\"default\"].bool,\n renderMinuteMarks: _propTypes[\"default\"].bool,\n renderNumbers: _propTypes[\"default\"].bool,\n renderSecondHand: _propTypes[\"default\"].bool,\n secondHandLength: _propTypes2.isHandLength,\n secondHandOppositeLength: _propTypes2.isOppositeHandLength,\n secondHandWidth: _propTypes2.isHandWidth,\n size: _propTypes[\"default\"].number,\n value: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)])\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Hand;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Hand(_ref) {\n var angle = _ref.angle,\n name = _ref.name,\n length = _ref.length,\n oppositeLength = _ref.oppositeLength,\n width = _ref.width;\n return _react[\"default\"].createElement(\"div\", {\n className: \"react-clock__hand react-clock__\".concat(name, \"-hand\"),\n style: {\n transform: \"rotate(\".concat(angle, \"deg)\")\n }\n }, _react[\"default\"].createElement(\"div\", {\n className: \"react-clock__hand__body react-clock__\".concat(name, \"-hand__body\"),\n style: {\n width: \"\".concat(width, \"px\"),\n top: \"\".concat(50 - length / 2, \"%\"),\n bottom: \"\".concat(50 - oppositeLength / 2, \"%\")\n }\n }));\n}\n\nHand.defaultProps = {\n angle: 0,\n length: 100,\n oppositeLength: 10,\n width: 1\n};\nHand.propTypes = {\n angle: _propTypes[\"default\"].number,\n length: _propTypes2.isHandLength,\n name: _propTypes[\"default\"].string.isRequired,\n oppositeLength: _propTypes2.isHandLength,\n width: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isDefined = void 0;\n\n/* eslint-disable import/prefer-default-export */\n\n/**\n * Checks whether a variable is defined.\n *\n * @param {*} variable Variable to check\n */\nvar isDefined = function isDefined(variable) {\n return typeof variable !== 'undefined';\n};\n\nexports.isDefined = isDefined;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Mark;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Mark(_ref) {\n var angle = _ref.angle,\n length = _ref.length,\n name = _ref.name,\n width = _ref.width,\n number = _ref.number;\n return _react[\"default\"].createElement(\"div\", {\n className: \"react-clock__mark react-clock__\".concat(name, \"-mark\"),\n style: {\n transform: \"rotate(\".concat(angle, \"deg)\")\n }\n }, _react[\"default\"].createElement(\"div\", {\n className: \"react-clock__mark__body react-clock__\".concat(name, \"-mark__body\"),\n style: {\n width: \"\".concat(width, \"px\"),\n top: 0,\n bottom: \"\".concat(100 - length / 2, \"%\")\n }\n }), number && _react[\"default\"].createElement(\"div\", {\n className: \"react-clock__mark__number\",\n style: {\n transform: \"rotate(-\".concat(angle, \"deg)\"),\n top: \"\".concat(length / 2, \"%\")\n }\n }, number));\n}\n\nMark.defaultProps = {\n angle: 0,\n length: 10,\n width: 1\n};\nMark.propTypes = {\n angle: _propTypes[\"default\"].number,\n length: _propTypes2.isMarkLength,\n name: _propTypes[\"default\"].string.isRequired,\n number: _propTypes[\"default\"].number,\n width: _propTypes2.isMarkWidth\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getHours = getHours;\nexports.getMinutes = getMinutes;\nexports.getSeconds = getSeconds;\nvar hourOptionalSecondsRegExp = /^(([0-1])?[0-9]|2[0-3]):[0-5][0-9](:([0-5][0-9]))?$/;\nvar hourRegExp = /^(([0-1])?[0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9])$/;\n\nfunction getHours(date) {\n if (date instanceof Date) {\n return date.getHours();\n }\n\n if (typeof date === 'string' && hourOptionalSecondsRegExp.test(date)) {\n var hourString = date.split(':')[0];\n return parseInt(hourString, 10);\n }\n\n throw new Error(\"Failed to get hours from date: \".concat(date, \".\"));\n}\n\nfunction getMinutes(date) {\n if (date instanceof Date) {\n return date.getMinutes();\n }\n\n if (typeof date === 'string' && hourOptionalSecondsRegExp.test(date)) {\n var minuteString = date.split(':')[1];\n return parseInt(minuteString, 10);\n }\n\n throw new Error(\"Failed to get minutes from date: \".concat(date, \".\"));\n}\n\nfunction getSeconds(date) {\n if (date instanceof Date) {\n return date.getSeconds();\n }\n\n if (typeof date === 'string') {\n if (hourRegExp.test(date)) {\n var secondString = date.split(':')[2];\n return parseInt(secondString, 10);\n }\n\n if (hourOptionalSecondsRegExp.test(date)) {\n return 0;\n }\n }\n\n throw new Error(\"Failed to get seconds from date: \".concat(date, \".\"));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _DayInput = _interopRequireDefault(require(\"react-date-picker/dist/DateInput/DayInput\"));\n\nvar _MonthInput = _interopRequireDefault(require(\"react-date-picker/dist/DateInput/MonthInput\"));\n\nvar _MonthSelect = _interopRequireDefault(require(\"react-date-picker/dist/DateInput/MonthSelect\"));\n\nvar _YearInput = _interopRequireDefault(require(\"react-date-picker/dist/DateInput/YearInput\"));\n\nvar _Hour12Input = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/Hour12Input\"));\n\nvar _Hour24Input = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/Hour24Input\"));\n\nvar _MinuteInput = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/MinuteInput\"));\n\nvar _SecondInput = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/SecondInput\"));\n\nvar _AmPm = _interopRequireDefault(require(\"react-time-picker/dist/TimeInput/AmPm\"));\n\nvar _Divider = _interopRequireDefault(require(\"./Divider\"));\n\nvar _NativeInput = _interopRequireDefault(require(\"./DateTimeInput/NativeInput\"));\n\nvar _dateFormatter = require(\"./shared/dateFormatter\");\n\nvar _dates = require(\"./shared/dates\");\n\nvar _propTypes2 = require(\"./shared/propTypes\");\n\nvar _utils = require(\"./shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj[\"default\"] = obj; return newObj; } }\n\nfunction _typeof(obj) { 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 _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\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 _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nvar defaultMinDate = new Date(-8.64e15);\nvar defaultMaxDate = new Date(8.64e15);\nvar allViews = ['hour', 'minute', 'second'];\n\nfunction datesAreDifferent(date1, date2) {\n return date1 && !date2 || !date1 && date2 || date1 && date2 && date1.getTime() !== date2.getTime();\n}\n\nfunction isSameDate(date, year, month, day) {\n return (0, _dateUtils.getYear)(date) === year && (0, _dateUtils.getMonthHuman)(date) === month && (0, _dateUtils.getDate)(date) === day;\n}\n\nfunction getValueFromRange(valueOrArrayOfValues, index) {\n if (Array.isArray(valueOrArrayOfValues)) {\n return valueOrArrayOfValues[index];\n }\n\n return valueOrArrayOfValues;\n}\n\nfunction parseAndValidateDate(rawValue) {\n if (!rawValue) {\n return null;\n }\n\n var valueDate = new Date(rawValue);\n\n if (isNaN(valueDate.getTime())) {\n throw new Error(\"Invalid date: \".concat(rawValue));\n }\n\n return valueDate;\n}\n\nfunction getDetailValue(value, minDate, maxDate) {\n if (!value) {\n return null;\n }\n\n return (0, _utils.between)(value, minDate, maxDate);\n}\n\nfunction getValueFrom(value) {\n var valueFrom = getValueFromRange(value, 0);\n return parseAndValidateDate(valueFrom);\n}\n\nfunction getDetailValueFrom(value, minDate, maxDate) {\n var valueFrom = getValueFrom(value);\n return getDetailValue(valueFrom, minDate, maxDate);\n}\n\nfunction getValueTo(value) {\n var valueTo = getValueFromRange(value, 1);\n return parseAndValidateDate(valueTo);\n}\n\nfunction getDetailValueTo(value, minDate, maxDate) {\n var valueTo = getValueTo(value);\n return getDetailValue(valueTo, minDate, maxDate);\n}\n\nfunction isValidInput(element) {\n return element.tagName === 'INPUT' && element.type === 'number';\n}\n\nfunction findInput(element, property) {\n var nextElement = element;\n\n do {\n nextElement = nextElement[property];\n } while (nextElement && !isValidInput(nextElement));\n\n return nextElement;\n}\n\nfunction focus(element) {\n if (element) {\n element.focus();\n }\n}\n\nfunction _renderCustomInputs(placeholder, elementFunctions, allowMultipleInstances) {\n var usedFunctions = [];\n var pattern = new RegExp(Object.keys(elementFunctions).map(function (el) {\n return \"\".concat(el, \"+\");\n }).join('|'), 'g');\n var matches = placeholder.match(pattern);\n return placeholder.split(pattern).reduce(function (arr, element, index) {\n var divider = element && // eslint-disable-next-line react/no-array-index-key\n _react[\"default\"].createElement(_Divider[\"default\"], {\n key: \"separator_\".concat(index)\n }, element);\n\n var res = [].concat(_toConsumableArray(arr), [divider]);\n var currentMatch = matches && matches[index];\n\n if (currentMatch) {\n var renderFunction = elementFunctions[currentMatch] || elementFunctions[Object.keys(elementFunctions).find(function (elementFunction) {\n return currentMatch.match(elementFunction);\n })];\n\n if (!allowMultipleInstances && usedFunctions.includes(renderFunction)) {\n res.push(currentMatch);\n } else {\n res.push(renderFunction(currentMatch, index));\n usedFunctions.push(renderFunction);\n }\n }\n\n return res;\n }, []);\n}\n\nvar DateTimeInput =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(DateTimeInput, _PureComponent);\n\n function DateTimeInput() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, DateTimeInput);\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 = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(DateTimeInput)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n amPm: null,\n year: null,\n month: null,\n day: null,\n hour: null,\n minute: null,\n second: null\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n if (event.target === event.currentTarget) {\n // Wrapper was directly clicked\n var firstInput = event.target.children[1];\n focus(firstInput);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case _this.dateDivider:\n case _this.timeDivider:\n {\n event.preventDefault();\n var input = event.target;\n var property = event.key === 'ArrowLeft' ? 'previousElementSibling' : 'nextElementSibling';\n var nextInput = findInput(input, property);\n focus(nextInput);\n break;\n }\n\n default:\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onKeyUp\", function (event) {\n var key = event.key,\n input = event.target;\n var isNumberKey = !isNaN(parseInt(key, 10));\n\n if (!isNumberKey) {\n return;\n }\n\n var value = input.value;\n var max = input.getAttribute('max');\n /**\n * Given 1, the smallest possible number the user could type by adding another digit is 10.\n * 10 would be a valid value given max = 12, so we won't jump to the next input.\n * However, given 2, smallers possible number would be 20, and thus keeping the focus in\n * this field doesn't make sense.\n */\n\n if (value * 10 > max || value.length >= max.length) {\n var property = 'nextElementSibling';\n var nextInput = findInput(input, property);\n focus(nextInput);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (event) {\n var _event$target = event.target,\n name = _event$target.name,\n value = _event$target.value;\n\n switch (name) {\n case 'hour12':\n {\n _this.setState(function (prevState) {\n return {\n hour: value ? (0, _dates.convert12to24)(parseInt(value, 10), prevState.amPm) : null\n };\n }, _this.onChangeExternal);\n\n break;\n }\n\n case 'hour24':\n {\n _this.setState({\n hour: value ? parseInt(value, 10) : null\n }, _this.onChangeExternal);\n\n break;\n }\n\n default:\n {\n _this.setState(_defineProperty({}, name, value ? parseInt(value, 10) : null), _this.onChangeExternal);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChangeNative\", function (event) {\n var onChange = _this.props.onChange;\n var value = event.target.value;\n\n if (!onChange) {\n return;\n }\n\n var processedValue = function () {\n if (!value) {\n return null;\n }\n\n var _value$split = value.split('T'),\n _value$split2 = _slicedToArray(_value$split, 2),\n valueDate = _value$split2[0],\n valueTime = _value$split2[1];\n\n var _valueDate$split = valueDate.split('-'),\n _valueDate$split2 = _slicedToArray(_valueDate$split, 3),\n yearString = _valueDate$split2[0],\n monthString = _valueDate$split2[1],\n dayString = _valueDate$split2[2];\n\n var year = parseInt(yearString, 10);\n var monthIndex = parseInt(monthString, 10) - 1 || 0;\n var date = parseInt(dayString, 10) || 1;\n\n var _valueTime$split = valueTime.split(':'),\n _valueTime$split2 = _slicedToArray(_valueTime$split, 3),\n hourString = _valueTime$split2[0],\n minuteString = _valueTime$split2[1],\n secondString = _valueTime$split2[2];\n\n var hour = parseInt(hourString, 10) || 0;\n var minute = parseInt(minuteString, 10) || 0;\n var second = parseInt(secondString, 10) || 0;\n return new Date(year, monthIndex, date, hour, minute, second);\n }();\n\n onChange(processedValue, false);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChangeAmPm\", function (event) {\n var value = event.target.value;\n\n _this.setState({\n amPm: value\n }, _this.onChangeExternal);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChangeExternal\", function () {\n var onChange = _this.props.onChange;\n\n if (!onChange) {\n return;\n }\n\n var formElements = [_this.dayInput, _this.monthInput, _this.yearInput, _this.hour12Input, _this.hour24Input, _this.minuteInput, _this.secondInput, _this.amPmInput].filter(Boolean);\n var formElementsWithoutSelect = formElements.slice(0, -1);\n var values = {};\n formElements.forEach(function (formElement) {\n values[formElement.name] = formElement.value;\n });\n\n if (formElementsWithoutSelect.every(function (formElement) {\n return !formElement.value;\n })) {\n onChange(null, false);\n } else if (formElements.every(function (formElement) {\n return formElement.value && formElement.checkValidity();\n })) {\n var year = parseInt(values.year, 10);\n var month = parseInt(values.month || 1, 10);\n var day = parseInt(values.day || 1, 10);\n var hour = parseInt(values.hour24 || (0, _dates.convert12to24)(values.hour12, values.amPm) || 0, 10);\n var minute = parseInt(values.minute || 0, 10);\n var second = parseInt(values.second || 0, 10);\n var proposedValue = new Date(year, month - 1, day, hour, minute, second);\n var processedValue = proposedValue;\n onChange(processedValue, false);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderDay\", function (currentMatch, index) {\n var _this$props = _this.props,\n autoFocus = _this$props.autoFocus,\n dayAriaLabel = _this$props.dayAriaLabel,\n dayPlaceholder = _this$props.dayPlaceholder,\n showLeadingZeros = _this$props.showLeadingZeros;\n var _this$state = _this.state,\n day = _this$state.day,\n month = _this$state.month,\n year = _this$state.year;\n\n if (currentMatch && currentMatch.length > 2) {\n throw new Error(\"Unsupported token: \".concat(currentMatch));\n }\n\n var showLeadingZerosFromFormat = currentMatch && currentMatch.length === 2;\n return _react[\"default\"].createElement(_DayInput[\"default\"], _extends({\n key: \"day\"\n }, _this.commonInputProps, {\n ariaLabel: dayAriaLabel,\n autoFocus: index === 0 && autoFocus,\n month: month,\n placeholder: dayPlaceholder,\n showLeadingZeros: showLeadingZerosFromFormat || showLeadingZeros,\n value: day,\n year: year\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderMonth\", function (currentMatch, index) {\n var _this$props2 = _this.props,\n autoFocus = _this$props2.autoFocus,\n locale = _this$props2.locale,\n monthAriaLabel = _this$props2.monthAriaLabel,\n monthPlaceholder = _this$props2.monthPlaceholder,\n showLeadingZeros = _this$props2.showLeadingZeros;\n var _this$state2 = _this.state,\n month = _this$state2.month,\n year = _this$state2.year;\n\n if (currentMatch && currentMatch.length > 4) {\n throw new Error(\"Unsupported token: \".concat(currentMatch));\n }\n\n if (currentMatch.length > 2) {\n return _react[\"default\"].createElement(_MonthSelect[\"default\"], _extends({\n key: \"month\"\n }, _this.commonInputProps, {\n ariaLabel: monthAriaLabel,\n autoFocus: index === 0 && autoFocus,\n locale: locale,\n placeholder: monthPlaceholder,\n \"short\": currentMatch.length === 3,\n value: month,\n year: year\n }));\n }\n\n var showLeadingZerosFromFormat = currentMatch && currentMatch.length === 2;\n return _react[\"default\"].createElement(_MonthInput[\"default\"], _extends({\n key: \"month\"\n }, _this.commonInputProps, {\n ariaLabel: monthAriaLabel,\n autoFocus: index === 0 && autoFocus,\n placeholder: monthPlaceholder,\n showLeadingZeros: showLeadingZerosFromFormat || showLeadingZeros,\n value: month,\n year: year\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderYear\", function (currentMatch, index) {\n var _this$props3 = _this.props,\n autoFocus = _this$props3.autoFocus,\n yearAriaLabel = _this$props3.yearAriaLabel,\n yearPlaceholder = _this$props3.yearPlaceholder;\n var year = _this.state.year;\n return _react[\"default\"].createElement(_YearInput[\"default\"], _extends({\n key: \"year\"\n }, _this.commonInputProps, {\n ariaLabel: yearAriaLabel,\n autoFocus: index === 0 && autoFocus,\n placeholder: yearPlaceholder,\n value: year,\n valueType: \"day\"\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderHour\", function (currentMatch, index) {\n if (/h/.test(currentMatch)) {\n return _this.renderHour12(currentMatch, index);\n }\n\n return _this.renderHour24(currentMatch, index);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderHour12\", function (currentMatch, index) {\n var _this$props4 = _this.props,\n autoFocus = _this$props4.autoFocus,\n hourAriaLabel = _this$props4.hourAriaLabel,\n hourPlaceholder = _this$props4.hourPlaceholder;\n var _this$state3 = _this.state,\n amPm = _this$state3.amPm,\n hour = _this$state3.hour;\n\n if (currentMatch && currentMatch.length > 2) {\n throw new Error(\"Unsupported token: \".concat(currentMatch));\n }\n\n var showLeadingZeros = currentMatch && currentMatch.length === 2;\n return _react[\"default\"].createElement(_Hour12Input[\"default\"], _extends({\n key: \"hour12\"\n }, _this.commonInputProps, {\n amPm: amPm,\n ariaLabel: hourAriaLabel,\n autoFocus: index === 0 && autoFocus,\n placeholder: hourPlaceholder,\n showLeadingZeros: showLeadingZeros,\n value: hour\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderHour24\", function (currentMatch, index) {\n var _this$props5 = _this.props,\n autoFocus = _this$props5.autoFocus,\n hourAriaLabel = _this$props5.hourAriaLabel,\n hourPlaceholder = _this$props5.hourPlaceholder;\n var hour = _this.state.hour;\n\n if (currentMatch && currentMatch.length > 2) {\n throw new Error(\"Unsupported token: \".concat(currentMatch));\n }\n\n var showLeadingZeros = currentMatch && currentMatch.length === 2;\n return _react[\"default\"].createElement(_Hour24Input[\"default\"], _extends({\n key: \"hour24\"\n }, _this.commonInputProps, {\n ariaLabel: hourAriaLabel,\n autoFocus: index === 0 && autoFocus,\n placeholder: hourPlaceholder,\n showLeadingZeros: showLeadingZeros,\n value: hour\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderMinute\", function (currentMatch, index) {\n var _this$props6 = _this.props,\n autoFocus = _this$props6.autoFocus,\n minuteAriaLabel = _this$props6.minuteAriaLabel,\n minutePlaceholder = _this$props6.minutePlaceholder;\n var _this$state4 = _this.state,\n hour = _this$state4.hour,\n minute = _this$state4.minute;\n\n if (currentMatch && currentMatch.length > 2) {\n throw new Error(\"Unsupported token: \".concat(currentMatch));\n }\n\n var showLeadingZeros = currentMatch && currentMatch.length === 2;\n return _react[\"default\"].createElement(_MinuteInput[\"default\"], _extends({\n key: \"minute\"\n }, _this.commonInputProps, {\n ariaLabel: minuteAriaLabel,\n autoFocus: index === 0 && autoFocus,\n hour: hour,\n placeholder: minutePlaceholder,\n showLeadingZeros: showLeadingZeros,\n value: minute\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderSecond\", function (currentMatch, index) {\n var _this$props7 = _this.props,\n autoFocus = _this$props7.autoFocus,\n secondAriaLabel = _this$props7.secondAriaLabel,\n secondPlaceholder = _this$props7.secondPlaceholder;\n var _this$state5 = _this.state,\n hour = _this$state5.hour,\n minute = _this$state5.minute,\n second = _this$state5.second;\n\n if (currentMatch && currentMatch.length > 2) {\n throw new Error(\"Unsupported token: \".concat(currentMatch));\n }\n\n var showLeadingZeros = currentMatch ? currentMatch.length === 2 : true;\n return _react[\"default\"].createElement(_SecondInput[\"default\"], _extends({\n key: \"second\"\n }, _this.commonInputProps, {\n ariaLabel: secondAriaLabel,\n autoFocus: index === 0 && autoFocus,\n hour: hour,\n minute: minute,\n placeholder: secondPlaceholder,\n showLeadingZeros: showLeadingZeros,\n value: second\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"renderAmPm\", function (currentMatch, index) {\n var _this$props8 = _this.props,\n amPmAriaLabel = _this$props8.amPmAriaLabel,\n autoFocus = _this$props8.autoFocus,\n locale = _this$props8.locale;\n var amPm = _this.state.amPm;\n return _react[\"default\"].createElement(_AmPm[\"default\"], _extends({\n key: \"ampm\"\n }, _this.commonInputProps, {\n ariaLabel: amPmAriaLabel,\n autoFocus: index === 0 && autoFocus,\n locale: locale,\n onChange: _this.onChangeAmPm,\n value: amPm\n }));\n });\n\n return _this;\n }\n\n _createClass(DateTimeInput, [{\n key: \"renderCustomInputs\",\n value: function renderCustomInputs() {\n var placeholder = this.placeholder;\n var format = this.props.format;\n var elementFunctions = {\n d: this.renderDay,\n M: this.renderMonth,\n y: this.renderYear,\n h: this.renderHour,\n H: this.renderHour,\n m: this.renderMinute,\n s: this.renderSecond,\n a: this.renderAmPm\n };\n var allowMultipleInstances = typeof format !== 'undefined';\n return _renderCustomInputs(placeholder, elementFunctions, allowMultipleInstances);\n }\n }, {\n key: \"renderNativeInput\",\n value: function renderNativeInput() {\n var _this$props9 = this.props,\n disabled = _this$props9.disabled,\n maxDate = _this$props9.maxDate,\n minDate = _this$props9.minDate,\n name = _this$props9.name,\n nativeInputAriaLabel = _this$props9.nativeInputAriaLabel,\n required = _this$props9.required;\n var value = this.state.value;\n return _react[\"default\"].createElement(_NativeInput[\"default\"], {\n key: \"time\",\n ariaLabel: nativeInputAriaLabel,\n disabled: disabled,\n maxDate: maxDate || defaultMaxDate,\n minDate: minDate || defaultMinDate,\n name: name,\n onChange: this.onChangeNative,\n required: required,\n value: value,\n valueType: this.valueType\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var className = this.props.className;\n /* eslint-disable jsx-a11y/click-events-have-key-events */\n\n /* eslint-disable jsx-a11y/no-static-element-interactions */\n\n return _react[\"default\"].createElement(\"div\", {\n className: className,\n onClick: this.onClick\n }, this.renderNativeInput(), this.renderCustomInputs());\n }\n }, {\n key: \"formatTime\",\n get: function get() {\n var maxDetail = this.props.maxDetail;\n var options = {\n hour: 'numeric'\n };\n var level = allViews.indexOf(maxDetail);\n\n if (level >= 1) {\n options.minute = 'numeric';\n }\n\n if (level >= 2) {\n options.second = 'numeric';\n }\n\n return (0, _dateFormatter.getFormatter)(options);\n } // eslint-disable-next-line class-methods-use-this\n\n }, {\n key: \"formatNumber\",\n get: function get() {\n var options = {\n useGrouping: false\n };\n return (0, _dateFormatter.getFormatter)(options);\n }\n }, {\n key: \"dateDivider\",\n get: function get() {\n return this.datePlaceholder.match(/[^0-9a-z]/i)[0];\n }\n }, {\n key: \"timeDivider\",\n get: function get() {\n return this.timePlaceholder.match(/[^0-9a-z]/i)[0];\n }\n }, {\n key: \"datePlaceholder\",\n get: function get() {\n var locale = this.props.locale;\n var year = 2017;\n var monthIndex = 11;\n var day = 11;\n var date = new Date(year, monthIndex, day);\n return (0, _dateFormatter.formatDate)(locale, date).replace(this.formatNumber(locale, year), 'y').replace(this.formatNumber(locale, monthIndex + 1), 'M').replace(this.formatNumber(locale, day), 'd');\n }\n }, {\n key: \"timePlaceholder\",\n get: function get() {\n var locale = this.props.locale;\n var hour24 = 21;\n var hour12 = 9;\n var minute = 13;\n var second = 14;\n var date = new Date(2017, 0, 1, hour24, minute, second);\n return this.formatTime(locale, date).replace(this.formatNumber(locale, hour12), 'h').replace(this.formatNumber(locale, hour24), 'H').replace(this.formatNumber(locale, minute), 'mm').replace(this.formatNumber(locale, second), 'ss').replace(new RegExp((0, _utils.getAmPmLabels)(locale).join('|')), 'a');\n }\n }, {\n key: \"placeholder\",\n get: function get() {\n var format = this.props.format;\n\n if (format) {\n return format;\n }\n\n return \"\".concat(this.datePlaceholder, \"\\xA0\").concat(this.timePlaceholder);\n }\n }, {\n key: \"maxTime\",\n get: function get() {\n var maxDate = this.props.maxDate;\n\n if (!maxDate) {\n return null;\n }\n\n var _this$state6 = this.state,\n year = _this$state6.year,\n month = _this$state6.month,\n day = _this$state6.day;\n\n if (!isSameDate(maxDate, year, month, day)) {\n return null;\n }\n\n return (0, _dateUtils.getHoursMinutesSeconds)(maxDate);\n }\n }, {\n key: \"minTime\",\n get: function get() {\n var minDate = this.props.minDate;\n\n if (!minDate) {\n return null;\n }\n\n var _this$state7 = this.state,\n year = _this$state7.year,\n month = _this$state7.month,\n day = _this$state7.day;\n\n if (!isSameDate(minDate, year, month, day)) {\n return null;\n }\n\n return (0, _dateUtils.getHoursMinutesSeconds)(minDate);\n }\n }, {\n key: \"commonInputProps\",\n get: function get() {\n var _this2 = this;\n\n var _this$props10 = this.props,\n className = _this$props10.className,\n disabled = _this$props10.disabled,\n isWidgetOpen = _this$props10.isWidgetOpen,\n maxDate = _this$props10.maxDate,\n minDate = _this$props10.minDate,\n required = _this$props10.required;\n return {\n className: className,\n disabled: disabled,\n maxDate: maxDate || defaultMaxDate,\n minDate: minDate || defaultMinDate,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onKeyUp: this.onKeyUp,\n placeholder: '--',\n // This is only for showing validity when editing\n required: required || isWidgetOpen,\n itemRef: function itemRef(ref, name) {\n // Save a reference to each input field\n _this2[\"\".concat(name, \"Input\")] = ref;\n }\n };\n }\n }, {\n key: \"commonTimeInputProps\",\n get: function get() {\n var maxTime = this.maxTime,\n minTime = this.minTime;\n return {\n maxTime: maxTime,\n minTime: minTime\n };\n }\n /**\n * Returns value type that can be returned with currently applied settings.\n */\n\n }, {\n key: \"valueType\",\n get: function get() {\n var maxDetail = this.props.maxDetail;\n return maxDetail;\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var minDate = nextProps.minDate,\n maxDate = nextProps.maxDate;\n var nextState = {};\n /**\n * If isWidgetOpen flag has changed, we have to update it.\n * It's saved in state purely for use in getDerivedStateFromProps.\n */\n\n if (nextProps.isWidgetOpen !== prevState.isWidgetOpen) {\n nextState.isWidgetOpen = nextProps.isWidgetOpen;\n }\n /**\n * If the next value is different from the current one (with an exception of situation in\n * which values provided are limited by minDate and maxDate so that the dates are the same),\n * get a new one.\n */\n\n\n var nextValue = getDetailValueFrom(nextProps.value, minDate, maxDate);\n var values = [nextValue, prevState.value];\n\n if ( // Toggling calendar visibility resets values\n nextState.isCalendarOpen // Flag was toggled\n || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n return getDetailValueFrom(value, minDate, maxDate);\n }))) || datesAreDifferent.apply(void 0, _toConsumableArray(values.map(function (value) {\n return getDetailValueTo(value, minDate, maxDate);\n })))) {\n if (nextValue) {\n var _convert24to = (0, _dates.convert24to12)((0, _dateUtils.getHours)(nextValue));\n\n var _convert24to2 = _slicedToArray(_convert24to, 2);\n\n nextState.amPm = _convert24to2[1];\n nextState.year = (0, _dateUtils.getYear)(nextValue);\n nextState.month = (0, _dateUtils.getMonthHuman)(nextValue);\n nextState.day = (0, _dateUtils.getDate)(nextValue);\n nextState.hour = (0, _dateUtils.getHours)(nextValue);\n nextState.minute = (0, _dateUtils.getMinutes)(nextValue);\n nextState.second = (0, _dateUtils.getSeconds)(nextValue);\n } else {\n nextState.amPm = null;\n nextState.year = null;\n nextState.month = null;\n nextState.day = null;\n nextState.hour = null;\n nextState.minute = null;\n nextState.second = null;\n }\n\n nextState.value = nextValue;\n }\n\n return nextState;\n }\n }]);\n\n return DateTimeInput;\n}(_react.PureComponent);\n\nexports[\"default\"] = DateTimeInput;\nDateTimeInput.defaultProps = {\n maxDetail: 'minute',\n name: 'datetime'\n};\n\nvar isValue = _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]);\n\nDateTimeInput.propTypes = {\n amPmAriaLabel: _propTypes[\"default\"].string,\n autoFocus: _propTypes[\"default\"].bool,\n className: _propTypes[\"default\"].string.isRequired,\n dayAriaLabel: _propTypes[\"default\"].string,\n dayPlaceholder: _propTypes[\"default\"].string,\n disabled: _propTypes[\"default\"].bool,\n format: _propTypes[\"default\"].string,\n hourAriaLabel: _propTypes[\"default\"].string,\n hourPlaceholder: _propTypes[\"default\"].string,\n isWidgetOpen: _propTypes[\"default\"].bool,\n locale: _propTypes[\"default\"].string,\n maxDate: _propTypes2.isMaxDate,\n maxDetail: _propTypes[\"default\"].oneOf(allViews),\n minDate: _propTypes2.isMinDate,\n minuteAriaLabel: _propTypes[\"default\"].string,\n minutePlaceholder: _propTypes[\"default\"].string,\n monthAriaLabel: _propTypes[\"default\"].string,\n monthPlaceholder: _propTypes[\"default\"].string,\n name: _propTypes[\"default\"].string,\n nativeInputAriaLabel: _propTypes[\"default\"].string,\n onChange: _propTypes[\"default\"].func,\n required: _propTypes[\"default\"].bool,\n secondAriaLabel: _propTypes[\"default\"].string,\n secondPlaceholder: _propTypes[\"default\"].string,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].oneOfType([isValue, _propTypes[\"default\"].arrayOf(isValue)]),\n yearAriaLabel: _propTypes[\"default\"].string,\n yearPlaceholder: _propTypes[\"default\"].string\n};\n(0, _reactLifecyclesCompat.polyfill)(DateTimeInput);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = DayInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\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\nfunction DayInput(_ref) {\n var maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n month = _ref.month,\n year = _ref.year,\n otherProps = _objectWithoutProperties(_ref, [\"maxDate\", \"minDate\", \"month\", \"year\"]);\n\n var currentMonthMaxDays = function () {\n if (!month) {\n return 31;\n }\n\n return (0, _dateUtils.getDaysInMonth)(new Date(year, month - 1, 1));\n }();\n\n function isSameMonth(date) {\n return date && year === (0, _dateUtils.getYear)(date) && month === (0, _dateUtils.getMonthHuman)(date);\n }\n\n var maxDay = (0, _utils.safeMin)(currentMonthMaxDays, isSameMonth(maxDate) && (0, _dateUtils.getDate)(maxDate));\n var minDay = (0, _utils.safeMax)(1, isSameMonth(minDate) && (0, _dateUtils.getDate)(minDate));\n return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxDay,\n min: minDay,\n name: \"day\"\n }, otherProps));\n}\n\nDayInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n itemRef: _propTypes[\"default\"].func,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n month: _propTypes[\"default\"].number,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].number,\n year: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = MonthInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\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\nfunction MonthInput(_ref) {\n var maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n year = _ref.year,\n otherProps = _objectWithoutProperties(_ref, [\"maxDate\", \"minDate\", \"year\"]);\n\n function isSameYear(date) {\n return date && year === (0, _dateUtils.getYear)(date);\n }\n\n var maxMonth = (0, _utils.safeMin)(12, isSameYear(maxDate) && (0, _dateUtils.getMonthHuman)(maxDate));\n var minMonth = (0, _utils.safeMax)(1, isSameYear(minDate) && (0, _dateUtils.getMonthHuman)(minDate));\n return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxMonth,\n min: minMonth,\n name: \"month\"\n }, otherProps));\n}\n\nMonthInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n itemRef: _propTypes[\"default\"].func,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].number,\n year: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = MonthSelect;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _dateFormatter = require(\"../shared/dateFormatter\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\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\nfunction MonthSelect(_ref) {\n var ariaLabel = _ref.ariaLabel,\n className = _ref.className,\n itemRef = _ref.itemRef,\n locale = _ref.locale,\n maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n _ref$placeholder = _ref.placeholder,\n placeholder = _ref$placeholder === void 0 ? '--' : _ref$placeholder,\n _short = _ref[\"short\"],\n value = _ref.value,\n year = _ref.year,\n otherProps = _objectWithoutProperties(_ref, [\"ariaLabel\", \"className\", \"itemRef\", \"locale\", \"maxDate\", \"minDate\", \"placeholder\", \"short\", \"value\", \"year\"]);\n\n function isSameYear(date) {\n return date && year === (0, _dateUtils.getYear)(date);\n }\n\n var maxMonth = (0, _utils.safeMin)(12, isSameYear(maxDate) && (0, _dateUtils.getMonthHuman)(maxDate));\n var minMonth = (0, _utils.safeMax)(1, isSameYear(minDate) && (0, _dateUtils.getMonthHuman)(minDate));\n\n var dates = _toConsumableArray(Array(12)).map(function (el, index) {\n return new Date(2019, index, 1);\n });\n\n var name = 'month';\n var formatter = _short ? _dateFormatter.formatShortMonth : _dateFormatter.formatMonth;\n return _react[\"default\"].createElement(\"select\", _extends({\n \"aria-label\": ariaLabel,\n className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(name)),\n name: name,\n ref: function ref(_ref2) {\n if (itemRef) {\n itemRef(_ref2, name);\n }\n },\n value: value !== null ? value : ''\n }, otherProps), !value && _react[\"default\"].createElement(\"option\", {\n value: \"\"\n }, placeholder), dates.map(function (date) {\n var month = (0, _dateUtils.getMonthHuman)(date);\n var disabled = month < minMonth || month > maxMonth;\n return _react[\"default\"].createElement(\"option\", {\n key: month,\n disabled: disabled,\n value: month\n }, formatter(locale, date));\n }));\n}\n\nMonthSelect.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n itemRef: _propTypes[\"default\"].func,\n locale: _propTypes[\"default\"].string,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n \"short\": _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].number,\n year: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFormatter = getFormatter;\nexports.formatShortMonth = exports.formatMonth = void 0;\n\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction getFormatter(options) {\n return function (locale, date) {\n return date.toLocaleString(locale || (0, _getUserLocale[\"default\"])(), options);\n };\n}\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n */\n\n\nfunction toSafeHour(date) {\n var safeDate = new Date(date);\n return new Date(safeDate.setHours(12));\n}\n\nfunction getSafeFormatter(options) {\n return function (locale, date) {\n return getFormatter(options)(locale, toSafeHour(date));\n };\n}\n\nvar formatMonthOptions = {\n month: 'long'\n};\nvar formatShortMonthOptions = {\n month: 'short'\n};\nvar formatMonth = getSafeFormatter(formatMonthOptions);\nexports.formatMonth = formatMonth;\nvar formatShortMonth = getSafeFormatter(formatShortMonthOptions);\nexports.formatShortMonth = formatShortMonth;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = YearInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\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\nfunction YearInput(_ref) {\n var maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n _ref$placeholder = _ref.placeholder,\n placeholder = _ref$placeholder === void 0 ? '----' : _ref$placeholder,\n valueType = _ref.valueType,\n otherProps = _objectWithoutProperties(_ref, [\"maxDate\", \"minDate\", \"placeholder\", \"valueType\"]);\n\n var maxYear = (0, _utils.safeMin)(275760, maxDate && (0, _dateUtils.getYear)(maxDate));\n var minYear = (0, _utils.safeMax)(1, minDate && (0, _dateUtils.getYear)(minDate));\n\n var yearStep = function () {\n if (valueType === 'century') {\n return 10;\n }\n\n return 1;\n }();\n\n return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxYear,\n min: minYear,\n name: \"year\",\n placeholder: placeholder,\n step: yearStep\n }, otherProps));\n}\n\nYearInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n itemRef: _propTypes[\"default\"].func,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].number,\n valueType: _propTypes2.isValueType\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Hour12Input;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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 _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\nfunction Hour12Input(_ref) {\n var amPm = _ref.amPm,\n hour = _ref.hour,\n maxTime = _ref.maxTime,\n minTime = _ref.minTime,\n value = _ref.value,\n otherProps = _objectWithoutProperties(_ref, [\"amPm\", \"hour\", \"maxTime\", \"minTime\", \"value\"]);\n\n var maxHour = (0, _utils.min)(12, maxTime && function () {\n var _convert24to = (0, _dates.convert24to12)((0, _dateUtils.getHours)(maxTime)),\n _convert24to2 = _slicedToArray(_convert24to, 2),\n maxHourResult = _convert24to2[0],\n maxAmPm = _convert24to2[1];\n\n if (maxAmPm !== amPm) {\n // pm is always after am, so we should ignore validation\n return null;\n }\n\n return maxHourResult;\n }());\n var minHour = (0, _utils.max)(1, minTime && function () {\n var _convert24to3 = (0, _dates.convert24to12)((0, _dateUtils.getHours)(minTime)),\n _convert24to4 = _slicedToArray(_convert24to3, 2),\n minHourResult = _convert24to4[0],\n minAmPm = _convert24to4[1];\n\n if ( // pm is always after am, so we should ignore validation\n minAmPm !== amPm // If minHour is 12 am/pm, user should be able to enter 12, 1, ..., 11.\n || minHourResult === 12) {\n return null;\n }\n\n return minHourResult;\n }());\n var value12 = value !== null ? (0, _dates.convert24to12)(value)[0] : null;\n return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxHour,\n min: minHour,\n name: \"hour12\",\n nameForClass: \"hour\",\n value: value12\n }, otherProps));\n}\n\nHour12Input.propTypes = {\n amPm: _propTypes[\"default\"].string,\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n hour: _propTypes[\"default\"].number,\n itemRef: _propTypes[\"default\"].func,\n maxTime: _propTypes2.isTime,\n minTime: _propTypes2.isTime,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFormatter = getFormatter;\n\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* eslint-disable import/prefer-default-export */\nfunction getFormatter(options) {\n return function (locale, date) {\n return date.toLocaleString(locale || (0, _getUserLocale[\"default\"])(), options);\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Hour24Input;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\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\nfunction Hour24Input(_ref) {\n var hour = _ref.hour,\n maxTime = _ref.maxTime,\n minTime = _ref.minTime,\n otherProps = _objectWithoutProperties(_ref, [\"hour\", \"maxTime\", \"minTime\"]);\n\n var maxHour = (0, _utils.min)(23, maxTime && (0, _dateUtils.getHours)(maxTime));\n var minHour = (0, _utils.max)(0, minTime && (0, _dateUtils.getHours)(minTime));\n return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxHour,\n min: minHour,\n name: \"hour24\",\n nameForClass: \"hour\"\n }, otherProps));\n}\n\nHour24Input.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n hour: _propTypes[\"default\"].number,\n itemRef: _propTypes[\"default\"].func,\n maxTime: _propTypes2.isTime,\n minTime: _propTypes2.isTime,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = MinuteInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\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\nfunction MinuteInput(_ref) {\n var hour = _ref.hour,\n maxTime = _ref.maxTime,\n minTime = _ref.minTime,\n _ref$showLeadingZeros = _ref.showLeadingZeros,\n showLeadingZeros = _ref$showLeadingZeros === void 0 ? true : _ref$showLeadingZeros,\n otherProps = _objectWithoutProperties(_ref, [\"hour\", \"maxTime\", \"minTime\", \"showLeadingZeros\"]);\n\n function isSameHour(date) {\n return date && hour === (0, _dateUtils.getHours)(date);\n }\n\n var maxMinute = (0, _utils.min)(59, isSameHour(maxTime) && (0, _dateUtils.getMinutes)(maxTime));\n var minMinute = (0, _utils.max)(0, isSameHour(minTime) && (0, _dateUtils.getMinutes)(minTime));\n return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxMinute,\n min: minMinute,\n name: \"minute\",\n showLeadingZeros: showLeadingZeros\n }, otherProps));\n}\n\nMinuteInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n hour: _propTypes[\"default\"].number,\n itemRef: _propTypes[\"default\"].func,\n maxTime: _propTypes2.isTime,\n minTime: _propTypes2.isTime,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = SecondInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _Input = _interopRequireDefault(require(\"./Input\"));\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _extends() { _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; }; return _extends.apply(this, arguments); }\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\nfunction SecondInput(_ref) {\n var hour = _ref.hour,\n maxTime = _ref.maxTime,\n minTime = _ref.minTime,\n minute = _ref.minute,\n _ref$showLeadingZeros = _ref.showLeadingZeros,\n showLeadingZeros = _ref$showLeadingZeros === void 0 ? true : _ref$showLeadingZeros,\n otherProps = _objectWithoutProperties(_ref, [\"hour\", \"maxTime\", \"minTime\", \"minute\", \"showLeadingZeros\"]);\n\n function isSameMinute(date) {\n return date && hour === (0, _dateUtils.getHours)(date) && minute === (0, _dateUtils.getMinutes)(date);\n }\n\n var maxSecond = (0, _utils.min)(59, isSameMinute(maxTime) && (0, _dateUtils.getSeconds)(maxTime));\n var minSecond = (0, _utils.max)(0, isSameMinute(minTime) && (0, _dateUtils.getSeconds)(minTime));\n return _react[\"default\"].createElement(_Input[\"default\"], _extends({\n max: maxSecond,\n min: minSecond,\n name: \"second\",\n showLeadingZeros: showLeadingZeros\n }, otherProps));\n}\n\nSecondInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n hour: _propTypes[\"default\"].number,\n itemRef: _propTypes[\"default\"].func,\n maxTime: _propTypes2.isTime,\n minTime: _propTypes2.isTime,\n minute: _propTypes[\"default\"].number,\n onChange: _propTypes[\"default\"].func,\n onKeyDown: _propTypes[\"default\"].func,\n onKeyUp: _propTypes[\"default\"].func,\n placeholder: _propTypes[\"default\"].string,\n required: _propTypes[\"default\"].bool,\n showLeadingZeros: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].number\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = AmPm;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _mergeClassNames = _interopRequireDefault(require(\"merge-class-names\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _dates = require(\"../shared/dates\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nvar _utils = require(\"../shared/utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_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 AmPm(_ref) {\n var ariaLabel = _ref.ariaLabel,\n className = _ref.className,\n disabled = _ref.disabled,\n itemRef = _ref.itemRef,\n locale = _ref.locale,\n maxTime = _ref.maxTime,\n minTime = _ref.minTime,\n onChange = _ref.onChange,\n required = _ref.required,\n value = _ref.value;\n var amDisabled = minTime && (0, _dates.convert24to12)((0, _dateUtils.getHours)(minTime))[1] === 'pm';\n var pmDisabled = maxTime && (0, _dates.convert24to12)((0, _dateUtils.getHours)(maxTime))[1] === 'am';\n var name = 'amPm';\n\n var _getAmPmLabels = (0, _utils.getAmPmLabels)(locale),\n _getAmPmLabels2 = _slicedToArray(_getAmPmLabels, 2),\n amLabel = _getAmPmLabels2[0],\n pmLabel = _getAmPmLabels2[1];\n\n return _react[\"default\"].createElement(\"select\", {\n \"aria-label\": ariaLabel,\n className: (0, _mergeClassNames[\"default\"])(\"\".concat(className, \"__input\"), \"\".concat(className, \"__\").concat(name)),\n disabled: disabled,\n name: name,\n onChange: onChange,\n ref: function ref(_ref2) {\n if (itemRef) {\n itemRef(_ref2, name);\n }\n },\n required: required,\n value: value !== null ? value : ''\n }, !value && _react[\"default\"].createElement(\"option\", {\n value: \"\"\n }, \"--\"), _react[\"default\"].createElement(\"option\", {\n disabled: amDisabled,\n value: \"am\"\n }, amLabel), _react[\"default\"].createElement(\"option\", {\n disabled: pmDisabled,\n value: \"pm\"\n }, pmLabel));\n}\n\nAmPm.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n className: _propTypes[\"default\"].string.isRequired,\n disabled: _propTypes[\"default\"].bool,\n itemRef: _propTypes[\"default\"].func,\n locale: _propTypes[\"default\"].string,\n maxTime: _propTypes2.isTime,\n minTime: _propTypes2.isTime,\n onChange: _propTypes[\"default\"].func,\n required: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].oneOf(['am', 'pm'])\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Divider;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction Divider(_ref) {\n var children = _ref.children;\n return _react[\"default\"].createElement(\"span\", {\n className: \"react-datetime-picker__inputGroup__divider\"\n }, children);\n}\n\nDivider.propTypes = {\n children: _propTypes[\"default\"].node\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = NativeInput;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _dateUtils = require(\"@wojtekmaj/date-utils\");\n\nvar _propTypes2 = require(\"../shared/propTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction NativeInput(_ref) {\n var ariaLabel = _ref.ariaLabel,\n disabled = _ref.disabled,\n maxDate = _ref.maxDate,\n minDate = _ref.minDate,\n name = _ref.name,\n onChange = _ref.onChange,\n required = _ref.required,\n value = _ref.value,\n valueType = _ref.valueType;\n\n var nativeValueParser = function () {\n switch (valueType) {\n case 'hour':\n return function (receivedValue) {\n return \"\".concat((0, _dateUtils.getISOLocalDate)(receivedValue), \"T\").concat((0, _dateUtils.getHours)(receivedValue), \":00\");\n };\n\n case 'minute':\n return function (receivedValue) {\n return \"\".concat((0, _dateUtils.getISOLocalDate)(receivedValue), \"T\").concat((0, _dateUtils.getHoursMinutes)(receivedValue));\n };\n\n case 'second':\n return _dateUtils.getISOLocalDateTime;\n\n default:\n throw new Error('Invalid valueType.');\n }\n }();\n\n var step = function () {\n switch (valueType) {\n case 'hour':\n return 3600;\n\n case 'minute':\n return 60;\n\n case 'second':\n return 1;\n\n default:\n throw new Error('Invalid valueType.');\n }\n }();\n\n function stopPropagation(event) {\n event.stopPropagation();\n }\n\n return _react[\"default\"].createElement(\"input\", {\n \"aria-label\": ariaLabel,\n disabled: disabled,\n max: maxDate ? nativeValueParser(maxDate) : null,\n min: minDate ? nativeValueParser(minDate) : null,\n name: name,\n onChange: onChange,\n onFocus: stopPropagation,\n required: required,\n step: step,\n style: {\n visibility: 'hidden',\n position: 'absolute',\n top: '-9999px',\n left: '-9999px'\n },\n type: \"datetime-local\",\n value: value ? nativeValueParser(value) : ''\n });\n}\n\nNativeInput.propTypes = {\n ariaLabel: _propTypes[\"default\"].string,\n disabled: _propTypes[\"default\"].bool,\n maxDate: _propTypes2.isMaxDate,\n minDate: _propTypes2.isMinDate,\n name: _propTypes[\"default\"].string,\n onChange: _propTypes[\"default\"].func,\n required: _propTypes[\"default\"].bool,\n value: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].instanceOf(Date)]),\n valueType: _propTypes2.isValueType\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getFormatter = getFormatter;\nexports.formatDate = void 0;\n\nvar _getUserLocale = _interopRequireDefault(require(\"get-user-locale\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/* eslint-disable import/prefer-default-export */\nfunction getFormatter(options) {\n return function (locale, date) {\n return date.toLocaleString(locale || (0, _getUserLocale[\"default\"])(), options);\n };\n}\n\nvar formatDateOptions = {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric'\n};\nvar formatDate = getFormatter(formatDateOptions);\nexports.formatDate = formatDate;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"convert12to24\", {\n enumerable: true,\n get: function get() {\n return _dates.convert12to24;\n }\n});\nObject.defineProperty(exports, \"convert24to12\", {\n enumerable: true,\n get: function get() {\n return _dates.convert24to12;\n }\n});\n\nvar _dates = require(\"react-time-picker/dist/shared/dates\");","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\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\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","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\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\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 * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","var parse = require('inline-style-parser');\n\n/**\n * Parses inline style to object.\n *\n * @example\n * // returns { 'line-height': '42' }\n * StyleToObject('line-height: 42;');\n *\n * @param {String} style - The inline style.\n * @param {Function} [iterator] - The iterator function.\n * @return {null|Object}\n */\nfunction StyleToObject(style, iterator) {\n var output = null;\n if (!style || typeof style !== 'string') {\n return output;\n }\n\n var declaration;\n var declarations = parse(style);\n var hasIterator = typeof iterator === 'function';\n var property;\n var value;\n\n for (var i = 0, len = declarations.length; i < len; i++) {\n declaration = declarations[i];\n property = declaration.property;\n value = declaration.value;\n\n if (hasIterator) {\n iterator(property, value, declaration);\n } else if (value) {\n output || (output = {});\n output[property] = value;\n }\n }\n\n return output;\n}\n\nmodule.exports = StyleToObject;\n","// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nmodule.exports = function(style, options) {\n if (typeof style !== 'string') {\n throw new TypeError('First argument must be a string');\n }\n\n if (!style) return [];\n\n options = options || {};\n\n /**\n * Positional.\n */\n var lineno = 1;\n var column = 1;\n\n /**\n * Update lineno and column based on `str`.\n *\n * @param {String} str\n */\n function updatePosition(str) {\n var lines = str.match(NEWLINE_REGEX);\n if (lines) lineno += lines.length;\n var i = str.lastIndexOf(NEWLINE);\n column = ~i ? str.length - i : column + str.length;\n }\n\n /**\n * Mark position and patch `node.position`.\n *\n * @return {Function}\n */\n function position() {\n var start = { line: lineno, column: column };\n return function(node) {\n node.position = new Position(start);\n whitespace();\n return node;\n };\n }\n\n /**\n * Store position information for a node.\n *\n * @constructor\n * @property {Object} start\n * @property {Object} end\n * @property {undefined|String} source\n */\n function Position(start) {\n this.start = start;\n this.end = { line: lineno, column: column };\n this.source = options.source;\n }\n\n /**\n * Non-enumerable source string.\n */\n Position.prototype.content = style;\n\n var errorsList = [];\n\n /**\n * Error `msg`.\n *\n * @param {String} msg\n * @throws {Error}\n */\n function error(msg) {\n var err = new Error(\n options.source + ':' + lineno + ':' + column + ': ' + msg\n );\n err.reason = msg;\n err.filename = options.source;\n err.line = lineno;\n err.column = column;\n err.source = style;\n\n if (options.silent) {\n errorsList.push(err);\n } else {\n throw err;\n }\n }\n\n /**\n * Match `re` and return captures.\n *\n * @param {RegExp} re\n * @return {undefined|Array}\n */\n function match(re) {\n var m = re.exec(style);\n if (!m) return;\n var str = m[0];\n updatePosition(str);\n style = style.slice(str.length);\n return m;\n }\n\n /**\n * Parse whitespace.\n */\n function whitespace() {\n match(WHITESPACE_REGEX);\n }\n\n /**\n * Parse comments.\n *\n * @param {Object[]} [rules]\n * @return {Object[]}\n */\n function comments(rules) {\n var c;\n rules = rules || [];\n while ((c = comment())) {\n if (c !== false) {\n rules.push(c);\n }\n }\n return rules;\n }\n\n /**\n * Parse comment.\n *\n * @return {Object}\n * @throws {Error}\n */\n function comment() {\n var pos = position();\n if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n var i = 2;\n while (\n EMPTY_STRING != style.charAt(i) &&\n (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n ) {\n ++i;\n }\n i += 2;\n\n if (EMPTY_STRING === style.charAt(i - 1)) {\n return error('End of comment missing');\n }\n\n var str = style.slice(2, i - 2);\n column += 2;\n updatePosition(str);\n style = style.slice(i);\n column += 2;\n\n return pos({\n type: TYPE_COMMENT,\n comment: str\n });\n }\n\n /**\n * Parse declaration.\n *\n * @return {Object}\n * @throws {Error}\n */\n function declaration() {\n var pos = position();\n\n // prop\n var prop = match(PROPERTY_REGEX);\n if (!prop) return;\n comment();\n\n // :\n if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n // val\n var val = match(VALUE_REGEX);\n\n var ret = pos({\n type: TYPE_DECLARATION,\n property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n value: val\n ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n : EMPTY_STRING\n });\n\n // ;\n match(SEMICOLON_REGEX);\n\n return ret;\n }\n\n /**\n * Parse declarations.\n *\n * @return {Object[]}\n */\n function declarations() {\n var decls = [];\n\n comments(decls);\n\n // declarations\n var decl;\n while ((decl = declaration())) {\n if (decl !== false) {\n decls.push(decl);\n comments(decls);\n }\n }\n\n return decls;\n }\n\n whitespace();\n return declarations();\n};\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n","import javascript from \"highlight.js/lib/languages/javascript\";\nexport default javascript;","import python from \"highlight.js/lib/languages/python\";\nexport default python;","import r from \"highlight.js/lib/languages/r\";\nexport default r;","export default {\n \"hljs\": {\n \"display\": \"block\",\n \"overflowX\": \"auto\",\n \"padding\": \"0.5em\",\n \"color\": \"#333\",\n \"background\": \"#f8f8f8\"\n },\n \"hljs-comment\": {\n \"color\": \"#998\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-quote\": {\n \"color\": \"#998\",\n \"fontStyle\": \"italic\"\n },\n \"hljs-keyword\": {\n \"color\": \"#333\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-selector-tag\": {\n \"color\": \"#333\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-subst\": {\n \"color\": \"#333\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-number\": {\n \"color\": \"#008080\"\n },\n \"hljs-literal\": {\n \"color\": \"#008080\"\n },\n \"hljs-variable\": {\n \"color\": \"#008080\"\n },\n \"hljs-template-variable\": {\n \"color\": \"#008080\"\n },\n \"hljs-tag .hljs-attr\": {\n \"color\": \"#008080\"\n },\n \"hljs-string\": {\n \"color\": \"#d14\"\n },\n \"hljs-doctag\": {\n \"color\": \"#d14\"\n },\n \"hljs-title\": {\n \"color\": \"#900\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-section\": {\n \"color\": \"#900\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-selector-id\": {\n \"color\": \"#900\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-type\": {\n \"color\": \"#458\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-class .hljs-title\": {\n \"color\": \"#458\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-tag\": {\n \"color\": \"#000080\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-name\": {\n \"color\": \"#000080\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-attribute\": {\n \"color\": \"#000080\",\n \"fontWeight\": \"normal\"\n },\n \"hljs-regexp\": {\n \"color\": \"#009926\"\n },\n \"hljs-link\": {\n \"color\": \"#009926\"\n },\n \"hljs-symbol\": {\n \"color\": \"#990073\"\n },\n \"hljs-bullet\": {\n \"color\": \"#990073\"\n },\n \"hljs-built_in\": {\n \"color\": \"#0086b3\"\n },\n \"hljs-builtin-name\": {\n \"color\": \"#0086b3\"\n },\n \"hljs-meta\": {\n \"color\": \"#999\",\n \"fontWeight\": \"bold\"\n },\n \"hljs-deletion\": {\n \"background\": \"#fdd\"\n },\n \"hljs-addition\": {\n \"background\": \"#dfd\"\n },\n \"hljs-emphasis\": {\n \"fontStyle\": \"italic\"\n },\n \"hljs-strong\": {\n \"fontWeight\": \"bold\"\n }\n};"],"sourceRoot":""}