{"version":3,"sources":["node_modules/browser-pack/_prelude.js","components/core/JsInterop/ObservableApi/mutationObserver.ts","components/core/JsInterop/ObservableApi/observableApi.ts","components/core/JsInterop/ObservableApi/resizeObserver.ts","components/core/JsInterop/interop.ts","components/core/JsInterop/modules/components/backtopHelper.ts","components/core/JsInterop/modules/components/downloadHelper.ts","components/core/JsInterop/modules/components/export.ts","components/core/JsInterop/modules/components/iconHelper.ts","components/core/JsInterop/modules/components/imageHelper.ts","components/core/JsInterop/modules/components/inputHelper.ts","components/core/JsInterop/modules/components/mentionsHelper.ts","components/core/JsInterop/modules/components/modalHelper.ts","components/core/JsInterop/modules/components/overlay.ts","components/core/JsInterop/modules/components/overlayHelper.ts","components/core/JsInterop/modules/components/tableHelper.ts","components/core/JsInterop/modules/components/uploadHelper.ts","components/core/JsInterop/modules/components/watermarkHelper.ts","components/core/JsInterop/modules/dom/dragHelper.ts","components/core/JsInterop/modules/dom/eventHelper.ts","components/core/JsInterop/modules/dom/exports.ts","components/core/JsInterop/modules/dom/infoHelper.ts","components/core/JsInterop/modules/dom/manipulationHelper.ts","components/core/JsInterop/modules/dom/types.ts","components/core/JsInterop/modules/enums.ts","components/core/JsInterop/modules/stateProvider.ts","components/core/JsInterop/modules/styleHelper.ts","components/main.ts","node_modules/@ant-design/colors/dist/index.js","node_modules/@ctrl/tinycolor/dist/conversion.js","node_modules/@ctrl/tinycolor/dist/css-color-names.js","node_modules/@ctrl/tinycolor/dist/format-input.js","node_modules/@ctrl/tinycolor/dist/from-ratio.js","node_modules/@ctrl/tinycolor/dist/index.js","node_modules/@ctrl/tinycolor/dist/interfaces.js","node_modules/@ctrl/tinycolor/dist/public_api.js","node_modules/@ctrl/tinycolor/dist/random.js","node_modules/@ctrl/tinycolor/dist/readability.js","node_modules/@ctrl/tinycolor/dist/to-ms-filter.js","node_modules/@ctrl/tinycolor/dist/util.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","infoHelper_1","mutationObserver","create","key","invoker","isDotNetInvoker","observer","MutationObserver","mutations","observerCallback","mutationObservers","set","observe","element","options","get","domElement","infoHelper","disconnect","this","dispose","entriesJson","JSON","stringify","invokeMethodAsync","Map","resizeObserver_1","mutationObserver_1","__createBinding","ResizeObserverEntry","resizeObserver","isResizeObserverSupported","window","ResizeObserver","entries","observerCallBack","resizeObservers","unobserve","mappedEntries_1","Array","forEach","entry","mEntry","borderBoxSize","blockSize","inlineSize","contentBoxSize","contentRect","x","y","width","height","top","right","bottom","left","push","stateProvider_1","exports_1","observable","styleHelper_1","export_1","dragHelper_1","colors_1","log","text","console","backtopHelper","backTop","target","dom","domInfoHelper","domManipulationHelper","slideTo","scrollTop","downloadHelper","triggerFileDownload","fileName","url","anchorElement","document","createElement","href","download","click","remove","backtopHelper_1","overlayHelper_1","uploadHelper_1","downloadHelper_1","mentionsHelper_1","modalHelper_1","inputHelper_1","tableHelper_1","iconHelper_1","imageHelper_1","watermarkHelper_1","iconHelper","createIconFromfontCN","scriptUrl","script","querySelector","setAttribute","body","appendChild","imageHelper","imgDragAndDrop","mouseX","mouseY","imgX","imgY","isDragging","handleMouseMove","event","deltaX","clientX","deltaY","clientY","style","handleMouseUp","cursor","removeEventListener","addEventListener","offsetLeft","offsetTop","preventDefault","documentElement","observableApi_1","inputHelper","getTextAreaInfo","result","scrollHeight","currentStyle","parseFloat","getComputedStyle","defaultView","getPropertyValue","Object","is","NaN","registerResizeTextArea","minRows","maxRows","objReference","state","objReferenceDict","id","eventCallbackRegistry","resizeTextArea","resize","disposeResizeTextArea","rowHeight","oldHeight","rows","newHeight","dims","offsetHeight","oldRows","Math","trunc","max","overflowY","scrollWidth","setSelectionStart","position","value","selectionStart","selectionEnd","mentionsHelper","getTextarea","textAreaTag","textarea","tagName","allTextareas","getElementsByTagName","setPopShowFlag","show","isPopShowFlag","setEditorKeyHandler","Mentions","_this","onkeydown","ev","__awaiter","_a","sent","getProp","propName","getCursorXY","format","replace","textArea","inputorValue","pos","start_range","slice","end_range","substring","html","div_mirror","flag","className","innerHTML","parentNode","append","scrollLeft","manipulationHelper_1","modalHelper","focusDialog","selector","count","htmlElement","ele","hasAttribute","activeElement","blur","setTimeout","focus","getActiveElement","destroyAllDialog","querySelectorAll","container","HTMLElement","manipulationHelper","enableBodyScroll","Placement","TriggerBoundyAdjustMode","Overlay","getFirstValidChild","triggerIsWrappedInDiv","childNodes","childElement","setVerticalCalculation","placement","LeftTop","RightTop","triggerTop","triggerHeight","trigger","overlayHeight","constraints","reversePositionValue","BottomLeft","Bottom","BottomRight","verticalOffset","Left","Right","TopLeft","Top","TopRight","triggerBottom","LeftBottom","RightBottom","setHorizontalCalculation","triggerLeft","triggerWidth","overlayWidth","horizontalOffset","triggerRight","containerDimension","overlayDimension","prototype","removeHiddenClass","end","overlay","indexOf","start","lastIndexOf","substr","classList","calculateScrollBarSizes","isContainerBody","scrollbarSize","horizontalHeight","innerHeight","clientHeight","verticalWidth","innerWidth","clientWidth","offsetWidth","blazorId","resizing","bind","mutating","attributes","characterData","childList","subtree","attributeOldValue","characterDataOldValue","onScroll","scrollableContainers","diff","isTriggerFixed","lastScrollPosition","pageYOffset","containerInfo","overlayInfo","selectedVerticalPosition","sanitizedPosition","getAdjustedBottom","calculatePosition","overlayPreset","duringInit","lastStyleMutation","cssText","contains","removeChild","applyLocation","firstTime","offsetParent","recentPlacement","getKeyElementDimensions","restoreInitialPlacement","calculationsToPerform","getNominalPositions","size","adjustToContainerBoundaries","sanitizeCalculatedPositions","triggerPrefixCls","add","__assign","zIndex","getMaxZIndex","selectedHorizontalPosition","getAdjustedRight","containerBoundarySize","getContainerBoundarySize","directionsToCalculate","Set","boundyAdjustMode","None","horizontalPosition","getHorizontalPosition","verticalPosition","getVerticalPosition","initialPlacement","appliedStylePositionMap","horizontal","vertical","verticalCalculation","horizontalCalculation","logToConsole","extraMessage","info","parentInfo","parentElement","containerId","absoluteTop","triggerInfo","absoluteLeft","triggerHtml","outerHTML","class","appliedCssPosition","overlay_style_top","overlay_style_bottom","overlay_style_left","overlay_style_right","pageXOffset","containerIsBody","scrollbars","overlayConstraints","placment","applyPlacement","stringMach","currentPlacement","newPlacement","getInfo","triggerPosition","clientTop","clientLeft","has","adjustVerticalToContainerBoundaries","adjustHorizontalToContainerBoundaries","setBodyBoundayrSize","getWindow","scroll","getScroll","bodyBoundarySize","verticalScrollBasedOnParent","horizontalScrollBasedOnParent","InScroll","parentIsInsignificant","getOverlayVisibleHeight","visibleIn","boundary","getOverlayVisibleWidth","positionCache","selectedPositionCache","placementCache","horizontalCalculationCache","visibleWidthBeforeAdjustment","visibleWidthInBodyBeforeAdjustment","visibleWidthAfterAdjustment","visibleWidthInBodyAfterAdjustment","overlayFitsContainer","isContainerOverBody","getHorizontalAdjustment","verticalCalculationCache","visibleHeightBeforeAdjustment","visibleHeightInBodyBeforeAdjustment","visibleHeightAfterAdjustment","visibleHeightInBodyAfterAdjustment","getVerticalAdjustment","type","endExpressedAsLeft","endExpressedAsTop","reverseVerticalPlacementMap","reverseHorizontalPlacementMap","arrowCenterPlacementMatch","triggerBoundyAdjustMode","findAncestorWithZIndex","arrowPointAtCenter","isFixedPosition","getScrollableParents","overlay_1","overlayHelper","addOverlayToContainer","overlaySelector","triggerSelector","containerSelector","overlayTop","overlayLeft","overlayPresets","overlayElement","containerElement","triggerElement","addElementTo","overlayRegistry","updateOverlayPosition","overlayPresets_1","deleteOverlayFromContainer","addPreventEnterOnOverlayVisible","eventHelper","preventKeyOnCondition","removePreventEnterOnOverlayVisible","tableHelper","isHidden","computedStyle","display","visibility","isIgnore","previousPosition","rect","getBoundingClientRect","getTotalHeightAbove","rootElement","currentRect","parentRect","getTotalHeightBelow","marginBottom","totalHeight","currentElement","nextElementSibling","rowGap","parentBorderBottom","parentPaddingBottom","previousElement","parentComputedStyle","endsWith","borderStyle","borderBottom","paddingBottom","previousComputedStyle","currentComputedStyle","hasSameZIndex","marginTop","parseHeightValue","getCssHeight","parentHeight","getNumericHeight","getContainer","parent_1","setBodyHeight","bodyRef","heightAbove","heightBelow","heightStyle","bindTableScroll","wrapperRef","tableRef","headerRef","scrollX","scrollY","resizable","autoHeight","bindScroll","SetScrollPositionClassName","enableColumnResizing","attributeFilter","unbindTableScroll","pingLeft","pingRight","abs","headerElement","tableElement","cols","ths","tHead","headerCols","th","col","headerCol","handle","handleMouseDown","evt","stopPropagation","startPageX","touches","pageX","originalColumnWidth","rtlMultiplier","updatedColumnWidth","newPageX","nextWidth","TouchEvent","passive","uploadHelper","addFileClickEventListener","btn","fileClickEvent","removeFileClickEventListener","fileId","currentTarget","nodeValue","getElementById","clearFile","getFileInfo","files","fileInfo","file","objectUrl","getObjectURL","name","objectURL","undefined","URL","createObjectURL","webkitURL","uploadFile","index","data","headers","instance","percentMethod","successMethod","errorMethod","method","formData","FormData","antiforgeryToken","getAttribute","req","XMLHttpRequest","onreadystatechange","readyState","status","responseText","upload","onprogress","percent","floor","loaded","onerror","open","header","setRequestHeader","send","watermarkHelper","generateBase64Url","dotnetRef","watermarkContentRef","watermarkRef","onFinish","ratio","markHeight","parent","gapX","gapY","rotate","alpha","watermarkContent","lineSpace","canvas","ctx","getContext","devicePixelRatio","canvasHeight","translate","PI","Number","globalAlpha","markWidth","fillStyle","fillRect","contents","isArray","item","isGrayscale_1","img_1","fontColor","fontFamily","fontWeight","textAlign","fontStyle","markSize","isGrayscale","Image","crossOrigin","referrerPolicy","src","onload","drawImage","imgData","getImageData","pixels","lightness","putImageData","toDataURL","_b","fontSize","_c","_d","_e","_f","_g","font","textBaseline","fillText","mutationsList","mutation","removedNodes","node","warn","throttle","fn","threshold","timeout","Date","args","_i","arguments","curTime","clearTimeout","apply","eventMap","defaultOptions","inViewport","Dragger","getContainerTranslateOffset","_container","xOffset","yOffset","translateInfo","split","parseInt","isNaN","bindDrag","_trigger","_options","onMousedown","onMouseup","onMousemove","onResize","unbindDrag","resetContainerStyle","_style","_isFirst","dragInViewport","draggedIn","_state","isInDrag","mouseDownX","mouseDownY","bound","getBoundPosition","_draggedInContainer","mouseDownXOffset","mouseDownYOffset","offsetX","nowX","nowY","offsetY","assign","childNode","childComputedStyle","marginLeft","paddingLeft","paddingTop","paddingRight","borderLeftWidth","borderRightWidth","marginRight","borderTopWidth","borderBottomWidth","enableDraggable","dragger","disableDraggable","resetModalPosition","triggerEvent","eventType","eventName","createEvent","initEvent","dispatchEvent","addDomEventListener","callback","k","obj","cache","json","v","_typeof","Node","Window","_id","debounce","addDomEventListenerToFirstChild","firstElementChild","removeDomEventListener","addPreventKeys","inputElement","keys","map","toUpperCase","preventKeys","check","removePreventKeys","func","wait","immediate","context","callNow","eventHelper_1","domTypes","absolutePosition","getElementAbsolutePos","elementMarginTop","elementMarginBottom","elementMarginLeft","elementMarginRight","round","res","viewportElement","box","getFirstChildDomInfo","hasFocus","getInnerText","innerText","from","reduce","nodeName","toLowerCase","zIndexAsString","getElementsInfo","elements","infos","el","parents","enums","cachedScrollBarSize","scrollIds","addElementToBody","delElementFromBody","addElement","elementSelector","prepend","insertBefore","firstChild","delElementFrom","delElementSelector","delay","delElement","setDomAttribute","copyElement","copyElementAsRichText","copy","selection","getSelection","range","rangeCount","removeAllRanges","createRange","selectNode","addRange","successful","execCommand","err","navigator","clipboard","writeText","then","error","fallbackCopyTextToClipboard","select","msg","noScroll","option","FocusBehavior","FocusAtLast","preventScroll","HTMLInputElement","HTMLTextAreaElement","FocusAndSelectAll","FocusAtFirst","setSelectionRange","scrollTo","scrollIntoView","behavior","block","inline","smoothScrollTo","duration","perTick","to","cancelAnimationFrame","requestAnimationFrame","targetPageY","timer","setInterval","currentY","speed","ceil","clearInterval","invokeTabKey","currInput","inputs","next","disableBodyScroll","oldBodyCache","scrollBarSize","oldBodyCacheStack","getScrollBarSize","styleHelper","css","hasScrollbar","overflow","addCls","force","pop","removeCls","fresh","outer","widthContained","inner","outerStyle","pointerEvents","widthScroll","setProperty","__esModule","State","disposeObj","objReferenceName","getInstance","clsName","addClsToFirstChild","removeClsFromFirstChild","matchMedia","query","matches","getStyle","styleProp","cssAttributes","cssAttribute","attribute","hasOwnProperty","interop","AntDesign","defineProperty","tinycolor","hueStep","saturationStep","saturationStep2","brightnessStep1","brightnessStep2","lightColorCount","darkColorCount","darkColorMap","opacity","toHsv","_ref","g","b","hsv","rgbToHsv","h","s","toHex","_ref2","concat","rgbToHex","getHue","light","hue","getSaturation","saturation","toFixed","getValue","generate","color","opts","patterns","pColor","inputToRGB","colorString","_hsv","_colorString","theme","_ref3","rgb1","backgroundColor","rgb2","amount","presetPrimaryColors","red","volcano","orange","gold","yellow","lime","green","cyan","blue","geekblue","purple","magenta","grey","presetPalettes","presetDarkPalettes","primary","numberInputToObject","parseIntFromHex","convertHexToDecimal","convertDecimalToHex","rgbaToArgbHex","rgbaToHex","hsvToRgb","hslToRgb","rgbToHsl","rgbToRgb","util_1","hue2rgb","q","d","toString","val","bound01","min","l","mod","allow3Char","hex","pad2","startsWith","charAt","join","allow4Char","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","goldenrod","gray","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavenderblush","lavender","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","isValidCSSUnit","stringInputToObject","conversion_1","css_color_names_1","rgb","ok","String","convertToPercentage","boundAlpha","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","matchers","RegExp","rgba","hsl","hsla","hsva","hex3","hex6","hex4","hex8","trim","named","match","exec","Boolean","legacyRandom","fromRatio","index_1","newColor","TinyColor","random","format_input_1","isDark","getBrightness","isLight","toRgb","getLuminance","RsRGB","GsRGB","BsRGB","R","pow","G","B","getAlpha","setAlpha","roundA","isMonochrome","toHsl","toHsvString","toHslString","toHexString","toHex8","toHex8String","toHexShortString","allowShortChar","toRgbString","toPercentageRgb","fmt","toPercentageRgbString","rnd","toName","formatSet","formattedString","hasAlpha","toNumber","clone","lighten","clamp01","brighten","darken","tint","mix","shade","desaturate","saturate","greyscale","spin","analogous","results","slices","part","ret","complement","monochromatic","modification","splitcomplement","onBackground","background","fg","bg","triad","polyad","tetrad","increment","equals","originalInput","gradientType","isValid","m","k2","desc","getOwnPropertyDescriptor","writable","configurable","enumerable","__exportStar","default","bounds","getColorInfo","bounds_1","defineColor","hueRange","randomWithin","seed","sMin","lowerBounds","sMax","bMin","bMax","saturationRange","brightnessRange","totalColors","colors","colorInput","num","namedColor","find","parsed","luminosity","H","S","s1","v1","s2","v2","mostReadable","isReadable","readability","color1","color2","c1","c2","wcag2","level","readabilityLevel","baseColor","colorList","bestColor","bestScore","includeFallbackColors","colorList_1","score","toMsFilter","firstColor","secondColor","hex8String","secondHex8String","isOnePointZero","isPercentage","isPercent"],"mappings":"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","file":"ant-design-blazor.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","import { infoHelper as domInfoHelper } from '../modules/dom/infoHelper';\n\nexport class mutationObserver {\n  private static mutationObservers: Map<string, MutationObserver> = new Map<string, MutationObserver>();\n\n  static create(key: string, invoker, isDotNetInvoker: boolean = true) {\n    let observer;\n\n    if (isDotNetInvoker) {\n      observer = new MutationObserver(mutations => mutationObserver.observerCallback(mutations, invoker))\n    } else {\n      observer = new MutationObserver(mutations => invoker(mutations))\n    }\n    mutationObserver.mutationObservers.set(key, observer)\n  }\n\n  static observe(key: string, element, options?: MutationObserverInit) {\n    const observer = mutationObserver.mutationObservers.get(key);\n    if (observer) {\n      const domElement = domInfoHelper.get(element);\n      observer.observe(domElement, options);\n    }\n  }\n\n  static disconnect(key: string): void {\n    const observer = this.mutationObservers.get(key)\n    if (observer) {\n      observer.disconnect()\n    }\n  }\n\n  static dispose(key: string): void {\n    this.disconnect(key)\n    this.mutationObservers.delete(key)\n  }\n\n  private static observerCallback(mutations, invoker) {\n    //TODO: serialize a proper object (check resizeObserver.ts for sample)\n    const entriesJson = JSON.stringify(mutations)\n    invoker.invokeMethodAsync('Invoke', entriesJson)\n  }\n}","export { resizeObserver as resize } from './resizeObserver';\nexport { mutationObserver } from './mutationObserver';","import { infoHelper as domInfoHelper} from '../modules/dom/infoHelper';\nimport { boxSize, domRect } from '../modules/dom/types';\n\nclass ResizeObserverEntry {\n  borderBoxSize?: boxSize\n  contentBoxSize?: boxSize\n  contentRect?: domRect\n  target?: Element\n}\n\nexport class resizeObserver {\n\n  static isResizeObserverSupported(): boolean {\n    return \"ResizeObserver\" in window;\n  }\n\n  private static resizeObservers: Map<string, ResizeObserver> = new Map<string, ResizeObserver>();\n\n  static create(key, invoker, isDotNetInvoker: boolean = true ) {\n    let observer;\n        \n    if (isDotNetInvoker) {\n      observer = new ResizeObserver((entries, observer) => resizeObserver.observerCallBack(entries, observer, invoker));\n    } else {\n      observer = new ResizeObserver((entries, observer) => invoker(entries, observer));\n    }\n    resizeObserver.resizeObservers.set(key, observer)\n  }\n\n  static observe(key: string, element) {\n    const observer = resizeObserver.resizeObservers.get(key);\n    if (observer) {\n      const domElement = domInfoHelper.get(element);\n      observer.observe(domElement);\n    }\n  }\n\n  static disconnect(key: string): void {\n    const observer = this.resizeObservers.get(key)\n    if (observer) {\n      observer.disconnect()\n    }\n  }\n\n  static unobserve(key: string, element: Element): void {\n    const observer = this.resizeObservers.get(key)\n\n    if (observer) {\n      const domElement = domInfoHelper.get(element);\n      observer.unobserve(domElement)\n    }\n  }\n\n  static dispose(key: string): void {\n    this.disconnect(key)\n    this.resizeObservers.delete(key)\n  }\n\n  private static observerCallBack(entries, observer, invoker) {\n    if (invoker) {\n      const mappedEntries = new Array<ResizeObserverEntry>()\n      entries.forEach(entry => {        \n        if (entry) {\n          const mEntry = new ResizeObserverEntry()\n          if (entry.borderBoxSize) {\n            mEntry.borderBoxSize = {\n              blockSize: entry.borderBoxSize.blockSize,\n              inlineSize: entry.borderBoxSize.inlineSize\n            }\n          }\n\n          if (entry.contentBoxSize) {\n            mEntry.contentBoxSize = {\n              blockSize: entry.contentBoxSize.blockSize,\n              inlineSize: entry.contentBoxSize.inlineSize\n            }\n          }\n\n          if (entry.contentRect) {\n            mEntry.contentRect = {\n              x: entry.contentRect.x,\n              y: entry.contentRect.y,\n              width: entry.contentRect.width,\n              height: entry.contentRect.height,\n              top: entry.contentRect.top,\n              right: entry.contentRect.right,\n              bottom: entry.contentRect.bottom,\n              left: entry.contentRect.left\n            }\n\n          }\n\n          //mEntry.target = entry.target\n          mappedEntries.push(mEntry)\n        }\n      })\n\n      const entriesJson = JSON.stringify(mappedEntries)\n      invoker.invokeMethodAsync('Invoke', entriesJson)\n    }\n  }\n\n}","export { state } from './modules/stateProvider';\nexport * as observable from './ObservableApi/observableApi';\nexport { domInfoHelper, domTypes, domManipulationHelper, eventHelper } from './modules/dom/exports';\nexport { styleHelper } from './modules/styleHelper';\nexport {\n  backtopHelper,\n  iconHelper,\n  imageHelper,\n  inputHelper,\n  mentionsHelper,\n  modalHelper,\n  overlayHelper,\n  tableHelper,\n  uploadHelper,\n  downloadHelper,\n  watermarkHelper,\n} from './modules/components/export'\n\n\nexport { enableDraggable, disableDraggable, resetModalPosition } from \"./modules/dom/dragHelper\";\n\nexport { generate as generateColor } from \"@ant-design/colors\";\n\nexport function log(text) {\n  console.log(text);\n}\n","import { domInfoHelper, domManipulationHelper } from '../dom/exports'\n\nexport class backtopHelper {\n  static backTop(target: string) {\n    const dom = domInfoHelper.get(target);\n    if (dom) {\n      domManipulationHelper.slideTo(dom.scrollTop||0);\n    } else {\n      domManipulationHelper.slideTo(0);\n    }\n  }\n}","export class downloadHelper {\n  static triggerFileDownload(fileName, url) {\n    const anchorElement = document.createElement('a');\n    anchorElement.href = url;\n    anchorElement.download = fileName ?? '';\n    anchorElement.click();\n    anchorElement.remove();\n  }\n}","export { backtopHelper } from './backtopHelper';\nexport { overlayHelper } from './overlayHelper';\nexport { uploadHelper } from './uploadHelper';\nexport { downloadHelper } from './downloadHelper';\nexport { mentionsHelper } from './mentionsHelper';\nexport { modalHelper } from './modalHelper';\nexport { inputHelper } from './inputHelper';\nexport { tableHelper } from './tableHelper';\nexport { iconHelper } from './iconHelper';\nexport { imageHelper } from './imageHelper';\nexport { watermarkHelper } from './watermarkHelper';","export class iconHelper {\n  static createIconFromfontCN(scriptUrl) {\n    if (document.querySelector(`[data-namespace=\"${scriptUrl}\"]`)) {\n      return;\n    }\n    const script = document.createElement(\"script\");\n    script.setAttribute(\"src\", scriptUrl);\n    script.setAttribute(\"data-namespace\", scriptUrl);\n    document.body.appendChild(script);\n  }\n}\n","export class imageHelper {\n  static imgDragAndDrop(element: HTMLImageElement): void {\n    if (!element) {\n      throw new Error('Element not found.');\n    }\n\n    let mouseX: number, mouseY: number, imgX: number, imgY: number;\n    let isDragging = false;\n\n    function handleMouseDown(event: MouseEvent) {\n      mouseX = event.clientX;\n      mouseY = event.clientY;\n      imgX = element.offsetLeft;\n      imgY = element.offsetTop;\n      isDragging = true;\n\n      element.style.cursor = 'grabbing';\n\n      document.addEventListener('mousemove', handleMouseMove);\n      document.addEventListener('mouseup', handleMouseUp);\n    }\n\n    function handleMouseMove(event: MouseEvent) {\n      if (isDragging) {\n        const deltaX = event.clientX - mouseX;\n        const deltaY = event.clientY - mouseY;\n\n        element.style.left = imgX + deltaX + 'px';\n        element.style.top = imgY + deltaY + 'px';\n      }\n    }\n\n    function handleMouseUp() {\n      if (isDragging) {\n        isDragging = false;\n        element.style.cursor = 'grab';\n\n        document.removeEventListener('mousemove', handleMouseMove);\n        document.removeEventListener('mouseup', handleMouseUp);\n      }\n    }\n\n    element.addEventListener('mousedown', handleMouseDown);\n\n    element.addEventListener('dragstart', (event: DragEvent) => {\n      event.preventDefault();\n    });\n\n        // Handle mouse leaving window\n    window.addEventListener('mouseout', (event: MouseEvent) => {\n      if (event.target === document.body || event.target === document.documentElement) {\n        handleMouseUp();\n      }\n    });\n  }\n}\n","import { domInfoHelper } from '../dom/exports'\nimport { state } from '../stateProvider';\nimport { resize } from '../../ObservableApi/observableApi';\n\nexport class inputHelper {\n\n  static getTextAreaInfo(element) {\n    if (!element) return null;\n    const result = {};\n    const dom = domInfoHelper.get(element);\n    if (!dom) return null;\n    result[\"scrollHeight\"] = dom.scrollHeight || 0;\n\n    if (element.currentStyle) {\n      result[\"lineHeight\"] = parseFloat(element.currentStyle[\"line-height\"]);\n      result[\"paddingTop\"] = parseFloat(element.currentStyle[\"padding-top\"]);\n      result[\"paddingBottom\"] = parseFloat(element.currentStyle[\"padding-bottom\"]);\n      result[\"borderBottom\"] = parseFloat(element.currentStyle[\"border-bottom\"]);\n      result[\"borderTop\"] = parseFloat(element.currentStyle[\"border-top\"]);\n    }\n    else if (window.getComputedStyle) {\n      result[\"lineHeight\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"line-height\"));\n      result[\"paddingTop\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"padding-top\"));\n      result[\"paddingBottom\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"padding-bottom\"));\n      result[\"borderBottom\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"border-bottom\"));\n      result[\"borderTop\"] = parseFloat(document.defaultView.getComputedStyle(element, null).getPropertyValue(\"border-top\"));\n    }\n    //Firefox can return this as NaN, so it has to be handled here like that.\n    if (Object.is(NaN, result[\"borderTop\"]))\n      result[\"borderTop\"] = 1;\n    if (Object.is(NaN, result[\"borderBottom\"]))\n      result[\"borderBottom\"] = 1;\n    return result;\n  }\n\n  static registerResizeTextArea(element: HTMLTextAreaElement, minRows: number, maxRows: number, objReference) {\n    if (!objReference) {\n      this.disposeResizeTextArea(element);\n    }\n    else {\n      state.objReferenceDict[element.id] = objReference;\n      state.eventCallbackRegistry[element.id + \"input\"] = function () { inputHelper.resizeTextArea(element, minRows, maxRows); }\n      element.addEventListener(\"input\", state.eventCallbackRegistry[element.id + \"input\"]);\n      resize.create(element.id + \"-resize\", () => {\n        inputHelper.resizeTextArea(element, minRows, maxRows);\n      }, false);\n      resize.observe(element.id + \"-resize\", element);\n      inputHelper.resizeTextArea(element, minRows, maxRows);\n      element.style.resize = 'none';\n      return this.getTextAreaInfo(element);\n    }\n  }\n\n  static disposeResizeTextArea(element: HTMLTextAreaElement) {\n    element.removeEventListener(\"input\", state.eventCallbackRegistry[element.id + \"input\"]);\n    resize.unobserve(element.id + \"-resize\", element);\n    state.objReferenceDict[element.id] = null;\n    state.eventCallbackRegistry[element.id + \"input\"] = null;\n  }\n\n  static resizeTextArea(element: HTMLTextAreaElement, minRows: number, maxRows: number) {\n    const dims = this.getTextAreaInfo(element);\n    if (!dims) return;\n\n    const rowHeight = dims[\"lineHeight\"];\n    const offsetHeight = dims[\"paddingTop\"] + dims[\"paddingBottom\"] + dims[\"borderTop\"] + dims[\"borderBottom\"];\n    const oldHeight = parseFloat(element.style.height);\n    //use rows attribute to evaluate real scroll height\n    const oldRows = element.rows;\n    element.rows = minRows;\n    element.style.height = 'auto';    \n    \n    let rows = Math.trunc(element.scrollHeight / rowHeight);\n    element.rows = oldRows;\n    rows = Math.max(minRows, rows);\n    let newHeight = 0;\n    if (rows > maxRows) {\n      rows = maxRows;\n\n      newHeight = (rows * rowHeight + offsetHeight);\n      element.style.height = newHeight + \"px\";\n      element.style.overflowY = \"visible\";\n    }\n    else {\n      newHeight = rows * rowHeight + offsetHeight;\n      element.style.height = newHeight + \"px\";\n      element.style.overflowY = \"hidden\";\n    }\n    if (oldHeight !== newHeight) {\n      const textAreaObj = state.objReferenceDict[element.id];\n      textAreaObj.invokeMethodAsync(\"ChangeSizeAsyncJs\", element.scrollWidth, newHeight);\n    }\n  }\n\n  static setSelectionStart(element, position: number) {\n    if (position >= 0) {\n      const dom: HTMLInputElement = domInfoHelper.get(element);\n      if (dom) {\n        if (position <= dom.value.length) {\n          dom.selectionStart = position;\n          dom.selectionEnd = position;\n        }\n      }\n    }\n  }\n\n}","export class mentionsHelper {\n\n  private static isPopShowFlag: boolean;\n\n  public static setPopShowFlag = function (show: boolean): void {\n    mentionsHelper.isPopShowFlag = show;\n  }\n\n  public static setEditorKeyHandler = function (Mentions: any, element: HTMLTextAreaElement): void {\n\n    const textArea = mentionsHelper.getTextarea(element);\n    textArea.onkeydown = async (ev): Promise<any> => {\n            //判断isPopShow不能用异步方法\n      if (!mentionsHelper.isPopShowFlag) return;\n      if (ev.key == \"ArrowUp\") {\n        ev.preventDefault();\n        await Mentions.invokeMethodAsync(\"PrevOption\");\n      } else if (ev.key == \"ArrowDown\") {\n        ev.preventDefault();\n        await Mentions.invokeMethodAsync(\"NextOption\");\n      }\n      else if (ev.key == \"Enter\") {\n        ev.preventDefault();\n        await Mentions.invokeMethodAsync(\"EnterOption\");\n      }\n            //其他按键在c#中处理\n    }\n  }\n\n  public static getProp = function (e: HTMLElement, propName: string): any {\n    const textArea = mentionsHelper.getTextarea(e);\n\n    return textArea[propName];\n  }\n\n  public static getCursorXY = function (element: HTMLElement) {\n    const textArea = mentionsHelper.getTextarea(element);\n    const format = function (value) {\n      value = value.replace(/<|>|`|\"|&/g, '?');\n      return value;\n    };\n    const inputorValue = textArea.value;\n    const pos = textArea.selectionStart;\n    let start_range = inputorValue.slice(0, pos);\n    if (start_range.length > 0) start_range = start_range.substring(0, start_range.length - 1);\n    const end_range = inputorValue.slice(pos);\n    let html = format(start_range);\n    html += \"<span>@</span>\";\n    html += format(end_range);\n\n    const div_mirror = document.createElement(\"div\");\n    div_mirror.className = \"ant-mentions-measure\"\n    div_mirror.innerHTML = html;\n    textArea.parentNode.append(div_mirror);\n\n    const flag: HTMLSpanElement = div_mirror.querySelector(\"span\");\n        //  let flagPos = flag.getBoundingClientRect();\n        //  let textAreaPos = textArea.getBoundingClientRect();\n        //  let bodyPos = document.body.getBoundingClientRect();\n    const left = flag.offsetLeft - textArea.scrollLeft + 16;\n    const top = flag.offsetTop - textArea.scrollTop + 16;\n\n    div_mirror.remove();\n    return [left, top];\n  };\n\n  private static getTextarea(element: HTMLElement) {\n    const textAreaTag = \"TEXTAREA\";\n    let textarea = element;\n    if (element.tagName != textAreaTag) {\n      const allTextareas = element.getElementsByTagName(textAreaTag);\n      if (allTextareas.length == 0) {\n        throw \"Mentions requires a textarea to be rendered, but none were found.\";\n      }\n      textarea = allTextareas[0] as HTMLTextAreaElement;\n    }\n\n    return textarea as HTMLTextAreaElement;\n  }\n}\n","import { domInfoHelper } from '../dom/exports'\nimport { manipulationHelper } from '../dom/manipulationHelper'\n\nexport class modalHelper {\n  static focusDialog(selector: string, count: number = 0) {\n    const ele = <HTMLElement>document.querySelector(selector);\n    if (ele) {\n      if (ele.hasAttribute(\"disabled\")) {\n        const htmlElement = <HTMLElement>document.activeElement;\n        htmlElement?.blur();\n      } else {\n        setTimeout(() => {\n          ele.focus();\n          const curId = \"#\" + domInfoHelper.getActiveElement();\n          if (curId !== selector) {\n            if (count < 10) {\n              this.focusDialog(selector, count + 1);\n            }\n          }\n        }, 10);\n      }\n    }\n  }\n\n  static destroyAllDialog() {\n    document.querySelectorAll(\".ant-modal-root\").forEach((e) => {\n      const container = e.parentNode;\n      if (container instanceof HTMLElement) {\n        container.remove();\n      }\n    });\n    manipulationHelper.enableBodyScroll(true);\n  }\n}","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { domInfoHelper, domTypes } from '../dom/exports'\nimport { resize } from '../../ObservableApi/observableApi';\nimport { mutationObserver as mutation } from '../../ObservableApi/mutationObserver';\n\n//Make sure the enum is identical as C# AntDesign.Placement enum\nexport enum Placement {\n  TopLeft       = 0,\n  Top           = 2,\n  TopRight      = 3,\n  Left          = 4,\n  LeftTop       = 5,\n  LeftBottom    = 6,\n  Right         = 7,\n  RightTop      = 8,\n  RightBottom   = 9,\n  BottomLeft    = 10,\n  Bottom        = 12,\n  BottomRight   = 13\n}\n\n//Make sure the enum is identical as C# AntDesign.TriggerBoundyAdjustMode enum\nexport enum TriggerBoundyAdjustMode {\n  None     = 0,\n  InView   = 1,\n  InScroll = 2\n}\n\ntype verticalPosition = {\n  top?: number,\n  bottom?: number\n}\n\ntype horizontalPosition = {\n  left?: number,\n  right?: number\n}\n\nexport type overlayConstraints = {\n  verticalOffset: number,\n  horizontalOffset: number,\n  arrowPointAtCenter: boolean\n}\nexport type coordinates = {\n  top?: number,\n  bottom?: number,\n  left?: number,\n  right?: number\n}\n\n\nexport type overlayPosition = {\n  top?: number,\n  bottom?: number,\n  left?: number,\n  right?: number,\n  zIndex: number,\n  placement?: Placement,\n}\n\nexport class Overlay {\n  private static appliedStylePositionMap: Map<Placement,\n        { horizontal: \"left\" | \"right\", vertical: \"top\" | \"bottom\", class: string }> =\n      new Map([\n        [Placement.TopLeft,       { horizontal: \"left\", vertical: \"bottom\", class: \"topLeft\"  }],\n        [Placement.Top,           { horizontal: \"left\", vertical: \"bottom\", class: \"top\" }],\n        [Placement.TopRight,      { horizontal: \"right\", vertical: \"bottom\", class: \"topRight\" }],\n        [Placement.Left,          { horizontal: \"right\", vertical: \"top\", class: \"left\" }],\n        [Placement.LeftTop,       { horizontal: \"right\", vertical: \"top\", class: \"leftTop\" }],\n        [Placement.LeftBottom,    { horizontal: \"right\", vertical: \"bottom\", class: \"leftBottom\" }],\n        [Placement.Right,         { horizontal: \"left\", vertical: \"top\", class: \"right\" }],\n        [Placement.RightTop,      { horizontal: \"left\", vertical: \"top\", class: \"rightTop\" }],\n        [Placement.RightBottom,   { horizontal: \"left\", vertical: \"bottom\", class: \"rightBottom\" }],\n        [Placement.BottomLeft,    { horizontal: \"left\", vertical: \"top\", class: \"bottomLeft\" }],\n        [Placement.Bottom,        { horizontal: \"left\", vertical: \"top\", class: \"bottom\" }],\n        [Placement.BottomRight,   { horizontal: \"right\", vertical: \"top\", class: \"bottomRight\" }],\n      ]);\n\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  private static reverseVerticalPlacementMap: Map<Placement, Function> =\n    new Map([\n      [Placement.TopLeft,       (position: string) => Placement.BottomLeft],\n      [Placement.Top,           (position: string) => Placement.Bottom],\n      [Placement.TopRight,      (position: string) => Placement.BottomRight],\n      [Placement.Left,          (position: string) => position === \"top\" ? Placement.LeftBottom : Placement.LeftTop],\n      [Placement.LeftTop,       (position: string) => Placement.LeftBottom],\n      [Placement.LeftBottom,    (position: string) => Placement.LeftTop],\n      [Placement.Right,         (position: string) => position === \"top\" ? Placement.RightBottom : Placement.RightTop],\n      [Placement.RightTop,      (position: string) => Placement.RightBottom],\n      [Placement.RightBottom,   (position: string) => Placement.RightTop],\n      [Placement.BottomLeft,    (position: string) => Placement.TopLeft],\n      [Placement.Bottom,        (position: string) => Placement.Top],\n      [Placement.BottomRight,   (position: string) => Placement.TopRight]\n    ]);\n    \n  // eslint-disable-next-line @typescript-eslint/ban-types\n  private static reverseHorizontalPlacementMap: Map<Placement, Function> =\n    new Map([\n      [Placement.TopLeft,       (position: string) => Placement.TopRight],\n      [Placement.Top,     (position: string) => position === \"left\" ? Placement.TopRight : Placement.TopLeft],\n      [Placement.TopRight,      (position: string) => Placement.TopLeft],\n      [Placement.Left,          (position: string) => Placement.Right],\n      [Placement.LeftTop,       (position: string) => Placement.RightTop],\n      [Placement.LeftBottom,    (position: string) => Placement.RightBottom],\n      [Placement.Right,         (position: string) => Placement.Left],\n      [Placement.RightTop,      (position: string) => Placement.LeftBottom],\n      [Placement.RightBottom,   (position: string) => Placement.LeftTop],\n      [Placement.BottomLeft,    (position: string) => Placement.BottomRight],\n      [Placement.Bottom,        (position: string) => position === \"left\" ? Placement.BottomRight : Placement.BottomLeft],\n      [Placement.BottomRight,   (position: string) => Placement.BottomLeft]\n    ]);    \n    \n  private static arrowCenterPlacementMatch: Map<Placement, Placement> =\n    new Map([\n      [Placement.TopLeft,       Placement.Top],\n      [Placement.Top,           Placement.Top],\n      [Placement.TopRight,      Placement.Top],\n      [Placement.Left,          Placement.Left],\n      [Placement.LeftTop,       Placement.Left],\n      [Placement.LeftBottom,    Placement.Left],\n      [Placement.Right,         Placement.Right],\n      [Placement.RightTop,      Placement.Right],\n      [Placement.RightBottom,   Placement.Right],\n      [Placement.BottomLeft,    Placement.Bottom],\n      [Placement.Bottom,        Placement.Bottom],\n      [Placement.BottomRight,   Placement.Bottom]\n    ]);   \n    \n  private blazorId: string;\n  public overlay: HTMLDivElement;\n  private container: HTMLElement;\n  private trigger: HTMLElement;\n  private scrollableContainers: HTMLElement[];\n\n  private overlayInfo: domTypes.domInfo;\n  private containerInfo: domTypes.domInfo;\n  private triggerInfo: domTypes.domInfo;\n  \n  private containerBoundarySize: coordinates;\n  private bodyBoundarySize: coordinates;\n  \n  private placement: Placement;\n  private recentPlacement: Placement;\n  private initialPlacement?: Placement;\n\n  private triggerPrefixCls: string; \n\n  private boundyAdjustMode: TriggerBoundyAdjustMode\n  public position: overlayPosition;\n  public sanitizedPosition: overlayPosition;\n  \n  private overlayPreset: domTypes.position;\n\n  private verticalCalculation:\n    (triggerPosition: number, triggerHeight: number, container: domTypes.domInfo,\n    trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints)\n      => verticalPosition;\n\n  private horizontalCalculation:\n    (triggerPosition: number, triggerWidth: number, container: domTypes.domInfo,\n    trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints)\n        => horizontalPosition;\n\n  private overlayConstraints: overlayConstraints; \n  private duringInit = true;\n  private selectedVerticalPosition: \"top\" | \"bottom\";\n  private selectedHorizontalPosition: \"left\" | \"right\";\n  private calculationsToPerform: Set<\"horizontal\"|\"vertical\">;\n\n  private triggerPosition: coordinates & { absoluteTop?: number, absoluteLeft?: number, height?: number, width?: number } = { };  \n\n  private isContainerBody: boolean;\n  private isContainerOverBody = false;\n  private isTriggerFixed: boolean; //refers to trigger or any of its parent having \"position:fixed\"\n  private lastScrollPosition: number; //used only if isTriggerFixed === true\n\n  private scrollbarSize: {\n    horizontalHeight: number,\n    verticalWidth: number\n  }  \n\n  constructor(blazorId: string,\n    overlay: HTMLDivElement, container: HTMLElement, trigger: HTMLElement, placement: Placement, \n    triggerBoundyAdjustMode: TriggerBoundyAdjustMode, triggerIsWrappedInDiv: boolean, triggerPrefixCls: string,\n    overlayConstraints: overlayConstraints) {\n    this.blazorId = blazorId;\n    this.overlay = overlay;  \n    //containerInfo & scrollbars have to be obtained here, because after\n    //removal of classes, the overlay goes to left: -9999 what causes artificial \n    //scrollbars and viewport dimensions are changing\n    this.containerInfo = domInfoHelper.getInfo(container);\n    this.container = container;\n    this.isContainerBody = container === document.body;\n    this.calculateScrollBarSizes()\n    if (!this.isContainerBody) {\n      this.isContainerOverBody = domInfoHelper.findAncestorWithZIndex(this.container) > 0;\n    }\n\n    this.overlay.style.cssText = this.overlay.style.cssText.replace(\"display: none;\", \"\");\n    this.overlay.style.top = \"0px\"; //reset to prevent scrollbars if do not exist\n    this.removeHiddenClass()\n\n    //The trigger is actually wrapping div, which can have its own dimensions (coming from styles).\n    //So, first valid HTML element is picked and if there is none, the wrapping div is set as trigger.\n    //Triggers are always wrapped in div if the <ChildElement> instead of <Unbound> is used.\n    this.trigger = Overlay.getFirstValidChild(trigger, triggerIsWrappedInDiv);\n    this.triggerPrefixCls = triggerPrefixCls;\n    if (overlayConstraints.arrowPointAtCenter){      \n      this.placement = Overlay.arrowCenterPlacementMatch.get(placement);\n    } else {\n      this.placement = placement;\n    }\n    this.initialPlacement = this.placement;\n    this.boundyAdjustMode = triggerBoundyAdjustMode;    \n    this.overlayConstraints = overlayConstraints;\n\n    this.position = { zIndex: 0 };\n    this.selectedHorizontalPosition = Overlay.appliedStylePositionMap.get(this.placement).horizontal;\n    this.selectedVerticalPosition = Overlay.appliedStylePositionMap.get(this.placement).vertical;\n\n    this.verticalCalculation = Overlay.setVerticalCalculation(this.placement, this.selectedVerticalPosition);\n    this.horizontalCalculation = Overlay.setHorizontalCalculation(this.placement, this.selectedHorizontalPosition);\n    this.isTriggerFixed = domInfoHelper.isFixedPosition(this.trigger);\n    this.scrollableContainers = domInfoHelper.getScrollableParents(this.trigger);\n\n    this.observe();\n  }\n\n  static getFirstValidChild(element: HTMLElement, triggerIsWrappedInDiv: boolean): HTMLElement {\n    if (triggerIsWrappedInDiv)\n    {      \n      for(let i = 0; i < element.childNodes.length; i++) {\n        const childElement = element.childNodes[i] as HTMLElement;\n        if (childElement.innerHTML)\n          return childElement;\n      }\n    }\n    return element\n  }\n\n  static setVerticalCalculation(placement: Placement, position: \"top\" | \"bottom\") {\n    if (position === \"top\") {\n      switch (placement) {\n        case Placement.LeftTop:\n        case Placement.RightTop:          \n          return function(triggerTop: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) {               \n            return { \n              top: triggerTop,\n              bottom: Overlay.reversePositionValue(triggerTop, container.scrollHeight, overlayHeight) \n            };              \n          }; \n        case Placement.BottomLeft:\n        case Placement.Bottom:\n        case Placement.BottomRight:\n          return function(triggerTop: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) { \n            const position: verticalPosition = {\n              top: triggerTop + triggerHeight + constraints.verticalOffset,\n            };\n            position.bottom = Overlay.reversePositionValue(position.top, container.scrollHeight, overlayHeight)\n            return position;\n          }; \n        case Placement.Left:\n        case Placement.Right:\n          return function(triggerTop: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) {     \n            const position: verticalPosition = { \n              top: triggerTop + (triggerHeight / 2) - (overlayHeight / 2)\n            };\n            position.bottom = Overlay.reversePositionValue(position.top, container.scrollHeight, overlayHeight)\n            return position;\n          }; \n      }\n    }    \n    if (position === \"bottom\") {\n      switch (placement) {\n        case Placement.TopLeft:\n        case Placement.Top:\n        case Placement.TopRight:\n          return function(triggerBottom: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) { \n            const position: verticalPosition = { \n              bottom: triggerBottom + triggerHeight + constraints.verticalOffset,\n            };\n            position.top = Overlay.reversePositionValue(position.bottom, container.scrollHeight, overlayHeight);\n            return position;\n          };           \n        case Placement.LeftBottom:\n        case Placement.RightBottom:\n          return function(triggerBottom: number, triggerHeight: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayHeight: number, constraints: overlayConstraints) {  \n            const position: verticalPosition = { \n              bottom: triggerBottom,\n              top: Overlay.reversePositionValue(triggerBottom, container.scrollHeight, overlayHeight)\n            };            \n            return position;                               \n          };   \n      }\n    }\n    //fallback - should not happen, but to avoid crashing scenarios, revert to BottomLeft\n    console.log(\"Error: setVerticalCalculation did not match, nothing selected!!! Fallback.\", placement, position);\n    return Overlay.setVerticalCalculation(Placement.BottomLeft, \"top\");\n  }\n\n  static setHorizontalCalculation(placement: Placement, position: \"left\" | \"right\") {\n    if (position === \"left\") {\n      switch (placement) {\n        case Placement.TopLeft:\n        case Placement.BottomLeft:\n          return function(triggerLeft: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {        \n            return { \n              left: triggerLeft,\n              right: Overlay.reversePositionValue(triggerLeft, container.scrollWidth, overlayWidth)\n            };              \n          }; \n        case Placement.Right:\n        case Placement.RightTop:\n        case Placement.RightBottom:\n          return function(triggerLeft: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {        \n            const position: horizontalPosition = {\n              left: triggerLeft + triggerWidth + constraints.horizontalOffset\n            };\n            position.right = Overlay.reversePositionValue(position.left, container.scrollWidth, overlayWidth)\n            return position;\n          };\n\n        case Placement.Top:\n        case Placement.Bottom:\n          return function(triggerLeft: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {        \n            const position: horizontalPosition = {\n              left: triggerLeft + (triggerWidth / 2) - (overlayWidth / 2)\n            };\n            position.right = Overlay.reversePositionValue(position.left, container.scrollWidth, overlayWidth)\n            return position;\n          };\n      }\n    }\n    if (position === \"right\") {\n      switch (placement) {\n        case Placement.TopRight:\n        case Placement.BottomRight:\n          return function(triggerRight: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {        \n            const position: horizontalPosition = {\n              right: triggerRight,\n              left: Overlay.reversePositionValue(triggerRight, container.scrollWidth, overlayWidth)\n            };            \n            return position;\n          };\n        case Placement.Left:\n        case Placement.LeftTop:\n        case Placement.LeftBottom:\n          return function(triggerRight: number, triggerWidth: number, container: domTypes.domInfo, trigger: domTypes.domInfo, overlayWidth: number, constraints: overlayConstraints) {\n            const position: horizontalPosition = {\n              right: triggerRight + triggerWidth + constraints.horizontalOffset\n            };\n            position.left = Overlay.reversePositionValue(position.right, container.scrollWidth, overlayWidth)\n            return position;\n          };          \n      }      \n    }\n    //fallback - should not happen, but to avoid crashing scenarios, revert to BottomLeft\n    console.log(\"Error: setHorizontalCalculation did not match, nothing selected!!! Fallback.\", placement, position);\n    return Overlay.setVerticalCalculation(Placement.BottomLeft, \"top\");    \n  }\n\n  /**\n   * Calculates reversed position. So for given left will return right,\n   * for top => bottom, etc.\n   * @param the value that needs to be reversed (left in scenario: left => right)\n   * @param for horizontal (left, right) container width & for vertical (top, bottom) container height\n   * @param for horizontal (left, right) overlay width & for vertical (top, bottom) overlay height\n   * @returns number\n   */\n  static reversePositionValue(position: number, containerDimension: number, overlayDimension: number) {    \n    return containerDimension - position - overlayDimension;\n  }\n\n  private removeHiddenClass() {    \n    const end = this.overlay.className.indexOf(\"-hidden\");\n    const start = this.overlay.className.lastIndexOf(\" \", end)\n    if (start >= 0) {\n      const className = this.overlay.className.substr(start + 1, end);\n      if (className !== \"\") {\n        this.overlay.classList.remove(className);\n      }\n    }\n  }\n\n  private calculateScrollBarSizes() {\n    if (this.isContainerBody) {\n      this.scrollbarSize = { \n        horizontalHeight: window.innerHeight - document.documentElement.clientHeight,\n        verticalWidth: window.innerWidth - document.documentElement.clientWidth\n      }\n    } \n    else {\n      this.scrollbarSize = { \n        horizontalHeight: this.container.offsetHeight - this.container.clientHeight, \n        verticalWidth: this.container.offsetWidth - this.container.clientWidth \n      }\n    }\n  }\n\n  private observe() {\n    resize.create(`container-${this.blazorId}`, this.resizing.bind(this), false);\n    resize.observe(`container-${this.blazorId}`, this.container);    \n    resize.observe(`container-${this.blazorId}`, this.trigger);    \n    mutation.create(`trigger-${this.blazorId}`, this.mutating.bind(this), false);\n    mutation.observe(`trigger-${this.blazorId}`, this.trigger, {\n      attributes: true,\n      characterData: false,\n      childList: false,\n      subtree: false,\n      attributeOldValue: false,\n      characterDataOldValue: false\n    });\n    \n    if (this.isContainerBody) {\n      window.addEventListener(\"scroll\", this.onScroll.bind(this));\n    }\n    else {\n      this.container.addEventListener(\"scroll\", this.onScroll.bind(this));\n    }\n\n    // for sometime the trigger would be scrolled by any parent contaniners but not body or the popup container.\n    this.scrollableContainers.forEach(container => {\n      container.addEventListener('scroll', this.onScroll.bind(this));\n    });\n  }  \n\n  private onScroll() {\n    if (this.isTriggerFixed && this.scrollableContainers.length==0) {\n      if (this.lastScrollPosition !== window.pageYOffset) {\n        const diff = window.pageYOffset - this.lastScrollPosition; //positive -> down, negative -> up        \n        this.position.top += diff;\n        this.position.bottom = Overlay.reversePositionValue(this.position.top, this.containerInfo.scrollHeight, this.overlayInfo.clientHeight);      \n        if (this.selectedVerticalPosition === \"top\") {        \n          this.sanitizedPosition.top = this.position.top;\n          this.overlay.style.top = this.sanitizedPosition.top + \"px\";        \n        } else {\n          this.sanitizedPosition.bottom = this.getAdjustedBottom();\n          this.overlay.style.bottom = this.sanitizedPosition.bottom + \"px\";\n        }\n        this.lastScrollPosition = window.pageYOffset;\n      }\n    } else {\n      //Commented out code is a non-optimized calculation only if overlay stops fitting during scroll\n      //It misses active check for initialPlacement being different to current placement\n      // this.getKeyElementDimensions(false);\n      // this.containerBoundarySize = this.getContainerBoundarySize();\n      // if (!this.overlayFitsContainer(\"horizontal\", this.position.left, this.position.right)\n      //   || !this.overlayFitsContainer(\"vertical\", this.position.top, this.position.bottom)) {    \n      //     this.calculatePosition(true, false, this.overlayPreset)\n      // }    \n      this.calculatePosition(true, false, this.overlayPreset);\n    }\n  }\n\n  private resizing(entries, observer) {\n    //prevents from recalculation right on the spot during constructor run\n    if (this.duringInit) { \n      this.duringInit = false;\n      return;\n    }\n    this.calculatePosition(true, false, this.overlayPreset);\n  }\n\n  private lastStyleMutation = \"\";\n\n  /**\n   * Mutation observer will fire whenever trigger style changes. This is first and foremost\n   * to monitor position/size changes, so overlay can adjust itself to the new position.\n   * @param mutations \n   * @returns \n   */\n  private mutating(mutations) {\n    if (this.duringInit) { \n      this.duringInit = false;\n      return;\n    }    \n    if (this.lastStyleMutation !== this.trigger.style.cssText) {\n      this.lastStyleMutation = this.trigger.style.cssText;\n      this.calculatePosition(true, false, this.overlayPreset);\n    }\n    \n  }\n\n  public dispose(): void {    \n    resize.dispose(`container-${this.blazorId}`);\n    mutation.dispose(`trigger-${this.blazorId}`);\n    if (this.container.contains(this.overlay)) {\n      this.container.removeChild(this.overlay);\n    }\n\n    if (this.isContainerBody) {      \n      window.removeEventListener(\"scroll\", this.onScroll);\n    }\n    else {\n      this.container.removeEventListener(\"scroll\", this.onScroll);\n    }\n\n    this.scrollableContainers.forEach(container => {\n      container.removeEventListener('scroll', this.onScroll);\n    });\n  }\n\n  public calculatePosition(applyLocation: boolean, firstTime = false, overlayPreset?: domTypes.position): overlayPosition {        \n    //check if hidden, if yes, no need to recalculate (only if not first time)\n    if (!firstTime && !this.overlay.offsetParent) {      \n      return;\n    }\n    //trigger no longer visible, hide\n    if (!overlayPreset && !this.trigger.offsetParent) {      \n      if (!this.overlay.classList.contains(this.triggerPrefixCls + \"-hidden\")) {\n        this.overlay.classList.add(this.triggerPrefixCls + \"-hidden\");\n      }\n      return this.position;\n    }\n    this.lastScrollPosition = window.pageYOffset;\n    this.recentPlacement = this.placement;\n    this.overlayPreset = overlayPreset;\n\n    this.getKeyElementDimensions(firstTime);\n\n    this.restoreInitialPlacement();\n\n    //add a very basic check - if overlay width exceeds container width, left defaults to 0     \n    this.calculationsToPerform = this.getNominalPositions();\n    if (this.calculationsToPerform.size > 0) {\n      this.adjustToContainerBoundaries();\n    }\n\n    this.sanitizeCalculatedPositions();    \n    //first positioning is applied by blazor - without it, a flicker is visible\n    if (applyLocation) {\n      this.applyLocation();\n    }    \n    return this.sanitizedPosition;\n  }\n\n  /**\n   * All variants of positions are stored during calculations, but only key positions are \n   * returned (so only left or right and only top or bottom).\n   * Also, bottom & right positions need to be recalculated, due to the fact that during \n   * calculations:\n   *  - bottom is represented as a value counting from top \n   *  - right is represented as a value counting from left\n   * Browsers use different reference for bottom & right.\n   */\n  private sanitizeCalculatedPositions() {\n    this.sanitizedPosition = { ...this.position};\n    this.sanitizedPosition.zIndex = domInfoHelper.getMaxZIndex();\n    this.sanitizedPosition.placement = this.placement;    \n    if (this.selectedHorizontalPosition === \"left\") {\n      this.sanitizedPosition.right = null;\n    }\n    else {\n      this.sanitizedPosition.left = null;\n      this.sanitizedPosition.right = this.getAdjustedRight();\n    }\n\n    if (this.selectedVerticalPosition === \"top\") {\n      this.sanitizedPosition.bottom = null;\n    }\n    else {\n      this.sanitizedPosition.top = null;\n      this.sanitizedPosition.bottom = this.getAdjustedBottom();\n    }\n  }\n\n  /**\n   * Gets first calculations of the overlay. For each direction, there is a single scenario\n   * when it is immediately known that no further calculation is needed:\n   * - for vertical direction - when overlay's height is larger than container vertical boundaries\n   * - for vertical direction - when overlay's width is larger than container horizontal boundaries\n   * These scenarios are ignored, when boundyAdjustMode === TriggerBoundyAdjustMode.None\n   * @returns collection containing directions that will be calculable (not final)\n   */\n  private getNominalPositions(): Set<\"horizontal\"|\"vertical\"> {\n    this.containerBoundarySize = this.getContainerBoundarySize();\n    const height = this.containerBoundarySize.bottom - this.containerBoundarySize.top;\n    const width = this.containerBoundarySize.right - this.containerBoundarySize.left;\n    const directionsToCalculate = new Set<\"horizontal\"|\"vertical\">();\n\n    if (this.boundyAdjustMode != TriggerBoundyAdjustMode.None && width < this.overlayInfo.clientWidth && this.isContainerBody) {\n      if (this.selectedHorizontalPosition === \"left\") {\n        this.position.left = 0;\n      } else {\n        this.position.right = 0;\n      }\n    } else {\n      const horizontalPosition = this.getHorizontalPosition();\n      this.position.left = horizontalPosition.left;\n      this.position.right = horizontalPosition.right;\n      directionsToCalculate.add(\"horizontal\");\n    }\n    //same for height exceeding container height - top defaults to 0   \n    if (this.boundyAdjustMode != TriggerBoundyAdjustMode.None && height < this.overlayInfo.clientHeight && this.isContainerBody) {      \n      if (this.selectedVerticalPosition === \"top\") {\n        this.position.top = 0;\n      } else {\n        this.position.bottom = 0;\n      }\n    } else {\n      \n      const verticalPosition = this.getVerticalPosition();\n      this.position.top = verticalPosition.top;\n      this.position.bottom = verticalPosition.bottom;      \n      directionsToCalculate.add(\"vertical\");\n    }\n    return directionsToCalculate;\n  }\n\n  /**\n   * Restore initial placement (and following connected variables & functions) on calculation.\n   * This never kicks in on first calculation. This is done because the overlay should always\n   * try to position itself to the initial placement. So on every recalculation initial settings\n   * (used during object creation) are reloaded.\n   */\n  private restoreInitialPlacement() {\n    if (this.placement !== this.initialPlacement) {\n      this.placement = this.initialPlacement;\n      this.selectedHorizontalPosition = Overlay.appliedStylePositionMap.get(this.placement).horizontal;\n      this.selectedVerticalPosition = Overlay.appliedStylePositionMap.get(this.placement).vertical;\n      this.verticalCalculation = Overlay.setVerticalCalculation(this.placement, this.selectedVerticalPosition);\n      this.horizontalCalculation = Overlay.setHorizontalCalculation(this.placement, this.selectedHorizontalPosition);\n    }\n  }\n\n  /**\n   * Very basic logging, useful during debugging.\n   * @param extraMessage \n   */\n  /* istanbul ignore next */\n  private logToConsole(extraMessage = \"\") {\n    console.log(extraMessage + \" Overlay position:\", this.position,\n      \"Input\",\n      { \n        blazorId: this.blazorId,        \n        container: {\n          info: this.containerInfo,\n          parentInfo: {\n            clientHeight: this.container.parentElement.clientHeight,\n            clientWidth: this.container.parentElement.clientWidth,\n            scrollLeft: this.container.parentElement.scrollLeft,\n            scrollTop: this.container.parentElement.scrollTop\n          },\n          containerId: this.container.id,        \n          containerBoundarySize: this.containerBoundarySize,\n        },\n        trigger: { \n          absoluteTop: this.triggerInfo.absoluteTop,\n          absoluteLeft: this.triggerInfo.absoluteLeft,\n          clientHeight: this.triggerInfo.clientHeight,\n          clientWidth: this.triggerInfo.clientWidth,\n          offsetHeight: this.triggerInfo.offsetHeight,\n          offsetWidth: this.triggerInfo.offsetWidth,\n          boundyAdjustMode: this.boundyAdjustMode,\n          //triggerType: this.triggerType,\n          triggerHtml: this.trigger.outerHTML,\n          triggerPrefixCls: this.triggerPrefixCls\n        },\n        overlay: { \n          clientHeight: this.overlayInfo.clientHeight,\n          clientWidth: this.overlayInfo.clientWidth,\n          offsetHeight: this.overlayInfo.offsetHeight,\n          offsetWidth: this.overlayInfo.offsetWidth,\n          class: this.overlay.className,\n          appliedCssPosition: {\n            overlay_style_top: this.overlay.style.top,\n            overlay_style_bottom: this.overlay.style.bottom,\n            overlay_style_left: this.overlay.style.left,\n            overlay_style_right: this.overlay.style.right\n          }\n        },\n        window: {\n          innerHeight: window.innerHeight,\n          innerWidth: window.innerWidth,\n          pageXOffset: window.pageXOffset,\n          pageYOffset: window.pageYOffset,\n        },        \n        documentElement: {\n          clientHeight: document.documentElement.clientHeight,\n          clientWidth: document.documentElement.clientWidth,\n          containerIsBody: this.isContainerBody,\n        },\n        scrollbars: this.scrollbarSize,\n        overlayPreset: this.overlayPreset,\n        overlayConstraints: this.overlayConstraints,\n        position: this.position,           \n        sanitizedPosition: this.sanitizedPosition,\n        placment: {\n          initialPlacement: this.initialPlacement,\n          recentPlacement: this.recentPlacement,\n          placement: this.placement,\n          selectedHorizontalPosition: this.selectedHorizontalPosition,\n          selectedVerticalPosition: this.selectedVerticalPosition\n        }\n      }\n    );    \n  }\n\n  /**\n   * Right in the class is calculated with assumption that it is just reversed Left. \n   * This works well for containers that are not body. When in body, then different Right \n   * calculation is executed. Example:\n   * In a document of width of 5000px, the first Left = 0 and the first Right = 0 as well \n   * (and respectively, max Left = 5000 and max Right = 5000). However, browsers are behaving \n   * differently. Left indeed is 0 until the document width (5000). Right however is different. \n   * Right = 0 means the point of original viewport most Right. So, if you viewport is 1000px \n   * wide, Right = 0 will mean same as Left = 1000. So to reach Left = 5000, Right has to \n   * be equal to -4000. \n   * @returns number - right position\n   */\n  private getAdjustedRight(): number {    \n    if (this.isContainerBody) {\n      return this.position.right - (this.containerInfo.scrollWidth - window.innerWidth)\n        - this.scrollbarSize.verticalWidth;\n    }\n    return this.position.right;    \n  }\n\n  /**\n   * Bottom in the class is calculated with assumption that it is just reversed Top. \n   * This works well for containers that are not body. When in body, then different Bottom\n   * calculation is executed. Example:\n   * In a document of height of 5000px, the first Top = 0 and the first Bottom = 0 as well \n   * (and respectively, max Top = 5000 and max Bottom = 5000). However, browsers are behaving \n   * differently. Top indeed is 0 until the document height (5000). Bottom however is different. \n   * Bottom = 0 means the point of original viewport most bottom. So, if you viewport is 1000px \n   * in height, Bottom = 0 will mean same as Top = 1000. So to reach Top = 5000, Bottom has to \n   * be equal to -4000. \n   * @returns number - bottom position\n   */\n  private getAdjustedBottom(): number {    \n    if (this.isContainerBody) {\n      return this.position.bottom - (this.containerInfo.scrollHeight - window.innerHeight)\n        - this.scrollbarSize.horizontalHeight;\n    }\n    return this.position.bottom;\n  }\n\n  private applyLocation() {\n    if (this.selectedHorizontalPosition === \"left\") {\n      this.overlay.style.left = this.sanitizedPosition.left + \"px\";\n      this.overlay.style.right = \"unset\";\n    } else {\n      this.overlay.style.right = this.sanitizedPosition.right + \"px\";\n      this.overlay.style.left = \"unset\";\n    }\n\n    if (this.selectedVerticalPosition === \"top\") {\n      this.overlay.style.top = this.sanitizedPosition.top + \"px\";\n      this.overlay.style.bottom = \"unset\";\n    } else {\n      this.overlay.style.bottom = this.sanitizedPosition.bottom + \"px\";\n      this.overlay.style.top = \"unset\";\n    }\n\n    this.applyPlacement();\n  }\n\n  private applyPlacement() {\n    if (this.recentPlacement !== this.placement) {\n      let currentPlacement: string;\n      const stringMach = `${this.triggerPrefixCls}-placement-`;\n      const start = this.overlay.className.indexOf(stringMach);\n      const end = this.overlay.className.indexOf(\" \", start + stringMach.length);\n      if (start >= 0) {\n        currentPlacement = this.overlay.className.substr(start, end-start);\n      } else {\n        currentPlacement = Overlay.appliedStylePositionMap.get(this.initialPlacement).class;\n      }\n      const newPlacement = stringMach + Overlay.appliedStylePositionMap.get(this.placement).class;\n      this.overlay.classList.replace(currentPlacement, newPlacement);\n    }\n  }\n\n  /**\n   * Loads all important dimensions of the key elements (container of the trigger, trigger & overlay)\n   * into domType.domInfo structures. This could be accessed directly, except absolute positions.\n   * Also simplifies mocking.\n   * @param firstTime - if this method is called first time, then no need to load information on\n   *  container, as it was already loaded in the constructor. This is due to the fact that first time,\n   *  when overlay is added it has default left set to -9999 which causes the scrollbars to \n   * appear (which will be gone by the time overlay becomes visible). Scrollbars change\n   *  dimensions, so often calculations were incorrect.\n   */\n  private getKeyElementDimensions(firstTime: boolean) {\n    if (!firstTime) {\n      this.containerInfo = domInfoHelper.getInfo(this.container);\n      this.calculateScrollBarSizes()\n    }    \n    this.triggerInfo = domInfoHelper.getInfo(this.trigger);\n    this.overlayInfo = domInfoHelper.getInfo(this.overlay);    \n  }\n\n  /**\n   * Calculates trigger top & bottom positions and trigger height and\n   * uses these to return nominal position values depending on placement and\n   * expected attachment point (top/bottom)\n   * @returns verticalPosition\n   */\n  private getVerticalPosition(): verticalPosition {\n    let position: verticalPosition;\n    //usually first offsetHeight is taken, as the measurement contains the borders\n    this.triggerPosition.height = this.triggerInfo.offsetHeight != 0 ? this.triggerInfo.offsetHeight \n      : this.triggerInfo.clientHeight;    \n    if (this.overlayPreset) {\n      this.triggerPosition.top = this.triggerInfo.absoluteTop + this.overlayPreset.y;\n      this.triggerPosition.height = 0;\n    } else {\n      this.triggerPosition.top = this.containerInfo.scrollTop + this.triggerInfo.absoluteTop\n        - this.containerInfo.absoluteTop - this.containerInfo.clientTop;\n    }\n    this.triggerPosition.absoluteTop = this.triggerInfo.absoluteTop;\n\n    if (this.selectedVerticalPosition === \"top\"){\n      position = this.verticalCalculation(this.triggerPosition.top, this.triggerPosition.height, this.containerInfo,\n        this.triggerInfo, this.overlayInfo.clientHeight, this.overlayConstraints);\n    }\n    else { //bottom\n      this.triggerPosition.bottom = this.containerInfo.scrollHeight - this.triggerPosition.top - this.triggerPosition.height;\n      position = this.verticalCalculation(this.triggerPosition.bottom, this.triggerPosition.height, this.containerInfo,\n        this.triggerInfo, this.overlayInfo.clientHeight, this.overlayConstraints);\n    }\n    return position;\n  }\n\n  /**\n   * Calculates trigger left & right positions and trigger width and\n   * uses these to return nominal position values depending on placement and\n   * expected attachment point (left/right)\n   * @returns verticalPosition\n   */\n  private getHorizontalPosition(): horizontalPosition {\n    let position: horizontalPosition;\n    //usually first offsetHeight is taken, as the measurement contains the borders    \n    this.triggerPosition.width = this.triggerInfo.offsetWidth != 0 ? this.triggerInfo.offsetWidth : this.triggerInfo.clientWidth;\n    \n    //let triggerLeft: number;\n    if (this.overlayPreset) {\n      this.triggerPosition.left = this.triggerInfo.absoluteLeft + this.overlayPreset.x;\n      this.triggerPosition.width = 0;\n    } else {\n      this.triggerPosition.left = this.containerInfo.scrollLeft + this.triggerInfo.absoluteLeft\n        - this.containerInfo.absoluteLeft - this.containerInfo.clientLeft;\n    }\n    this.triggerPosition.absoluteLeft = this.triggerInfo.absoluteLeft;\n\n    if (this.selectedHorizontalPosition === \"left\"){      \n      position = this.horizontalCalculation(this.triggerPosition.left, this.triggerPosition.width, this.containerInfo,\n        this.triggerInfo, this.overlayInfo.clientWidth, this.overlayConstraints);\n    }\n    else { //right\n      this.triggerPosition.right = this.containerInfo.scrollWidth - this.triggerPosition.left - this.triggerPosition.width;\n      position = this.horizontalCalculation(this.triggerPosition.right, this.triggerPosition.width, this.containerInfo,\n        this.triggerInfo, this.overlayInfo.clientWidth, this.overlayConstraints);\n    }\n    return position;    \n  }\n\n  /**\n   * Responsible for calling logic that handles situation when calculated overlay position\n   * is causing overlay to be partially rendered invisible. The goal is to adjust placement \n   * in such a way, so the overlay is fully visible.\n   * @returns void\n   */\n  private adjustToContainerBoundaries() {\n    if (this.boundyAdjustMode === TriggerBoundyAdjustMode.None) {\n      return;\n    }    \n\n    if (this.calculationsToPerform.has(\"vertical\")) {\n      this.adjustVerticalToContainerBoundaries();\n    }\n\n    if (this.calculationsToPerform.has(\"horizontal\")) {\n      this.adjustHorizontalToContainerBoundaries();\n    }\n  }\n\n  private setBodyBoundayrSize() {\n    const window = domInfoHelper.getWindow();      \n    const scroll = domInfoHelper.getScroll();\n    this.bodyBoundarySize = {\n      top : scroll.y,\n      left: scroll.x,\n      right: window.innerWidth + scroll.x,\n      bottom: window.innerHeight + scroll.y\n    };     \n  }\n\n  /**\n   * Retrieves information on current logical viewport (visible area). For \n   * InView this means actual viewport area (what you see in the browser - either the \n   * body or the scrolled to area in a container) or for InScroll this means total\n   * area of the container (or body).\n   * @returns coordinates - absolute values measuring from top = 0 and left = 0 (first \n   * pixels of the container)\n   */\n  private getContainerBoundarySize(): coordinates {    \n    if (this.boundyAdjustMode === TriggerBoundyAdjustMode.InScroll) {      \n      if (!this.isContainerBody) {\n        this.setBodyBoundayrSize();\n      }\n      return { \n        left: 0,\n        right: this.containerInfo.scrollWidth,\n        top: 0,\n        bottom: this.containerInfo.scrollHeight\n      };\n    }        \n    this.setBodyBoundayrSize();\n\n    if (this.isContainerBody) {       \n      return this.bodyBoundarySize;\n    } else {         \n      //special care is needed when evaluating viewport of the container\n      const parentIsInsignificant = this.container.parentElement.clientHeight === 0\n        || this.container.parentElement.clientWidth === 0;\n      const verticalScrollBasedOnParent = !parentIsInsignificant\n        && this.container.parentElement.clientHeight < this.containerInfo.clientHeight;\n      const horizontalScrollBasedOnParent = !parentIsInsignificant\n        && this.container.parentElement.clientWidth < this.containerInfo.clientWidth;\n\n      let clientHeight: number;\n      let clientWidth: number;\n      let scrollTop: number;\n      let scrollLeft: number;\n\n      if (verticalScrollBasedOnParent) {\n        clientHeight = this.container.parentElement.clientHeight;\n        scrollTop = this.container.parentElement.scrollTop;\n      } else {\n        clientHeight = this.containerInfo.clientHeight;\n        scrollTop = this.containerInfo.scrollTop;\n      }\n\n      if (horizontalScrollBasedOnParent) {\n        clientWidth = this.container.parentElement.clientWidth;clientWidth;\n        scrollLeft = this.container.parentElement.scrollLeft;\n      } else {\n        clientWidth = this.containerInfo.clientWidth;\n        scrollLeft = this.containerInfo.scrollLeft;\n      }\n          \n      return { \n        top : scrollTop,\n        bottom: scrollTop + clientHeight,\n        left: scrollLeft,\n        right: scrollLeft + clientWidth\n      };                \n    }  \n  }\n\n  /**\n   * Returns how much height of the overlay is visible in current viewport \n   */\n  private getOverlayVisibleHeight(visibleIn: \"container\" | \"body\"): number {\n    let boundary: coordinates;\n    let top: number;    \n    if (visibleIn === \"container\") {\n      boundary = this.containerBoundarySize;\n      top = this.triggerPosition.top;\n    } else {\n      boundary = this.bodyBoundarySize;\n      top = this.triggerPosition.absoluteTop;\n    }\n\n    if (this.selectedVerticalPosition === \"top\") {\n      return boundary.bottom - (top + this.triggerPosition.height);\n    } else {\n      return top - boundary.top;\n    }    \n  }\n\n  /**\n   * Returns how much width of the overlay is visible in current viewport \n   */\n  private getOverlayVisibleWidth(visibleIn: \"container\" | \"body\"): number {    \n    let boundary: coordinates;\n    let left: number;    \n    if (visibleIn === \"container\") {\n      boundary = this.containerBoundarySize;\n      left = this.triggerPosition.left;\n    } else {\n      boundary = this.bodyBoundarySize;\n      left = this.triggerPosition.absoluteLeft;\n    }\n\n    if (this.selectedHorizontalPosition === \"left\") {\n      return boundary.right - (left + this.triggerPosition.width);\n    } else {\n      return left - boundary.left;\n    }\n  }\n\n  /**\n   * Checks if current position actually fits in the container and if not, then reverses\n   * the placement. Then calculates which already calculated placements has the largest horizontal \n   * area of the overlay visible and picks the calculation with largest area.\n   */\n  private adjustHorizontalToContainerBoundaries() {\n    if (!this.overlayFitsContainer(\"horizontal\", this.position.left, this.position.right)) {\n      const positionCache: overlayPosition = { ...this.position };\n      const selectedPositionCache = this.selectedHorizontalPosition;\n      const placementCache = this.placement;\n      const horizontalCalculationCache = this.horizontalCalculation;\n      const visibleWidthBeforeAdjustment = this.getOverlayVisibleWidth(\"container\");\n      let visibleWidthInBodyBeforeAdjustment: number;\n      if (this.isContainerOverBody) {\n        visibleWidthInBodyBeforeAdjustment = this.getOverlayVisibleWidth(\"body\");\n      } else {\n        visibleWidthInBodyBeforeAdjustment = visibleWidthBeforeAdjustment\n      }      \n\n      this.getHorizontalAdjustment();\n\n      const visibleWidthAfterAdjustment = this.getOverlayVisibleWidth(\"container\");\n      let visibleWidthInBodyAfterAdjustment: number;\n      if (this.isContainerOverBody) {\n        visibleWidthInBodyAfterAdjustment = this.getOverlayVisibleWidth(\"body\");\n      } else {\n        visibleWidthInBodyAfterAdjustment = visibleWidthAfterAdjustment\n      }        \n\n      if (\n        !(visibleWidthInBodyBeforeAdjustment < visibleWidthInBodyAfterAdjustment \n          && visibleWidthInBodyAfterAdjustment > 0\n          && visibleWidthInBodyAfterAdjustment - visibleWidthInBodyBeforeAdjustment >= 0)        \n        ||\n        !(visibleWidthBeforeAdjustment < visibleWidthAfterAdjustment && visibleWidthAfterAdjustment > 0)) {        \n        this.position = positionCache;\n        this.selectedHorizontalPosition = selectedPositionCache;\n        this.placement = placementCache;\n        this.horizontalCalculation = horizontalCalculationCache;\n      }\n    }\n  }\n\n  /**\n   * Checks if current position actually fits in the container and if not, then reverses\n   * the placement. Then calculates which already calculated placements has the largest vertical \n   * area of the overlay visible and picks the calculation with largest area.\n   */\n  private adjustVerticalToContainerBoundaries() {\n    if (!this.overlayFitsContainer(\"vertical\", this.position.top, this.position.bottom)) {\n      const positionCache: overlayPosition = { ...this.position };\n      const selectedPositionCache = this.selectedVerticalPosition;\n      const placementCache = this.placement;\n      const verticalCalculationCache = this.verticalCalculation;\n      const visibleHeightBeforeAdjustment = this.getOverlayVisibleHeight(\"container\");\n      let visibleHeightInBodyBeforeAdjustment: number;\n      if (this.isContainerOverBody) {\n        visibleHeightInBodyBeforeAdjustment = this.getOverlayVisibleHeight(\"body\");\n      } else {\n        visibleHeightInBodyBeforeAdjustment = visibleHeightBeforeAdjustment\n      }\n\n      this.getVerticalAdjustment();      \n\n      const visibleHeightAfterAdjustment = this.getOverlayVisibleHeight(\"container\");\n      let visibleHeightInBodyAfterAdjustment: number;\n      if (this.isContainerOverBody) {\n        visibleHeightInBodyAfterAdjustment = this.getOverlayVisibleHeight(\"body\");\n      } else {\n        visibleHeightInBodyAfterAdjustment = visibleHeightAfterAdjustment\n      }          \n\n      if (\n        !(visibleHeightInBodyBeforeAdjustment < visibleHeightInBodyAfterAdjustment \n          && visibleHeightInBodyAfterAdjustment > 0 \n          && visibleHeightInBodyAfterAdjustment - visibleHeightInBodyBeforeAdjustment >= 0)\n        ||\n        !(visibleHeightBeforeAdjustment < visibleHeightAfterAdjustment && visibleHeightAfterAdjustment > 0)) {        \n        this.position = positionCache;\n        this.selectedVerticalPosition = selectedPositionCache;\n        this.placement = placementCache;\n        this.verticalCalculation = verticalCalculationCache;\n      }\n    }\n  }\n\n  private overlayFitsContainer(type: \"horizontal\" | \"vertical\", start: number, end: number): boolean {    \n    if (type === \"horizontal\") {\n      const endExpressedAsLeft = start + this.overlayInfo.clientWidth;\n      return this.containerBoundarySize.left <= start\n          && start <= this.containerBoundarySize.right //overlay left is between container left and right\n          && this.containerBoundarySize.left <= endExpressedAsLeft\n          && endExpressedAsLeft <= this.containerBoundarySize.right //and overlay right is between container left and right\n    }\n    const endExpressedAsTop = start + this.overlayInfo.clientHeight;\n    return this.containerBoundarySize.top <= start\n        && start <= this.containerBoundarySize.bottom //overlay top is between container top and bottom\n        && this.containerBoundarySize.top <= endExpressedAsTop \n        && endExpressedAsTop <= this.containerBoundarySize.bottom //and overlay bottom is between container top and bottom\n  }\n\n  /**\n   * Applies basic adjustment - switches verticaly placement (top -> bottom & bottom -> top) \n   * and recalculates based on the newly set placement \n   */\n  private getVerticalAdjustment() {\n    this.placement = Overlay.reverseVerticalPlacementMap.get(this.placement)(this.selectedVerticalPosition);\n    this.selectedVerticalPosition = Overlay.appliedStylePositionMap.get(this.placement).vertical;\n    this.verticalCalculation = Overlay.setVerticalCalculation(this.placement, this.selectedVerticalPosition);\n    const verticalPosition = this.getVerticalPosition();\n    this.position.top = verticalPosition.top;\n    this.position.bottom = verticalPosition.bottom;\n  }\n\n  /**\n   * Applies basic adjustment - switches horizontal placement (left -> right & right -> left)\n   * and recalculates based on the newly set placement\n   */\n  private getHorizontalAdjustment() {\n    this.placement = Overlay.reverseHorizontalPlacementMap.get(this.placement)(this.selectedHorizontalPosition);\n    this.selectedHorizontalPosition = Overlay.appliedStylePositionMap.get(this.placement).horizontal;\n    this.horizontalCalculation = Overlay.setHorizontalCalculation(this.placement, this.selectedHorizontalPosition);\n    const horizontalPosition = this.getHorizontalPosition();\n    this.position.left = horizontalPosition.left;\n    this.position.right = horizontalPosition.right;    \n  }  \n}","import { domInfoHelper, eventHelper, domManipulationHelper, domTypes } from '../dom/exports'\nimport { Placement, TriggerBoundyAdjustMode, overlayConstraints, overlayPosition, Overlay } from './overlay'\nimport { state } from '../stateProvider';\n\nexport class overlayHelper {\n  static overlayRegistry: { [key: string]: Overlay} = {};\n\n  static addOverlayToContainer(blazorId: string, \n    overlaySelector, triggerSelector, placement: Placement,  containerSelector: string,\n    triggerBoundyAdjustMode: TriggerBoundyAdjustMode, triggerIsWrappedInDiv: boolean, triggerPrefixCls: string,\n    verticalOffset: number, horizontalOffset: number, arrowPointAtCenter: boolean,    \n    overlayTop?: number, overlayLeft?: number\n  ): overlayPosition {      \n    const overlayElement = domInfoHelper.get(overlaySelector) as HTMLDivElement;    \n    const containerElement = domInfoHelper.get(containerSelector) as HTMLElement;\n    const triggerElement = domInfoHelper.get(triggerSelector) as HTMLElement;    \n\n    if (!domManipulationHelper.addElementTo(overlaySelector, containerElement)) {\n      console.log(\"Failed to add overlay. Details:\", {\n        triggerPrefixCls: triggerPrefixCls,\n        overlaySelector: overlaySelector,\n        containerElement: containerElement\n      } );\n      return null;\n    }    \n\n    let overlayPresets: domTypes.position;\n    if (overlayTop || overlayLeft) {\n      overlayPresets = { x: overlayLeft, y: overlayTop };\n    }\n\n    const overlayConstraints: overlayConstraints = {\n      verticalOffset: verticalOffset,\n      horizontalOffset: horizontalOffset,\n      arrowPointAtCenter: arrowPointAtCenter\n    };\n\n    const overlay = new Overlay(blazorId, overlayElement, containerElement, triggerElement, placement, triggerBoundyAdjustMode, triggerIsWrappedInDiv, triggerPrefixCls, overlayConstraints);   \n    //register object in store, so it can be retrieved during update/dispose\n    this.overlayRegistry[blazorId] = overlay;\n\n    setTimeout(() => {\n      // We need to calculate the position again to ensure that the overlay is correctly placed. Needs to be optimized twice to once\n      overlay.calculatePosition(true, false, overlayPresets);\n    }, 10);\n    return overlay.calculatePosition(false, true, overlayPresets);\n  }\n\n\n  static updateOverlayPosition(blazorId: string, overlaySelector, triggerSelector, placement: Placement,  containerSelector: string,\n    triggerBoundyAdjustMode: TriggerBoundyAdjustMode, triggerIsWrappedInDiv: boolean, triggerPrefixCls: string,\n    verticalOffset: number, horizontalOffset: number, arrowPointAtCenter: boolean,  \n    overlayTop?: number, overlayLeft?: number): overlayPosition {\n    const overlay = this.overlayRegistry[blazorId];\n    if (overlay){\n      let overlayPresets: domTypes.position;\n      if (overlayTop || overlayLeft) {\n        overlayPresets = { x: overlayLeft, y: overlayTop };\n      }      \n      setTimeout(() => {\n        // We need to calculate the position again to ensure that the overlay is correctly placed. Needs to be optimized twice to once\n        overlay.calculatePosition(true, false, overlayPresets);\n      }, 10);\n      return overlay.calculatePosition(false, false, overlayPresets);      \n    } else {\n      //When page is slow, it may happen that rendering of an overlay may not happen, even if \n      //blazor thinks it did happen. In such a case, when overlay object is not found, just try\n      //to render it again.\n      return overlayHelper.addOverlayToContainer(blazorId, overlaySelector, triggerSelector, placement,  containerSelector,triggerBoundyAdjustMode, triggerIsWrappedInDiv, triggerPrefixCls, \n        verticalOffset, horizontalOffset, arrowPointAtCenter,  \n        overlayTop, overlayLeft);      \n    }    \n  }\n\n  static deleteOverlayFromContainer(blazorId: string) {\n    const overlay = this.overlayRegistry[blazorId];\n    if (overlay) {      \n      overlay.dispose();\n      delete this.overlayRegistry[blazorId];\n    }\n  }\n\n  static addPreventEnterOnOverlayVisible(element, overlayElement) {\n    if (element && overlayElement) {\n      const dom: HTMLElement = domInfoHelper.get(element);\n      if (dom) {\n        state.eventCallbackRegistry[element.id + \"keydown:Enter\"] = (e) => eventHelper.preventKeyOnCondition(e, \"enter\", () => overlayElement.offsetParent !== null);\n        dom.addEventListener(\"keydown\", state.eventCallbackRegistry[element.id + \"keydown:Enter\"], false);\n      }\n    }\n  }\n\n  static removePreventEnterOnOverlayVisible(element) {\n    if (element) {\n      const dom: HTMLElement = domInfoHelper.get(element);\n      if (dom) {\n        dom.removeEventListener(\"keydown\", state.eventCallbackRegistry[element.id + \"keydown:Enter\"]);\n        state.eventCallbackRegistry[element.id + \"keydown:Enter\"] = null; \n      }\n    }\n  }\n}\n\n","export class tableHelper {\n  static isHidden(element) {\n    if (element) {\n      const computedStyle = getComputedStyle(element);\n      if (computedStyle.display === \"none\" || computedStyle.visibility === \"hidden\") {\n        return true;\n      }\n      if (element.parentElement && tableHelper.isHidden(element.parentElement)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  static isIgnore(element, style: CSSStyleDeclaration, left: number, right: number) {\n    const previousPosition = style.getPropertyValue('position');\n    const rect = element.getBoundingClientRect();\n    if (rect.left > right || rect.right < left) {\n      return true;\n    }\n\n    if (previousPosition === 'absolute') {\n      return true;\n    }\n    return false;\n  }\n  static getTotalHeightAbove(rootElement, element): number {\n    const currentRect = element.getBoundingClientRect();\n    const parentRect = rootElement.getBoundingClientRect();\n    return currentRect.top - parentRect.top;   \n  }\n  static getTotalHeightBelow(rootElement, element, marginBottom: number, left: number, right: number): number {\n    let totalHeight = 0;\n    let currentElement = element.nextElementSibling;\n\n    let rowGap = 0;\n    let parentBorderBottom = 0;\n    let parentPaddingBottom = 0;\n    const parentElement = element.parentElement;\n    if (parentElement) {\n      const parentComputedStyle = getComputedStyle(parentElement);\n      if (parentComputedStyle.rowGap && parentComputedStyle.rowGap.endsWith('px')) {\n        rowGap = parseFloat(parentComputedStyle.rowGap);        \n      }\n      if (parentComputedStyle.borderStyle != 'none' && parentComputedStyle.borderBottom) {        \n        parentBorderBottom = parseFloat(parentComputedStyle.borderBottom);        \n      }\n      if (parentComputedStyle.paddingBottom) {\n        parentPaddingBottom = parseFloat(parentComputedStyle.paddingBottom);\n      }\n    }\n    let previousElement = element;\n    let previousComputedStyle = getComputedStyle(element);\n\n\n    while (currentElement) {\n      const currentComputedStyle = getComputedStyle(currentElement);\n      const hasSameZIndex = previousComputedStyle.getPropertyValue('z-index') == currentComputedStyle.getPropertyValue('z-index');\n      if (!tableHelper.isIgnore(currentElement, currentComputedStyle, left, right) && hasSameZIndex) {\n        totalHeight += currentElement.offsetHeight + Math.max(parseFloat(currentComputedStyle.marginTop), parseFloat(previousComputedStyle.marginBottom)) + rowGap;\n\n        previousElement = currentElement;\n        previousComputedStyle = currentComputedStyle;\n      }\n      currentElement = currentElement.nextElementSibling;\n   \n    }\n    if (!tableHelper.isIgnore(previousElement, previousComputedStyle, left, right)) {\n      marginBottom = Math.max(parseFloat(previousComputedStyle.marginBottom), marginBottom);\n      if (parentBorderBottom > 0.1 || parentPaddingBottom>0.1) {\n        totalHeight += marginBottom;\n        marginBottom = 0;\n      }\n    }    \n\n    if (parentElement) {     \n      const parentComputedStyle = getComputedStyle(parentElement);\n      if (!tableHelper.isIgnore(parentElement, parentComputedStyle, left, right)) {\n\n        totalHeight += parentPaddingBottom;   \n        totalHeight += parentBorderBottom;\n        \n      }\n      if (parentElement === rootElement) {\n        return totalHeight;\n      }\n      \n      totalHeight += tableHelper.getTotalHeightBelow(rootElement, parentElement, marginBottom, left, right);\n    }\n    return totalHeight;\n  }\n  static parseHeightValue(value) {\n    // 去除单位并转换为数字\n    return parseFloat(value);\n  }\n  static getCssHeight(element,height) {\n    if (element) {\n      if (height !== 'auto' && height !== '0px' && height !== '') {\n        // 将 'px' 以外的单位转换为像素\n        if (height.endsWith('px')) {\n          return tableHelper.parseHeightValue(height);\n        } else if (height.endsWith('vh')) {\n          return (tableHelper.parseHeightValue(height) / 100) * window.innerHeight;\n        } else if (height.endsWith('%')) {\n          // 获取父元素的高度\n          const parentElement = element.parentElement;\n          if (parentElement) {\n            const parentComputedStyle = window.getComputedStyle(parentElement);\n            const parentHeight = parentComputedStyle.height;\n            return (tableHelper.parseHeightValue(height) / 100) * tableHelper.parseHeightValue(parentHeight);\n          }\n          return 0;\n        }\n        return height;\n      }\n    }\n    return 0;\n  }\n\n\n  static getNumericHeight(element) {\n    if (element && element.style && element.style.height) {\n      const computedStyle = window.getComputedStyle(element);\n      const height = tableHelper.getCssHeight(element, computedStyle.height);\n      if (height > 0) {\n        return height;\n      }          \n    }\n    return 0;\n  }\n  static getContainer(element) {\n    if (element) {     \n      const height = tableHelper.getNumericHeight(element);    \n      if (height > 0) {    \n        return element;          \n      }  \n      const parent = this.getContainer(element.parentElement);\n      if (parent != null) {\n        return parent;\n      }         \n    }\n    return null;\n  }\n  static setBodyHeight(bodyRef) {\n\n    let container = tableHelper.getContainer(bodyRef.parentElement);\n    if (!container) {\n      container = document.body;\n    }\n    const rect = bodyRef.getBoundingClientRect();\n    if (tableHelper.isHidden(bodyRef)) {\n      return;\n    }\n    // 计算上面元素的总高度\n    const heightAbove = tableHelper.getTotalHeightAbove(container, bodyRef);\n    //console.log('heightAbove:' + heightAbove);\n\n    // 计算下面元素的总高度\n    const heightBelow = tableHelper.getTotalHeightBelow(container, bodyRef,0, rect.left, rect.right);\n    //console.log('heightBelow:' + heightBelow);\n\n    // 计算视口高度并减去滚动条的宽度\n    const viewportHeight = container.clientHeight;\n    //console.log('viewportHeight:' + viewportHeight);\n\n    // 设置目标元素的高度\n\n    const heightStyle = `${viewportHeight - heightAbove - heightBelow}px`;\n    if (heightStyle !== bodyRef.style.height) {\n      bodyRef.style.height = heightStyle;\n    }\n\n  }\n  static bindTableScroll(wrapperRef, bodyRef, tableRef, headerRef, scrollX, scrollY, resizable, autoHeight) {\n    bodyRef.bindScroll = () => {\n      if (scrollX) {\n        tableHelper.SetScrollPositionClassName(bodyRef, wrapperRef);\n      }\n      if (scrollY) {\n        headerRef.scrollLeft = bodyRef.scrollLeft;\n      }\n      if (autoHeight) {\n        tableHelper.setBodyHeight(bodyRef);\n      }\n\n    }\n\n    // direct setting classlist will not work, so delay 500ms for workaround\n    setTimeout(() => {\n      bodyRef && bodyRef.bindScroll();\n    }, 500);\n\n    bodyRef.addEventListener && bodyRef.addEventListener('scroll', bodyRef.bindScroll);\n    window.addEventListener('resize', bodyRef.bindScroll);\n\n    if (resizable) {\n      tableHelper.enableColumnResizing(headerRef, tableRef, scrollY);\n    }\n    if (autoHeight) {\n      bodyRef.observer = new MutationObserver(mutations => {\n        if (mutations) {         \n          tableHelper.setBodyHeight(bodyRef);\n        }\n      });\n      const config = { childList: true, subtree: true, attributes: true, attributeFilter: ['display', 'visibility','aria-selected']};\n      const target = document.body; // 要观察变动的 DOM 节点\n      bodyRef.observer.observe(target, config);\n      tableHelper.setBodyHeight(bodyRef);\n    }\n  }\n\n  static unbindTableScroll(bodyRef) {\n    if (bodyRef) {\n      bodyRef.removeEventListener && bodyRef.removeEventListener('scroll', bodyRef.bindScroll);\n      window.removeEventListener('resize', bodyRef.bindScroll);\n      if (bodyRef.observer) {\n        bodyRef.observer.disconnect();\n      }\n    }\n  }\n  \n  static SetScrollPositionClassName(bodyRef, wrapperRef) {\n\n    const scrollLeft = bodyRef.scrollLeft;\n    const scrollWidth = bodyRef.scrollWidth;\n    const clientWidth = bodyRef.clientWidth;\n\n    let pingLeft = false;\n    let pingRight = false;\n\n    if ((scrollWidth == clientWidth && scrollWidth != 0)) {\n      pingLeft = false;\n      pingRight = false;\n    }\n    else if (scrollLeft == 0) {\n      pingLeft = false;\n      pingRight = true;\n    }\n    else if (Math.abs(scrollWidth - (scrollLeft + clientWidth)) <= 1) {\n      pingRight = false;\n      pingLeft = true;\n    }\n    else {\n      pingLeft = true;\n      pingRight = true;\n    }\n\n    pingLeft ? wrapperRef.classList.add(\"ant-table-ping-left\") : wrapperRef.classList.remove(\"ant-table-ping-left\");\n    pingRight ? wrapperRef.classList.add(\"ant-table-ping-right\") : wrapperRef.classList.remove(\"ant-table-ping-right\");\n  }\n\n  static enableColumnResizing(headerElement, tableElement, scrollY) {\n\n    const cols = tableElement.querySelectorAll('col');\n    const ths = scrollY ?\n      headerElement.querySelectorAll('.ant-table-thead th') :\n      tableElement.tHead.querySelectorAll('.ant-table-thead th');\n    const headerCols = scrollY ? headerElement.querySelectorAll('col') : null;\n\n    ths.forEach((th, i) => {\n\n      const col = cols[i];\n      const headerCol = headerCols ? headerCols[i] : null;\n      const handle = document.createElement('div');\n      handle.classList.add('ant-table-resizable-handle');\n      handle.style.height = `${tableElement.offsetHeight}px`;\n\n      th.appendChild(handle);\n\n\n      handle.addEventListener('mousedown', handleMouseDown);\n      if ('ontouchstart' in window) {\n        handle.addEventListener('touchstart', handleMouseDown);\n      }\n\n      function handleMouseDown(evt) {\n        evt.preventDefault();\n        evt.stopPropagation();\n\n        //const th = handle.parentElement;\n        const startPageX = evt.touches ? evt.touches[0].pageX : evt.pageX;\n        const originalColumnWidth = th.offsetWidth;\n        const rtlMultiplier = window.getComputedStyle(th, null).getPropertyValue('direction') === 'rtl' ? -1 : 1;\n        let updatedColumnWidth = 0;\n        handle.classList.add('ant-table-resizing');\n\n        function handleMouseMove(evt) {\n          evt.stopPropagation();\n          const newPageX = evt.touches ? evt.touches[0].pageX : evt.pageX;\n          const nextWidth = originalColumnWidth + (newPageX - startPageX) * rtlMultiplier - 5;\n          if (Math.abs(nextWidth - updatedColumnWidth) > 0) {\n            updatedColumnWidth = nextWidth;\n            handle.style.right = '';\n            handle.style.left = `${updatedColumnWidth}px`;\n          }\n        }\n\n        function handleMouseUp() {\n          if (updatedColumnWidth > 0) {\n            th.style.width = `${updatedColumnWidth}px`;\n            col.style.width = `${updatedColumnWidth}px`;\n            if (headerCol) {\n              headerCol.style.width = `${updatedColumnWidth}px`;\n            }\n            handle.style.right = '0';\n            handle.style.left = '';\n            handle.classList.remove('ant-table-resizing');\n          }\n\n          document.body.removeEventListener('mousemove', handleMouseMove);\n          document.body.removeEventListener('mouseup', handleMouseUp);\n          document.body.removeEventListener('touchmove', handleMouseMove);\n          document.body.removeEventListener('touchend', handleMouseUp);\n        }\n\n        if (evt instanceof TouchEvent) {\n          document.body.addEventListener('touchmove', handleMouseMove, { passive: true });\n          document.body.addEventListener('touchend', handleMouseUp, { passive: true });\n        } else {\n          document.body.addEventListener('mousemove', handleMouseMove, { passive: true });\n          document.body.addEventListener('mouseup', handleMouseUp, { passive: true });\n        }\n      }\n    });\n  }\n}","type fileInfo = {\n  fileName: string,\n  size: number,\n  objectURL: string,\n  type: string\n}\n\nexport class uploadHelper {\n  static addFileClickEventListener(btn: HTMLElement) {\n    if (btn.addEventListener) {\n      btn.addEventListener(\"click\", uploadHelper.fileClickEvent);\n    }\n  }\n\n  static removeFileClickEventListener(btn: HTMLElement) {\n    btn.removeEventListener(\"click\", uploadHelper.fileClickEvent);\n  }\n\n  private static fileClickEvent(e: MouseEvent) {\n    e.stopPropagation();\n    const fileId = (e.currentTarget as HTMLSpanElement).attributes[\"data-fileid\"].nodeValue;\n    const element = document.getElementById(fileId) as HTMLInputElement;\n    element.click();\n  }\n\n  static clearFile(element) {\n    element.setAttribute(\"type\", \"input\");\n    element.value = '';\n    element.setAttribute(\"type\", \"file\");\n  }\n\n  static getFileInfo(element: HTMLInputElement) {\n    if (element.files && element.files.length > 0) {\n      const fileInfo = Array<fileInfo>();\n      for (let i = 0; i < element.files.length; i++) {\n        const file = element.files[i];\n        const objectUrl = this.getObjectURL(file);\n        fileInfo.push({\n          fileName: file.name,\n          size: file.size,\n          objectURL: objectUrl,\n          type: file.type\n        });\n      }\n\n      return fileInfo;\n    }\n  }\n\n  private static getObjectURL(file: File): string {\n    let url = null;\n    if (window.URL != undefined) {\n      url = window.URL.createObjectURL(file);\n    } else if (window.webkitURL != undefined) {\n      url = window.webkitURL.createObjectURL(file);\n    }\n    return url;\n  }\n\n  static uploadFile(element, index, data, headers, fileId, url, name, instance, percentMethod, successMethod, errorMethod, method: string) {\n    const formData = new FormData();\n    const file = element.files[index];\n    const size = file.size;\n    formData.append(name, file);\n    if (data != null) {\n      for (const key in data) {\n        formData.append(key, data[key]);\n      }\n    }\n\n    if (!formData['__RequestVerificationToken']) {\n      const antiforgeryToken = document.querySelector('[name=\"__RequestVerificationToken\"]');\n      if (antiforgeryToken) {\n        formData.append('__RequestVerificationToken', antiforgeryToken.getAttribute('value'));\n      }\n    }\n\n    const req = new XMLHttpRequest()\n    req.onreadystatechange = function () {\n      if (req.readyState === 4) {\n        // #1655 Any 2xx response code is okay\n        if (req.status < 200 || req.status > 299) {\n          // #2857 should get error raw response\n          instance.invokeMethodAsync(errorMethod, fileId, req.responseText);\n          return;\n        }\n        instance.invokeMethodAsync(successMethod, fileId, req.responseText);\n      }\n    }\n    req.upload.onprogress = function (event) {\n      const percent = Math.floor(event.loaded / size * 100);\n      instance.invokeMethodAsync(percentMethod, fileId, percent);\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    req.onerror = function (e) {\n      instance.invokeMethodAsync(errorMethod, fileId, \"error\");\n    }\n    req.open(method, url, true)\n    if (headers != null) {\n      for (const header in headers) {\n        req.setRequestHeader(header, headers[header]);\n      }\n    }\n    req.send(formData)\n  }\n}","export class watermarkHelper {\n  static generateBase64Url({\n    width,\n    height,\n    gapX,\n    gapY,\n    offsetLeft,\n    offsetTop,\n    rotate,\n    alpha,\n    watermarkContent,\n    lineSpace,\n  }: {\n        width: number,\n        height: number,\n        gapX: number,\n        gapY: number,\n        offsetLeft: number,\n        offsetTop: number,\n        rotate: number,\n        alpha: number,\n        watermarkContent: WatermarkText | WatermarkImage | Array<WatermarkText | WatermarkImage>,\n        lineSpace: number\n    }, dotnetRef, watermarkContentRef: HTMLElement, watermarkRef: HTMLElement): string {\n    const onFinish = (url: string) => {\n      dotnetRef.invokeMethodAsync(\"load\", url);\n    }\n\n    const canvas = document.createElement('canvas');\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n            // eslint-disable-next-line no-console\n      console.warn('Current environment does not support Canvas, cannot draw watermarks.');\n      onFinish('');\n      return;\n    }\n    const ratio = window.devicePixelRatio || 1;\n    const canvasWidth = (gapX + width) * ratio;\n    const canvasHeight = (gapY + height) * ratio;\n\n    canvas.width = canvasWidth;\n    canvas.height = canvasHeight;\n    canvas.style.width = `${gapX + width}px`;\n    canvas.style.height = `${gapY + height}px`;\n\n    ctx.translate(offsetLeft * ratio, offsetTop * ratio);\n    ctx.rotate((Math.PI / 180) * Number(rotate));\n    ctx.globalAlpha = alpha;\n\n    const markWidth = width * ratio;\n    const markHeight = height * ratio;\n\n    ctx.fillStyle = 'transparent';\n    ctx.fillRect(0, 0, markWidth, markHeight);\n\n    const contents = Array.isArray(watermarkContent) ? watermarkContent : [{ ...watermarkContent }];\n    let top = 0;\n    contents.forEach((item: WatermarkText & WatermarkImage & { top: number }) => {\n      if (item.url) {\n        const { url, isGrayscale = false } = item;\n                // eslint-disable-next-line no-param-reassign\n        item.top = top;\n        top += height;\n        const img = new Image();\n        img.crossOrigin = 'anonymous';\n        img.referrerPolicy = 'no-referrer';\n        img.src = url;\n        img.onload = () => {\n                    // ctx.filter = 'grayscale(1)';\n          ctx.drawImage(img, 0, item.top * ratio, width * ratio, height * ratio);\n          if (isGrayscale) {\n            const imgData = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);\n            const pixels = imgData.data;\n            for (let i = 0; i < pixels.length; i += 4) {\n              const lightness = (pixels[i] + pixels[i + 1] + pixels[i + 2]) / 3;\n              pixels[i] = lightness;\n              pixels[i + 1] = lightness;\n              pixels[i + 2] = lightness;\n            }\n            ctx.putImageData(imgData, 0, 0);\n          }\n          onFinish(canvas.toDataURL());\n        };\n      } else if (item.text) {\n        const {\n          text,\n          fontColor = 'rgba(0, 0, 0, 0.1)',\n          fontSize = 16,\n          fontFamily = undefined,\n          fontWeight = 'normal',\n          textAlign = 'start',\n          fontStyle = 'normal'\n        } = item;\n                // eslint-disable-next-line no-param-reassign\n        item.top = top;\n        top += lineSpace;\n        const markSize = Number(fontSize) * ratio;\n\n        ctx.font = `${fontStyle} normal ${fontWeight} ${markSize}px/${markHeight}px ${fontFamily}`;\n        ctx.textAlign = textAlign;\n        ctx.textBaseline = 'top';\n        ctx.fillStyle = fontColor;\n        ctx.fillText(text, 0, item.top * ratio);\n      }\n    });\n    onFinish(canvas.toDataURL());\n\n    const parent = watermarkRef.parentElement;\n\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    const observer = new MutationObserver((mutationsList, observer) => {\n      mutationsList.forEach((mutation) => {\n        if (mutation.type === 'childList') {\n          const removeNodes = mutation.removedNodes;\n          removeNodes.forEach((node) => {\n            const element = node as HTMLElement;\n            if (element === watermarkRef) {\n              parent.appendChild(element);\n            }\n            if (element === watermarkContentRef) {\n              watermarkRef.appendChild(element);\n            }\n          });\n        }\n      });\n    });\n\n    observer.observe(parent, {\n      attributes: true,\n      childList: true,\n      characterData: true,\n      subtree: true,\n    });\n\n    watermarkRef['_observer'] = observer;\n  }\n}\n\nexport interface WatermarkText {\n    /**\n     * 水印文本文字颜色\n     * @default rgba(0,0,0,0.1)\n     */\n    fontColor?: string;\n    /**\n     * 水印文本文字大小\n     * @default 16\n     */\n    fontSize?: number;\n    /**\n     * 水印文本文字样式\n     * @default undefined\n     */\n    fontFamily?: string | undefined;\n    /**\n     * 水印文本文字粗细\n     * @default normal\n     */\n    fontWeight?: 'normal' | 'lighter' | 'bold' | 'bolder';\n    /**\n     * 水印文本内容\n     * @default ''\n     */\n    text?: string;\n\n    textAlign: 'start' | 'end';\n\n    fontStyle?: 'normal' | 'italic' | 'oblique';\n}\n\nexport interface WatermarkImage {\n    /**\n     * 水印图片是否需要灰阶显示\n     * @default false\n     */\n    isGrayscale?: boolean;\n    /**\n     * 水印图片源地址,为了显示清楚,建议导出 2 倍或 3 倍图\n     * @default ''\n     */\n    url?: string;\n}","const throttle = (fn, threshold = 160) => {\n  let timeout;\n  let start = +new Date();\n  return function (...args) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const context = this,\n      curTime = +new Date() - 0;\n    //总是干掉事件回调\n    window.clearTimeout(timeout);\n    if (curTime - start >= threshold) {\n      //只执行一部分方法,这些方法是在某个时间段内执行一次\n      fn.apply(context, args);\n      start = curTime;\n    } else {\n      //让方法在脱离事件后也能执行一次\n      timeout = window.setTimeout(() => {\n        fn.apply(this, args);\n      }, threshold);\n    }\n  };\n};\n\nconst eventMap = new Map<HTMLElement, Dragger>();\n\nconst defaultOptions = {\n  inViewport: true,\n};\n\ninterface DraggerState {\n  isInDrag: boolean;\n  // mouse x of once mouseDown event\n  mouseDownX: number;\n  // mouse y of once mouseDown event\n  mouseDownY: number;\n\n  // during onec drag event,\n  // the offset from the original x during mouseDown\n  mouseDownXOffset: number;\n  // during onec drag event,\n  // the offset from the original x during mouseDown\n  mouseDownYOffset: number;\n\n  // the gap between dragged element and dragged element's container\n  bound: {\n    left: number;\n    top: number;\n    right: number;\n    bottom: number;\n  };\n}\n\nclass Dragger {\n  // Element of drag control\n  private _trigger: HTMLElement;\n  // dragged element\n  private _container: HTMLElement;\n  // The container where the dragged element is located\n  private _draggedInContainer: HTMLElement;\n\n  private _options: any;\n  private _state: DraggerState;\n  private _isFirst: boolean = true;\n  private _style: string | null = null;\n\n  constructor(\n    trigger: HTMLElement,\n    container: HTMLElement,\n    dragInViewport: boolean = true,\n    draggedIn: HTMLElement = document.documentElement\n  ) {\n    this._trigger = trigger;\n    this._container = container;\n    this._draggedInContainer = draggedIn;\n    this._options = Object.assign({}, defaultOptions, {\n      inViewport: dragInViewport,\n    });\n    this._state = {\n      isInDrag: false,\n      mouseDownX: 0,\n      mouseDownY: 0,\n      mouseDownXOffset: 0,\n      mouseDownYOffset: 0,\n      bound: {\n        left: 0,\n        top: 0,\n        right: 0,\n        bottom: 0,\n      },\n    };\n  }\n\n  /**\n   * get xOffset and yOffset from container.style.translate\n   * @returns [xOffset, yOffset]\n   */\n  getContainerTranslateOffset() {\n    const translate = this._container.style.translate;\n    let xOffset = 0;\n    let yOffset = 0;\n    if (translate) {\n      const translateInfo = translate.split(\" \");\n      xOffset = parseInt(translateInfo[0]);\n      yOffset = parseInt(translateInfo[1]);\n      xOffset = Number.isNaN(xOffset) ? 0 : xOffset;\n      yOffset = Number.isNaN(yOffset) ? 0 : yOffset;\n    }\n    return {\n      xOffset: xOffset,\n      yOffset: yOffset,\n    };\n  }\n\n  onMousedown = (e) => {\n    const state = this._state;\n    state.isInDrag = true;\n    state.mouseDownX = e.clientX;\n    state.mouseDownY = e.clientY;\n    const { xOffset, yOffset } = this.getContainerTranslateOffset();\n\n    if (this._isFirst) {\n      state.bound = getBoundPosition(this._container, this._draggedInContainer);\n      if (!this._style) {\n        this._style = this._container.getAttribute(\"style\");\n      }\n\n      this._isFirst = false;\n    }\n\n    state.mouseDownXOffset = xOffset;\n    state.mouseDownYOffset = yOffset;\n  };\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onMouseup = (e) => {\n    const state = this._state;\n    state.isInDrag = false;\n  };\n\n  onMousemove = throttle((e) => {\n    const state = this._state;\n    if (state.isInDrag) {\n      const nowX = e.clientX, nowY = e.clientY;\n      let offsetX = nowX - state.mouseDownX + state.mouseDownXOffset,\n        offsetY = nowY - state.mouseDownY + state.mouseDownYOffset;\n\n      if (this._options.inViewport) {\n        if (offsetX < state.bound.left) {\n          offsetX = state.bound.left;\n        } else if (offsetX > state.bound.right) {\n          offsetX = state.bound.right;\n        }\n        if (offsetY < state.bound.top) {\n          offsetY = state.bound.top;\n        } else if (offsetY > state.bound.bottom) {\n          offsetY = state.bound.bottom;\n        }\n      }\n      this._container.style.translate = `${offsetX}px ${offsetY}px`;\n    }\n  }, 10).bind(this);\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  onResize = throttle((e) => {\n    this._state.bound = getBoundPosition(\n      this._container,\n      this._draggedInContainer\n    );\n  }, 30).bind(this);\n\n  bindDrag() {\n    const trigger = this._trigger;\n    const options = this._options;\n\n    trigger.addEventListener(\"mousedown\", this.onMousedown, false);\n    window.addEventListener(\"mouseup\", this.onMouseup, false);\n    document.addEventListener(\"mousemove\", this.onMousemove);\n    if (options.inViewport) {\n      window.addEventListener(\"resize\", this.onResize, false);\n    }\n  }\n\n  unbindDrag() {\n    const trigger = this._trigger;\n\n    trigger.removeEventListener(\"mousedown\", this.onMousedown, false);\n    window.removeEventListener(\"mouseup\", this.onMouseup, false);\n    document.removeEventListener(\"mousemove\", this.onMousemove);\n    if (this._options.inViewport) {\n      window.removeEventListener(\"resize\", this.onResize, false);\n    }\n  }\n\n  resetContainerStyle() {\n    if (this._style !== null) {\n      this._isFirst = true;\n      this._container.setAttribute(\"style\", this._style);\n    }\n  }\n}\n\n/**\n *\n * @param childNode The child of parentNode\n * @param parentNode The container of childNode\n * @returns\n */\nfunction getBoundPosition(childNode: HTMLElement, parentNode: HTMLElement) {\n  const childComputedStyle = window.getComputedStyle(parentNode);\n  const parentComputedStyle = window.getComputedStyle(parentNode);\n\n  const bounds = {\n    left:\n      -childNode.offsetLeft +\n      parseInt(childComputedStyle.marginLeft) +\n      parseInt(parentComputedStyle.paddingLeft),\n    top:\n      -childNode.offsetTop +\n      parseInt(childComputedStyle.marginTop) +\n      parseInt(parentComputedStyle.paddingTop),\n    right:\n      innerWidth(parentNode, parentComputedStyle) -\n      outerWidth(childNode, childComputedStyle) -\n      childNode.offsetLeft +\n      parseInt(parentComputedStyle.paddingRight) -\n      parseInt(childComputedStyle.marginRight),\n    bottom:\n      innerHeight(parentNode, parentComputedStyle) -\n      outerHeight(childNode, childComputedStyle) -\n      childNode.offsetTop +\n      parseInt(parentComputedStyle.paddingBottom) -\n      parseInt(childComputedStyle.marginBottom),\n  };\n\n  return bounds;\n}\n\nfunction outerHeight(\n  node: HTMLElement,\n  computedStyle: CSSStyleDeclaration | null = null\n): number {\n  if (!computedStyle) {\n    computedStyle = window.getComputedStyle(node);\n  }\n  let height = node.clientHeight;\n  height += parseInt(computedStyle.borderTopWidth);\n  height += parseInt(computedStyle.borderBottomWidth);\n  return height;\n}\n\nfunction outerWidth(\n  node: HTMLElement,\n  computedStyle: CSSStyleDeclaration | null = null\n): number {\n  if (!computedStyle) {\n    computedStyle = window.getComputedStyle(node);\n  }\n  let width = node.clientWidth;\n  width += parseInt(computedStyle.borderLeftWidth);\n  width += parseInt(computedStyle.borderRightWidth);\n  return width;\n}\n\nfunction innerHeight(\n  node: HTMLElement,\n  computedStyle: CSSStyleDeclaration | null = null\n): number {\n  if (!computedStyle) {\n    computedStyle = window.getComputedStyle(node);\n  }\n  let height = node.clientHeight;\n  height -= parseInt(computedStyle.paddingTop);\n  height -= parseInt(computedStyle.paddingBottom);\n  return height;\n}\n\nfunction innerWidth(\n  node: HTMLElement,\n  computedStyle: CSSStyleDeclaration | null = null\n): number {\n  if (!computedStyle) {\n    computedStyle = window.getComputedStyle(node);\n  }\n  let width = node.clientWidth;\n  width -= parseInt(computedStyle.paddingLeft);\n  width -= parseInt(computedStyle.paddingRight);\n  return width;\n}\n\nfunction enableDraggable(\n  trigger: HTMLElement,\n  container: HTMLElement,\n  dragInViewport: boolean = true,\n  draggedIn: HTMLElement = document.documentElement\n) {\n  let dragger = eventMap.get(trigger);\n  if (!dragger) {\n    dragger = new Dragger(trigger, container, dragInViewport, draggedIn);\n    eventMap.set(trigger, dragger);\n  }\n  dragger.bindDrag();\n}\n\nfunction disableDraggable(trigger: HTMLElement) {\n  const dragger = eventMap.get(trigger);\n  if (dragger) {\n    dragger.unbindDrag();\n  }\n}\n\nfunction resetModalPosition(trigger: HTMLElement) {\n  const dragger = eventMap.get(trigger);\n  if (dragger) {\n    dragger.resetContainerStyle();\n  }\n}\n\nexport { enableDraggable, disableDraggable, resetModalPosition };\n","import { domInfoHelper } from './exports';\nimport { state } from '../stateProvider';\n\nexport class eventHelper {\n  static triggerEvent(element: HTMLInputElement, eventType: string, eventName: string) {\n    //TODO: replace with event constructors https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent\n    //Not used \n    const evt = document.createEvent(eventType);\n    evt.initEvent(eventName);\n    return element.dispatchEvent(evt);\n  }\n\n  static addDomEventListener(element, eventName: string, preventDefault: boolean, invoker: any, stopPropagation: boolean = false) {\n    const callback = args => {\n      const obj = {};\n      for (const k in args) {\n        if (k !== 'originalTarget') { //firefox occasionally raises Permission Denied when this property is being stringified\n          obj[k] = args[k];\n        }\n      }\n      const cache = new Set();\n      const json = JSON.stringify(obj, (k, v) => {\n        if (typeof v === 'object' && v !== null) {\n          if (cache.has(v)) {\n            return;\n          }\n          cache.add(v);\n        }\n        if (v instanceof Node) return 'Node';\n        if (v instanceof Window) return 'Window';\n        return v;\n      }, ' ');\n\n      setTimeout(function () { invoker.invokeMethodAsync('Invoke', json) }, 0);\n      if (preventDefault === true) {\n        args.preventDefault();\n      }\n      if (stopPropagation) {\n        args.stopPropagation();\n      }\n    };\n\n    const dom = domInfoHelper.get(element);\n    const key = `${eventName}-${invoker._id}`;\n\n    if (eventName === 'resize') {\n      dom[`e_${key}`] = this.debounce(() => callback({ innerWidth: window.innerWidth, innerHeight: window.innerHeight }), 200, false);\n    } else {\n      dom[`e_${key}`] = callback;\n    }\n\n    dom[`i_${key}`] = invoker;\n    if (dom && dom.addEventListener) {\n      (dom as HTMLElement).addEventListener(eventName, dom[`e_${key}`]);\n    }\n  }\n\n  static addDomEventListenerToFirstChild(element, eventName, preventDefault, invoker) {\n    const dom = domInfoHelper.get(element);\n\n    if (dom && dom.firstElementChild) {\n      this.addDomEventListener(dom.firstElementChild, eventName, preventDefault, invoker);\n    }\n  }\n\n  static removeDomEventListener(element, eventName: string, invoker) {\n    const dom = domInfoHelper.get(element);\n    const key = `${eventName}-${invoker._id}`;\n\n    if (dom) {\n      dom.removeEventListener(eventName, dom[`e_${key}`]);\n      //dom[`i_${key}`].dispose();\n    }\n  }\n\n  static addPreventKeys(inputElement, keys: string[]) {\n    if (inputElement) {\n      const dom = domInfoHelper.get(inputElement);\n      keys = keys.map(function (x) { return x.toUpperCase(); })\n      state.eventCallbackRegistry[inputElement.id + \"keydown\"] = (e) => this.preventKeys(e, keys);\n      (dom as HTMLElement).addEventListener(\"keydown\", state.eventCallbackRegistry[inputElement.id + \"keydown\"], false);\n    }\n  }\n\n  static preventKeyOnCondition(e: KeyboardEvent, key: string, check: () => boolean) {\n    if (e.key.toUpperCase() === key.toUpperCase() && check()) {\n      e.preventDefault();\n      return false;\n    }\n  }\n\n  static removePreventKeys(inputElement) {\n    if (inputElement) {\n      const dom = domInfoHelper.get(inputElement);\n      if (dom) {\n        (dom as HTMLElement).removeEventListener(\"keydown\", state.eventCallbackRegistry[inputElement.id + \"keydown\"]);\n        state.eventCallbackRegistry[inputElement.id + \"keydown\"] = null;\n      }\n    }\n  }\n\n  private static debounce(func, wait, immediate) {\n    let timeout;\n    return (...args) => {\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      const context = this;\n      const later = () => {\n        timeout = null;\n        if (!immediate) func.apply(this, args);\n      };\n      const callNow = immediate && !timeout;\n      clearTimeout(timeout);\n      timeout = setTimeout(later, wait);\n      if (callNow) func.apply(context, args);\n    };\n  }\n\n  private static preventKeys(e: KeyboardEvent, keys: string[]) {\n    if (keys.indexOf(e.key.toUpperCase()) !== -1) {\n      e.preventDefault();\n      return false;\n    }\n  }\n}\n","export { infoHelper as domInfoHelper } from './infoHelper';\nexport { manipulationHelper as domManipulationHelper } from './manipulationHelper';\nexport { eventHelper } from './eventHelper';\nexport * as domTypes from './types';","import { domTypes } from './exports'\n\nexport class infoHelper {\n  static getWindow() {\n    return {\n      innerWidth: window.innerWidth,\n      innerHeight: window.innerHeight\n    };\n  }\n\n  static get(element: any) {\n    if (!element) {\n      element = document.body;\n    } else if (typeof element === 'string') {\n      if (element === 'window') {\n        return window;\n      } else if (element === 'document') {\n        return document;\n      }\n      element = document.querySelector(element!)\n    }\n    return element;\n  }\n\n  static getInfo(element: any): domTypes.domInfo {\n    let domElement = this.get(element);\n    if (!domElement) {\n      domElement = {};\n    }\n    const absolutePosition = this.getElementAbsolutePos(domElement);\n    let elementMarginTop = 0;\n    let elementMarginBottom = 0;\n    let elementMarginLeft = 0;\n    let elementMarginRight = 0;\n    if (domElement instanceof HTMLElement) {\n      const style = window.getComputedStyle(domElement);\n      elementMarginTop = parseFloat(style.marginTop);\n      elementMarginBottom = parseFloat(style.marginBottom);\n      elementMarginLeft = parseFloat(style.marginLeft);\n      elementMarginRight = parseFloat(style.marginRight);\n    }\n\n    const result: domTypes.domInfo = {\n      offsetTop: domElement.offsetTop || 0,\n      offsetLeft: domElement.offsetLeft || 0,\n      offsetWidth: domElement.offsetWidth || 0,\n      offsetHeight: domElement.offsetHeight || 0,\n      scrollHeight: domElement.scrollHeight || 0,\n      scrollWidth: domElement.scrollWidth || 0,\n      scrollLeft: domElement.scrollLeft || 0,\n      scrollTop: domElement.scrollTop || 0,\n      clientTop: domElement.clientTop || 0,\n      clientLeft: domElement.clientLeft || 0,\n      clientHeight: domElement.clientHeight || 0,\n      clientWidth: domElement.clientWidth || 0,\n      selectionStart: domElement.selectionStart || 0,\n      absoluteTop: Math.round(absolutePosition.y),\n      absoluteLeft: Math.round(absolutePosition.x),\n      marginTop: elementMarginTop,\n      marginBottom: elementMarginBottom,\n      marginLeft: elementMarginLeft,\n      marginRight: elementMarginRight\n    };\n    return result;\n  }\n\n  static getElementAbsolutePos(element: any): domTypes.position {\n    const res: domTypes.position = {\n      x: 0,\n      y: 0\n    };\n    if (element !== null) {\n      if (element.getBoundingClientRect) {\n        const viewportElement = document.documentElement;\n        const box = element.getBoundingClientRect();\n        const scrollLeft = viewportElement.scrollLeft;\n        const scrollTop = viewportElement.scrollTop;\n\n        res.x = box.left + scrollLeft;\n        res.y = box.top + scrollTop;\n      }\n    }\n    return res;\n  }\n\n  static getBoundingClientRect(element: any): domTypes.domRect {\n    const domElement = this.get(element);\n    if (domElement && domElement.getBoundingClientRect) {\n      const rect = domElement.getBoundingClientRect();\n      // Fixes #1468. This wrapping is necessary for old browsers. Remove this when one day we no longer support them.\n      return {\n        width: rect.width,\n        height: rect.height,\n        top: rect.top,\n        right: rect.right,\n        bottom: rect.bottom,\n        left: rect.left,\n        x: rect.x,\n        y: rect.y\n      };\n    }\n    return null;\n  }\n\n  static getFirstChildDomInfo(element: any) {\n    const domElement = this.get(element);\n    if (domElement) {\n      if (domElement.firstElementChild) {\n        return this.getInfo(domElement.firstElementChild);\n      } else {\n        return this.getInfo(domElement);\n      }\n    }\n    return null;\n  }\n\n  static getActiveElement() {\n    const element = document.activeElement;\n    const id = element.getAttribute(\"id\") || \"\";\n    return id;\n  }\n\n  static getScroll() {\n    return { x: window.pageXOffset, y: window.pageYOffset };\n  }\n\n  static hasFocus(selector) {\n    const dom = this.get(selector);\n    return (document.activeElement === dom);\n  }\n\n  static getInnerText(element) {\n    const dom = this.get(element);\n    if (dom) return dom.innerText;\n    return null;\n  }\n\n  static getMaxZIndex(): number {\n    return Array.from(document.querySelectorAll(\"*\")).reduce((r, e) => Math.max(r, +window.getComputedStyle(e).zIndex || 0), 0)\n  }\n\n  static isFixedPosition(element) {\n    let node = this.get(element);\n    while (node && node.nodeName.toLowerCase() !== 'body') {\n      if (window.getComputedStyle(node).getPropertyValue('position').toLowerCase() === 'fixed') { return true; }\n      node = node.parentNode;\n    }\n    return false;\n  }\n\n  static findAncestorWithZIndex(element: HTMLElement): number {\n    let node = this.get(element);\n    let zIndexAsString: string;\n    let zIndex: number;\n    while (node && node.nodeName.toLowerCase() !== 'body') {\n      zIndexAsString = window.getComputedStyle(node).zIndex;\n      zIndex = Number.parseInt(zIndexAsString);\n      if (!Number.isNaN(zIndex)) {\n        return zIndex;\n      }\n      node = node.parentNode;\n    }\n    return null;\n  }\n\n  static getElementsInfo(elements: any[]): any {\n    const infos = {};\n    elements.forEach(el => {\n      infos[el.id] = this.getInfo(el);\n    })\n\n    return infos;\n  }\n\n  /**\n   * Get all scrollable parents of an element\n   * @param element\n   * @returns\n   */\n  static getScrollableParents(element): HTMLElement[] {\n    const parents = [];\n    let node = this.get(element);\n\n    while (node && node.nodeName.toLowerCase() !== 'body') {\n      const overflowY = window.getComputedStyle(node).overflowY;\n      if (overflowY === 'auto' || overflowY === 'scroll') {\n        parents.push(node);\n      }\n      node = node.parentNode;\n    }\n    return parents;\n  }\n}","import { domInfoHelper } from \"./exports\";\nimport { styleHelper } from \"../styleHelper\";\nimport { state } from \"../stateProvider\";\nimport * as enums from \"../enums\";\n\nlet cachedScrollBarSize: number | undefined = undefined;\nconst scrollIds = new Map<HTMLElement, number>();\n\nexport class manipulationHelper {\n  static addElementToBody(element) {\n    document.body.appendChild(element);\n  }\n\n  static delElementFromBody(element) {\n    document.body.removeChild(element);\n  }\n\n  static addElementTo(addElement, elementSelector, prepend = false): boolean {\n    const parent = domInfoHelper.get(elementSelector);\n    if (parent && addElement) {\n      if (parent instanceof Node && addElement instanceof Node) {\n        if (prepend) parent.insertBefore(addElement, parent.firstChild);\n        else parent.appendChild(addElement);\n        return true;\n      } else {\n        console.log(\"does not implement node\", parent, addElement);\n      }\n    }\n    return false;\n  }\n\n  static delElementFrom(delElementSelector, elementSelector, delay = 0) {\n    setTimeout(() => {\n      const delElement = domInfoHelper.get(delElementSelector);\n      const parent = domInfoHelper.get(elementSelector);\n      if (parent && delElement) {\n        parent.removeChild(delElement);\n      }\n    }, delay);\n  }\n\n  static setDomAttribute(element, attributes) {\n    const dom: HTMLElement = domInfoHelper.get(element);\n    if (dom) {\n      for (const key in attributes) {\n        dom.setAttribute(key, attributes[key]);\n      }\n    }\n  }\n\n  static copyElement(element) {\n    if (!this.copyElementAsRichText(element)) {\n      this.copy(element.innerText);\n    }\n  }\n\n  private static copyElementAsRichText(element) {\n    const selection = document.getSelection();\n    if (selection.rangeCount > 0) {\n      selection.removeAllRanges();\n    }\n    const range = document.createRange();\n    range.selectNode(element);\n    selection.addRange(range);\n    try {\n      const successful = document.execCommand('copy');\n      selection.removeAllRanges();\n      return successful;\n    } catch (err) {\n      selection.removeAllRanges();\n      return false;\n    }\n  }\n\n  static copy(text) {\n    if (!navigator.clipboard) {\n      this.fallbackCopyTextToClipboard(text);\n      return;\n    }\n    navigator.clipboard.writeText(text).then(\n      function () {\n        console.log(\"Async: Copying to clipboard was successful!\");\n      },\n      function (err) {\n        console.error(\"Async: Could not copy text: \", err);\n      }\n    );\n  }\n\n  private static fallbackCopyTextToClipboard(text) {\n    const textArea = document.createElement(\"textarea\");\n    textArea.value = text;\n\n    // Avoid scrolling to bottom\n    textArea.style.top = \"0\";\n    textArea.style.left = \"0\";\n    textArea.style.position = \"fixed\";\n\n    document.body.appendChild(textArea);\n    textArea.focus();\n    textArea.select();\n\n    try {\n      const successful = document.execCommand('copy');\n      const msg = successful ? 'successful' : 'unsuccessful';\n      console.log('Fallback: Copying text command was ' + msg);\n    } catch (err) {\n      console.error(\"Fallback: Oops, unable to copy\", err);\n    }\n\n    document.body.removeChild(textArea);\n  }\n\n  static focus(selector, noScroll: boolean = false, option: enums.FocusBehavior = enums.FocusBehavior.FocusAtLast) {\n    const dom = domInfoHelper.get(selector);\n\n    if (!(dom instanceof HTMLElement))\n      throw new Error(\"Unable to focus on invalid element.\");\n\n    dom.focus({\n      preventScroll: noScroll,\n    });\n\n    if (dom instanceof HTMLInputElement || dom instanceof HTMLTextAreaElement) {\n      switch (option) {\n        case enums.FocusBehavior.FocusAndSelectAll:\n          dom.select();\n          break;\n        case enums.FocusBehavior.FocusAtFirst:\n          dom.setSelectionRange(0, 0);\n          break;\n        case enums.FocusBehavior.FocusAtLast:\n          dom.setSelectionRange(-1, -1);\n          break;\n      }\n    }\n  }\n\n  static blur(selector) {\n    const dom = domInfoHelper.get(selector);\n    if (dom) {\n      dom.blur();\n    }\n  }\n\n  static scrollTo(selector: Element | string, parentElement?: HTMLElement) {\n    const element = domInfoHelper.get(selector);\n    if (parentElement && element && element instanceof HTMLElement) {\n      parentElement.scrollTop = element.offsetTop;\n    } else if (element && element instanceof HTMLElement) {\n      element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });\n    }\n  }\n\n  static smoothScrollTo(\n    selector: Element | string,\n    parentElement: HTMLElement,\n    duration: number\n  ) {\n    const element = domInfoHelper.get(selector);\n    const to = element.offsetTop;\n    if (scrollIds.get(parentElement)) {\n      cancelAnimationFrame(scrollIds.get(parentElement)!);\n    }\n    // jump to target if duration zero\n    if (duration <= 0) {\n      scrollIds.set(\n        parentElement,\n        requestAnimationFrame(() => {\n          parentElement.scrollTop = to;\n        }),\n      );\n\n      return;\n    }\n    const difference = to - parentElement.scrollTop;\n    const perTick = (difference / duration) * 10;\n\n    scrollIds.set(\n      parentElement,\n      requestAnimationFrame(() => {\n        parentElement.scrollTop += perTick;\n        if (parentElement.scrollTop !== to) {\n          manipulationHelper.smoothScrollTo(selector, parentElement, duration - 10);\n        }\n      }),\n    );\n  }\n\n  static slideTo(targetPageY) {\n    const timer = setInterval(function () {\n      const currentY =\n        document.documentElement.scrollTop || document.body.scrollTop;\n      const distance =\n        targetPageY > currentY\n          ? targetPageY - currentY\n          : currentY - targetPageY;\n      const speed = Math.ceil(distance / 10);\n      if (currentY === targetPageY) {\n        clearInterval(timer);\n      } else {\n        window.scrollTo(\n          0,\n          targetPageY > currentY ? currentY + speed : currentY - speed\n        );\n      }\n    }, 10);\n  }\n\n  //copied from https://www.telerik.com/forums/trigger-tab-key-when-enter-key-is-pressed\n  static invokeTabKey() {\n    const currInput = document.activeElement;\n    if (currInput.tagName.toLowerCase() == \"input\") {\n      const inputs = document.getElementsByTagName(\"input\");\n      for (let i = 0; i < inputs.length; i++) {\n        if (inputs[i] == currInput) {\n          const next = inputs[i + 1];\n          if (next && next.focus) {\n            next.focus();\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  static disableBodyScroll() {\n    const body = document.body;\n    const oldBodyCache = {};\n    [\"position\", \"width\", \"overflow\"].forEach((key) => {\n      oldBodyCache[key] = body.style[key];\n    });\n    state.oldBodyCacheStack.push(oldBodyCache);\n    const scrollBarSize = this.getScrollBarSize();\n    styleHelper.css(body, {\n      position: \"relative\",\n      width:\n        this.hasScrollbar() && scrollBarSize > 0\n          ? `calc(100% - ${scrollBarSize}px)`\n          : null,\n      overflow: \"hidden\",\n    });\n    styleHelper.addCls(document.body, \"ant-scrolling-effect\");\n  }\n\n  static enableBodyScroll(force: boolean | undefined) {\n    if (force) {\n      state.oldBodyCacheStack = [];\n    }\n\n    const oldBodyCache = state.oldBodyCacheStack.length > 0 ? state.oldBodyCacheStack.pop() : {};\n    styleHelper.css(document.body,\n      {\n        \"position\": oldBodyCache[\"position\"] ?? null,\n        \"width\": oldBodyCache[\"width\"] ?? null,\n        \"overflow\": oldBodyCache[\"overflow\"] ?? null\n      });\n    styleHelper.removeCls(document.body, \"ant-scrolling-effect\");\n  }\n\n  static hasScrollbar = () => {\n    const overflow = document.body.style.overflow;\n    if (overflow && overflow === \"hidden\") return false;\n    return (\n      document.body.scrollHeight >\n      (window.innerHeight || document.documentElement.clientHeight)\n    );\n  };\n\n  /**\n   * getScrollBarSize\n   * source https://github.com/react-component/util/blob/master/src/getScrollBarSize.tsx\n   *\n   * @param fresh force get scrollBar size and don't use cache\n   * @returns\n   */\n  static getScrollBarSize = (fresh: boolean = false) => {\n    if (typeof document === \"undefined\") {\n      return 0;\n    }\n\n    if (fresh || cachedScrollBarSize === undefined) {\n      const inner = document.createElement(\"div\");\n      inner.style.width = \"100%\";\n      inner.style.height = \"200px\";\n\n      const outer = document.createElement(\"div\");\n      const outerStyle = outer.style;\n\n      outerStyle.position = \"absolute\";\n      outerStyle.top = \"0\";\n      outerStyle.left = \"0\";\n      outerStyle.pointerEvents = \"none\";\n      outerStyle.visibility = \"hidden\";\n      outerStyle.width = \"200px\";\n      outerStyle.height = \"150px\";\n      outerStyle.overflow = \"hidden\";\n\n      outer.appendChild(inner);\n\n      document.body.appendChild(outer);\n\n      const widthContained = inner.offsetWidth;\n      outer.style.overflow = \"scroll\";\n      let widthScroll = inner.offsetWidth;\n\n      if (widthContained === widthScroll) {\n        widthScroll = outer.clientWidth;\n      }\n\n      document.body.removeChild(outer);\n      cachedScrollBarSize = widthContained - widthScroll;\n    }\n\n    if (manipulationHelper.hasScrollbar()){\n      document.documentElement.style.setProperty('--ant-scrollbar-width', `${cachedScrollBarSize}px`);\n    }\n  \n    return cachedScrollBarSize;\n  };\n}\n","\"use strict\";\n\nexports.__esModule = true;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZVJvb3QiOiIifQ==","export enum FocusBehavior {\n  /// <summary>\n  /// When focuses, cursor will move to the last character. \n  /// This is default behavior.\n  /// </summary>\n  FocusAtLast,\n  /// <summary>\n  /// When focuses, cursor will move to the first character\n  /// </summary>\n  FocusAtFirst,\n  /// <summary>\n  /// When focuses, the content will be selected\n  /// </summary>\n  FocusAndSelectAll\n}","import { eventCallback } from './dom/types'\n\n//Singleton\nexport class State {\n  private static instance: State;\n\n    //Stores references to dot net objects (components wrapped in DotNetObjectReference)\n  objReferenceDict: { [key: string]: any } = {};\n\n    //All object references must later be disposed by JS code or by .NET code.\n  disposeObj(objReferenceName) {\n    delete this.objReferenceDict[objReferenceName];\n  }\n\n    //Stores callback for events based on a key. Needed when\n    //Event needs to be removed - the callback can be retrieved and\n    //used to remove the event in question\n  eventCallbackRegistry: { [key: string]: eventCallback } = {};\n\n  oldBodyCacheStack = [];\n\n  private constructor() { }\n\n  static getInstance() {\n    if (!this.instance) {\n      this.instance = new State();\n    }\n    return this.instance;\n  }\n}\n\nexport const state = State.getInstance();","import { infoHelper as domInfoHelper } from './dom/infoHelper';\n\nexport class styleHelper {\n  static addCls(selector: Element | string, className: string | Array<string>) {\n    const element = domInfoHelper.get(selector);\n    if (element) {\n      if (typeof className === \"string\") {\n        element.classList.add(className);\n      } else {\n        element.classList.add(...className);\n      }\n    }\n  }\n\n  static removeCls(selector: Element | string, clsName: string | Array<string>) {\n    const element = domInfoHelper.get(selector);\n    if (element) {\n      if (typeof clsName === \"string\") {\n        element.classList.remove(clsName);\n      } else {\n        element.classList.remove(...clsName);\n      }\n    }\n  }\n\n  static addClsToFirstChild(element: Element | string, className: string): void {\n    const domElement = domInfoHelper.get(element);\n    if (domElement && domElement.firstElementChild) {\n      domElement.firstElementChild.classList.add(className);\n    }\n  }\n\n  static removeClsFromFirstChild(element: Element | string, className): void {\n    const domElement = domInfoHelper.get(element);\n    if (domElement && domElement.firstElementChild) {\n      domElement.firstElementChild.classList.remove(className);\n    }\n  }\n\n  static matchMedia(query: string): boolean {\n    return window.matchMedia(query).matches;\n  }\n\n  static getStyle(element, styleProp: string) {\n    if (element.currentStyle)\n      return element.currentStyle[styleProp];\n    else if (window.getComputedStyle)\n      return document.defaultView.getComputedStyle(element, null).getPropertyValue(styleProp);\n  }\n\n  //Referenced in Caret, class Mirror\n  static css(element: HTMLElement, name: string | object, value: string | null = null) {\n    if (typeof name === 'string') {\n      if (value === null) {\n        const style = name;\n        const cssAttributes = style.split(\";\");\n        for (let i = 0; i < cssAttributes.length; i++) {\n          const cssAttribute = cssAttributes[i];\n          if (!cssAttribute) continue;\n          const attribute = cssAttribute.split(\":\");\n          element.style.setProperty(attribute[0], attribute[1]);\n        }\n        return;\n      }\n      element.style.setProperty(name, value);\n    } else {\n      for (const key in name) {\n        if (Object.prototype.hasOwnProperty.call(name, key)) {\n          element.style.setProperty(key, name[key]);\n        }\n      }\n    }\n  }\n}","import * as interop from \"./core/JsInterop/interop\";\n\ndeclare global {\n  interface Window {\n    AntDesign: any;\n  }\n}\n\nwindow.AntDesign = {\n  interop,\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar tinycolor = require('@ctrl/tinycolor');\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n  index: 7,\n  opacity: 0.15\n}, {\n  index: 6,\n  opacity: 0.25\n}, {\n  index: 5,\n  opacity: 0.3\n}, {\n  index: 5,\n  opacity: 0.45\n}, {\n  index: 5,\n  opacity: 0.65\n}, {\n  index: 5,\n  opacity: 0.85\n}, {\n  index: 4,\n  opacity: 0.9\n}, {\n  index: 3,\n  opacity: 0.95\n}, {\n  index: 2,\n  opacity: 0.97\n}, {\n  index: 1,\n  opacity: 0.98\n}]; // Wrapper function ported from TinyColor.prototype.toHsv\n// Keep it here because of `hsv.h * 360`\n\nfunction toHsv(_ref) {\n  var r = _ref.r,\n      g = _ref.g,\n      b = _ref.b;\n  var hsv = tinycolor.rgbToHsv(r, g, b);\n  return {\n    h: hsv.h * 360,\n    s: hsv.s,\n    v: hsv.v\n  };\n} // Wrapper function ported from TinyColor.prototype.toHexString\n// Keep it here because of the prefix `#`\n\n\nfunction toHex(_ref2) {\n  var r = _ref2.r,\n      g = _ref2.g,\n      b = _ref2.b;\n  return \"#\".concat(tinycolor.rgbToHex(r, g, b, false));\n} // Wrapper function ported from TinyColor.prototype.mix, not treeshakable.\n// Amount in range [0, 1]\n// Assume color1 & color2 has no alpha, since the following src code did so.\n\n\nfunction mix(rgb1, rgb2, amount) {\n  var p = amount / 100;\n  var rgb = {\n    r: (rgb2.r - rgb1.r) * p + rgb1.r,\n    g: (rgb2.g - rgb1.g) * p + rgb1.g,\n    b: (rgb2.b - rgb1.b) * p + rgb1.b\n  };\n  return rgb;\n}\n\nfunction getHue(hsv, i, light) {\n  var hue; // 根据色相不同,色相转向不同\n\n  if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n    hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n  } else {\n    hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n  }\n\n  if (hue < 0) {\n    hue += 360;\n  } else if (hue >= 360) {\n    hue -= 360;\n  }\n\n  return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n  // grey color don't change saturation\n  if (hsv.h === 0 && hsv.s === 0) {\n    return hsv.s;\n  }\n\n  var saturation;\n\n  if (light) {\n    saturation = hsv.s - saturationStep * i;\n  } else if (i === darkColorCount) {\n    saturation = hsv.s + saturationStep;\n  } else {\n    saturation = hsv.s + saturationStep2 * i;\n  } // 边界值修正\n\n\n  if (saturation > 1) {\n    saturation = 1;\n  } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n  if (light && i === lightColorCount && saturation > 0.1) {\n    saturation = 0.1;\n  }\n\n  if (saturation < 0.06) {\n    saturation = 0.06;\n  }\n\n  return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n  var value;\n\n  if (light) {\n    value = hsv.v + brightnessStep1 * i;\n  } else {\n    value = hsv.v - brightnessStep2 * i;\n  }\n\n  if (value > 1) {\n    value = 1;\n  }\n\n  return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var patterns = [];\n  var pColor = tinycolor.inputToRGB(color);\n\n  for (var i = lightColorCount; i > 0; i -= 1) {\n    var hsv = toHsv(pColor);\n    var colorString = toHex(tinycolor.inputToRGB({\n      h: getHue(hsv, i, true),\n      s: getSaturation(hsv, i, true),\n      v: getValue(hsv, i, true)\n    }));\n    patterns.push(colorString);\n  }\n\n  patterns.push(toHex(pColor));\n\n  for (var _i = 1; _i <= darkColorCount; _i += 1) {\n    var _hsv = toHsv(pColor);\n\n    var _colorString = toHex(tinycolor.inputToRGB({\n      h: getHue(_hsv, _i),\n      s: getSaturation(_hsv, _i),\n      v: getValue(_hsv, _i)\n    }));\n\n    patterns.push(_colorString);\n  } // dark theme patterns\n\n\n  if (opts.theme === 'dark') {\n    return darkColorMap.map(function (_ref3) {\n      var index = _ref3.index,\n          opacity = _ref3.opacity;\n      var darkColorString = toHex(mix(tinycolor.inputToRGB(opts.backgroundColor || '#141414'), tinycolor.inputToRGB(patterns[index]), opacity * 100));\n      return darkColorString;\n    });\n  }\n\n  return patterns;\n}\n\nvar presetPrimaryColors = {\n  red: '#F5222D',\n  volcano: '#FA541C',\n  orange: '#FA8C16',\n  gold: '#FAAD14',\n  yellow: '#FADB14',\n  lime: '#A0D911',\n  green: '#52C41A',\n  cyan: '#13C2C2',\n  blue: '#1890FF',\n  geekblue: '#2F54EB',\n  purple: '#722ED1',\n  magenta: '#EB2F96',\n  grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n  presetPalettes[key] = generate(presetPrimaryColors[key]);\n  presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n  presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n    theme: 'dark',\n    backgroundColor: '#141414'\n  });\n  presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\nexports.blue = blue;\nexports.cyan = cyan;\nexports.geekblue = geekblue;\nexports.generate = generate;\nexports.gold = gold;\nexports.green = green;\nexports.grey = grey;\nexports.lime = lime;\nexports.magenta = magenta;\nexports.orange = orange;\nexports.presetDarkPalettes = presetDarkPalettes;\nexports.presetPalettes = presetPalettes;\nexports.presetPrimaryColors = presetPrimaryColors;\nexports.purple = purple;\nexports.red = red;\nexports.volcano = volcano;\nexports.yellow = yellow;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.numberInputToObject = exports.parseIntFromHex = exports.convertHexToDecimal = exports.convertDecimalToHex = exports.rgbaToArgbHex = exports.rgbaToHex = exports.rgbToHex = exports.hsvToRgb = exports.rgbToHsv = exports.hslToRgb = exports.rgbToHsl = exports.rgbToRgb = void 0;\nvar util_1 = require(\"./util\");\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * <http://www.w3.org/TR/css3-color/>\n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nfunction rgbToRgb(r, g, b) {\n    return {\n        r: (0, util_1.bound01)(r, 255) * 255,\n        g: (0, util_1.bound01)(g, 255) * 255,\n        b: (0, util_1.bound01)(b, 255) * 255,\n    };\n}\nexports.rgbToRgb = rgbToRgb;\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nfunction rgbToHsl(r, g, b) {\n    r = (0, util_1.bound01)(r, 255);\n    g = (0, util_1.bound01)(g, 255);\n    b = (0, util_1.bound01)(b, 255);\n    var max = Math.max(r, g, b);\n    var min = Math.min(r, g, b);\n    var h = 0;\n    var s = 0;\n    var l = (max + min) / 2;\n    if (max === min) {\n        s = 0;\n        h = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch (max) {\n            case r:\n                h = (g - b) / d + (g < b ? 6 : 0);\n                break;\n            case g:\n                h = (b - r) / d + 2;\n                break;\n            case b:\n                h = (r - g) / d + 4;\n                break;\n            default:\n                break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, l: l };\n}\nexports.rgbToHsl = rgbToHsl;\nfunction hue2rgb(p, q, t) {\n    if (t < 0) {\n        t += 1;\n    }\n    if (t > 1) {\n        t -= 1;\n    }\n    if (t < 1 / 6) {\n        return p + (q - p) * (6 * t);\n    }\n    if (t < 1 / 2) {\n        return q;\n    }\n    if (t < 2 / 3) {\n        return p + (q - p) * (2 / 3 - t) * 6;\n    }\n    return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nfunction hslToRgb(h, s, l) {\n    var r;\n    var g;\n    var b;\n    h = (0, util_1.bound01)(h, 360);\n    s = (0, util_1.bound01)(s, 100);\n    l = (0, util_1.bound01)(l, 100);\n    if (s === 0) {\n        // achromatic\n        g = l;\n        b = l;\n        r = l;\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1 / 3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1 / 3);\n    }\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\nexports.hslToRgb = hslToRgb;\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nfunction rgbToHsv(r, g, b) {\n    r = (0, util_1.bound01)(r, 255);\n    g = (0, util_1.bound01)(g, 255);\n    b = (0, util_1.bound01)(b, 255);\n    var max = Math.max(r, g, b);\n    var min = Math.min(r, g, b);\n    var h = 0;\n    var v = max;\n    var d = max - min;\n    var s = max === 0 ? 0 : d / max;\n    if (max === min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch (max) {\n            case r:\n                h = (g - b) / d + (g < b ? 6 : 0);\n                break;\n            case g:\n                h = (b - r) / d + 2;\n                break;\n            case b:\n                h = (r - g) / d + 4;\n                break;\n            default:\n                break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\nexports.rgbToHsv = rgbToHsv;\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nfunction hsvToRgb(h, s, v) {\n    h = (0, util_1.bound01)(h, 360) * 6;\n    s = (0, util_1.bound01)(s, 100);\n    v = (0, util_1.bound01)(v, 100);\n    var i = Math.floor(h);\n    var f = h - i;\n    var p = v * (1 - s);\n    var q = v * (1 - f * s);\n    var t = v * (1 - (1 - f) * s);\n    var mod = i % 6;\n    var r = [v, q, p, p, t, v][mod];\n    var g = [t, v, v, q, p, p][mod];\n    var b = [p, p, t, v, v, q][mod];\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\nexports.hsvToRgb = hsvToRgb;\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nfunction rgbToHex(r, g, b, allow3Char) {\n    var hex = [\n        (0, util_1.pad2)(Math.round(r).toString(16)),\n        (0, util_1.pad2)(Math.round(g).toString(16)),\n        (0, util_1.pad2)(Math.round(b).toString(16)),\n    ];\n    // Return a 3 character hex if possible\n    if (allow3Char &&\n        hex[0].startsWith(hex[0].charAt(1)) &&\n        hex[1].startsWith(hex[1].charAt(1)) &&\n        hex[2].startsWith(hex[2].charAt(1))) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n    return hex.join('');\n}\nexports.rgbToHex = rgbToHex;\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n    var hex = [\n        (0, util_1.pad2)(Math.round(r).toString(16)),\n        (0, util_1.pad2)(Math.round(g).toString(16)),\n        (0, util_1.pad2)(Math.round(b).toString(16)),\n        (0, util_1.pad2)(convertDecimalToHex(a)),\n    ];\n    // Return a 4 character hex if possible\n    if (allow4Char &&\n        hex[0].startsWith(hex[0].charAt(1)) &&\n        hex[1].startsWith(hex[1].charAt(1)) &&\n        hex[2].startsWith(hex[2].charAt(1)) &&\n        hex[3].startsWith(hex[3].charAt(1))) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n    return hex.join('');\n}\nexports.rgbaToHex = rgbaToHex;\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nfunction rgbaToArgbHex(r, g, b, a) {\n    var hex = [\n        (0, util_1.pad2)(convertDecimalToHex(a)),\n        (0, util_1.pad2)(Math.round(r).toString(16)),\n        (0, util_1.pad2)(Math.round(g).toString(16)),\n        (0, util_1.pad2)(Math.round(b).toString(16)),\n    ];\n    return hex.join('');\n}\nexports.rgbaToArgbHex = rgbaToArgbHex;\n/** Converts a decimal to a hex value */\nfunction convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\nexports.convertDecimalToHex = convertDecimalToHex;\n/** Converts a hex value to a decimal */\nfunction convertHexToDecimal(h) {\n    return parseIntFromHex(h) / 255;\n}\nexports.convertHexToDecimal = convertHexToDecimal;\n/** Parse a base-16 hex value into a base-10 integer */\nfunction parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\nexports.parseIntFromHex = parseIntFromHex;\nfunction numberInputToObject(color) {\n    return {\n        r: color >> 16,\n        g: (color & 0xff00) >> 8,\n        b: color & 0xff,\n    };\n}\nexports.numberInputToObject = numberInputToObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.names = void 0;\n// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexports.names = {\n    aliceblue: '#f0f8ff',\n    antiquewhite: '#faebd7',\n    aqua: '#00ffff',\n    aquamarine: '#7fffd4',\n    azure: '#f0ffff',\n    beige: '#f5f5dc',\n    bisque: '#ffe4c4',\n    black: '#000000',\n    blanchedalmond: '#ffebcd',\n    blue: '#0000ff',\n    blueviolet: '#8a2be2',\n    brown: '#a52a2a',\n    burlywood: '#deb887',\n    cadetblue: '#5f9ea0',\n    chartreuse: '#7fff00',\n    chocolate: '#d2691e',\n    coral: '#ff7f50',\n    cornflowerblue: '#6495ed',\n    cornsilk: '#fff8dc',\n    crimson: '#dc143c',\n    cyan: '#00ffff',\n    darkblue: '#00008b',\n    darkcyan: '#008b8b',\n    darkgoldenrod: '#b8860b',\n    darkgray: '#a9a9a9',\n    darkgreen: '#006400',\n    darkgrey: '#a9a9a9',\n    darkkhaki: '#bdb76b',\n    darkmagenta: '#8b008b',\n    darkolivegreen: '#556b2f',\n    darkorange: '#ff8c00',\n    darkorchid: '#9932cc',\n    darkred: '#8b0000',\n    darksalmon: '#e9967a',\n    darkseagreen: '#8fbc8f',\n    darkslateblue: '#483d8b',\n    darkslategray: '#2f4f4f',\n    darkslategrey: '#2f4f4f',\n    darkturquoise: '#00ced1',\n    darkviolet: '#9400d3',\n    deeppink: '#ff1493',\n    deepskyblue: '#00bfff',\n    dimgray: '#696969',\n    dimgrey: '#696969',\n    dodgerblue: '#1e90ff',\n    firebrick: '#b22222',\n    floralwhite: '#fffaf0',\n    forestgreen: '#228b22',\n    fuchsia: '#ff00ff',\n    gainsboro: '#dcdcdc',\n    ghostwhite: '#f8f8ff',\n    goldenrod: '#daa520',\n    gold: '#ffd700',\n    gray: '#808080',\n    green: '#008000',\n    greenyellow: '#adff2f',\n    grey: '#808080',\n    honeydew: '#f0fff0',\n    hotpink: '#ff69b4',\n    indianred: '#cd5c5c',\n    indigo: '#4b0082',\n    ivory: '#fffff0',\n    khaki: '#f0e68c',\n    lavenderblush: '#fff0f5',\n    lavender: '#e6e6fa',\n    lawngreen: '#7cfc00',\n    lemonchiffon: '#fffacd',\n    lightblue: '#add8e6',\n    lightcoral: '#f08080',\n    lightcyan: '#e0ffff',\n    lightgoldenrodyellow: '#fafad2',\n    lightgray: '#d3d3d3',\n    lightgreen: '#90ee90',\n    lightgrey: '#d3d3d3',\n    lightpink: '#ffb6c1',\n    lightsalmon: '#ffa07a',\n    lightseagreen: '#20b2aa',\n    lightskyblue: '#87cefa',\n    lightslategray: '#778899',\n    lightslategrey: '#778899',\n    lightsteelblue: '#b0c4de',\n    lightyellow: '#ffffe0',\n    lime: '#00ff00',\n    limegreen: '#32cd32',\n    linen: '#faf0e6',\n    magenta: '#ff00ff',\n    maroon: '#800000',\n    mediumaquamarine: '#66cdaa',\n    mediumblue: '#0000cd',\n    mediumorchid: '#ba55d3',\n    mediumpurple: '#9370db',\n    mediumseagreen: '#3cb371',\n    mediumslateblue: '#7b68ee',\n    mediumspringgreen: '#00fa9a',\n    mediumturquoise: '#48d1cc',\n    mediumvioletred: '#c71585',\n    midnightblue: '#191970',\n    mintcream: '#f5fffa',\n    mistyrose: '#ffe4e1',\n    moccasin: '#ffe4b5',\n    navajowhite: '#ffdead',\n    navy: '#000080',\n    oldlace: '#fdf5e6',\n    olive: '#808000',\n    olivedrab: '#6b8e23',\n    orange: '#ffa500',\n    orangered: '#ff4500',\n    orchid: '#da70d6',\n    palegoldenrod: '#eee8aa',\n    palegreen: '#98fb98',\n    paleturquoise: '#afeeee',\n    palevioletred: '#db7093',\n    papayawhip: '#ffefd5',\n    peachpuff: '#ffdab9',\n    peru: '#cd853f',\n    pink: '#ffc0cb',\n    plum: '#dda0dd',\n    powderblue: '#b0e0e6',\n    purple: '#800080',\n    rebeccapurple: '#663399',\n    red: '#ff0000',\n    rosybrown: '#bc8f8f',\n    royalblue: '#4169e1',\n    saddlebrown: '#8b4513',\n    salmon: '#fa8072',\n    sandybrown: '#f4a460',\n    seagreen: '#2e8b57',\n    seashell: '#fff5ee',\n    sienna: '#a0522d',\n    silver: '#c0c0c0',\n    skyblue: '#87ceeb',\n    slateblue: '#6a5acd',\n    slategray: '#708090',\n    slategrey: '#708090',\n    snow: '#fffafa',\n    springgreen: '#00ff7f',\n    steelblue: '#4682b4',\n    tan: '#d2b48c',\n    teal: '#008080',\n    thistle: '#d8bfd8',\n    tomato: '#ff6347',\n    turquoise: '#40e0d0',\n    violet: '#ee82ee',\n    wheat: '#f5deb3',\n    white: '#ffffff',\n    whitesmoke: '#f5f5f5',\n    yellow: '#ffff00',\n    yellowgreen: '#9acd32',\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidCSSUnit = exports.stringInputToObject = exports.inputToRGB = void 0;\n/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nvar conversion_1 = require(\"./conversion\");\nvar css_color_names_1 = require(\"./css-color-names\");\nvar util_1 = require(\"./util\");\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nfunction inputToRGB(color) {\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n    if (typeof color === 'string') {\n        color = stringInputToObject(color);\n    }\n    if (typeof color === 'object') {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = (0, conversion_1.rgbToRgb)(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = (0, util_1.convertToPercentage)(color.s);\n            v = (0, util_1.convertToPercentage)(color.v);\n            rgb = (0, conversion_1.hsvToRgb)(color.h, s, v);\n            ok = true;\n            format = 'hsv';\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = (0, util_1.convertToPercentage)(color.s);\n            l = (0, util_1.convertToPercentage)(color.l);\n            rgb = (0, conversion_1.hslToRgb)(color.h, s, l);\n            ok = true;\n            format = 'hsl';\n        }\n        if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n            a = color.a;\n        }\n    }\n    a = (0, util_1.boundAlpha)(a);\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: Math.min(255, Math.max(rgb.r, 0)),\n        g: Math.min(255, Math.max(rgb.g, 0)),\n        b: Math.min(255, Math.max(rgb.b, 0)),\n        a: a,\n    };\n}\nexports.inputToRGB = inputToRGB;\n// <http://www.w3.org/TR/css3-values/#integers>\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n    CSS_UNIT: new RegExp(CSS_UNIT),\n    rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n    rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n    hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n    hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n    hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n    hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n    hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing.  Take in a number of formats, and output an object\n * based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nfunction stringInputToObject(color) {\n    color = color.trim().toLowerCase();\n    if (color.length === 0) {\n        return false;\n    }\n    var named = false;\n    if (css_color_names_1.names[color]) {\n        color = css_color_names_1.names[color];\n        named = true;\n    }\n    else if (color === 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n    }\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match = matchers.rgb.exec(color);\n    if (match) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    match = matchers.rgba.exec(color);\n    if (match) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    match = matchers.hsl.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    match = matchers.hsla.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    match = matchers.hsv.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    match = matchers.hsva.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    match = matchers.hex8.exec(color);\n    if (match) {\n        return {\n            r: (0, conversion_1.parseIntFromHex)(match[1]),\n            g: (0, conversion_1.parseIntFromHex)(match[2]),\n            b: (0, conversion_1.parseIntFromHex)(match[3]),\n            a: (0, conversion_1.convertHexToDecimal)(match[4]),\n            format: named ? 'name' : 'hex8',\n        };\n    }\n    match = matchers.hex6.exec(color);\n    if (match) {\n        return {\n            r: (0, conversion_1.parseIntFromHex)(match[1]),\n            g: (0, conversion_1.parseIntFromHex)(match[2]),\n            b: (0, conversion_1.parseIntFromHex)(match[3]),\n            format: named ? 'name' : 'hex',\n        };\n    }\n    match = matchers.hex4.exec(color);\n    if (match) {\n        return {\n            r: (0, conversion_1.parseIntFromHex)(match[1] + match[1]),\n            g: (0, conversion_1.parseIntFromHex)(match[2] + match[2]),\n            b: (0, conversion_1.parseIntFromHex)(match[3] + match[3]),\n            a: (0, conversion_1.convertHexToDecimal)(match[4] + match[4]),\n            format: named ? 'name' : 'hex8',\n        };\n    }\n    match = matchers.hex3.exec(color);\n    if (match) {\n        return {\n            r: (0, conversion_1.parseIntFromHex)(match[1] + match[1]),\n            g: (0, conversion_1.parseIntFromHex)(match[2] + match[2]),\n            b: (0, conversion_1.parseIntFromHex)(match[3] + match[3]),\n            format: named ? 'name' : 'hex',\n        };\n    }\n    return false;\n}\nexports.stringInputToObject = stringInputToObject;\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nfunction isValidCSSUnit(color) {\n    return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\nexports.isValidCSSUnit = isValidCSSUnit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.legacyRandom = exports.fromRatio = void 0;\nvar index_1 = require(\"./index\");\nvar util_1 = require(\"./util\");\n/**\n * If input is an object, force 1 into \"1.0\" to handle ratios properly\n * String input requires \"1.0\" as input, so 1 will be treated as 1\n */\nfunction fromRatio(ratio, opts) {\n    var newColor = {\n        r: (0, util_1.convertToPercentage)(ratio.r),\n        g: (0, util_1.convertToPercentage)(ratio.g),\n        b: (0, util_1.convertToPercentage)(ratio.b),\n    };\n    if (ratio.a !== undefined) {\n        newColor.a = Number(ratio.a);\n    }\n    return new index_1.TinyColor(newColor, opts);\n}\nexports.fromRatio = fromRatio;\n/** old random function */\nfunction legacyRandom() {\n    return new index_1.TinyColor({\n        r: Math.random(),\n        g: Math.random(),\n        b: Math.random(),\n    });\n}\nexports.legacyRandom = legacyRandom;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tinycolor = exports.TinyColor = void 0;\nvar conversion_1 = require(\"./conversion\");\nvar css_color_names_1 = require(\"./css-color-names\");\nvar format_input_1 = require(\"./format-input\");\nvar util_1 = require(\"./util\");\nvar TinyColor = /** @class */ (function () {\n    function TinyColor(color, opts) {\n        if (color === void 0) { color = ''; }\n        if (opts === void 0) { opts = {}; }\n        var _a;\n        // If input is already a tinycolor, return itself\n        if (color instanceof TinyColor) {\n            // eslint-disable-next-line no-constructor-return\n            return color;\n        }\n        if (typeof color === 'number') {\n            color = (0, conversion_1.numberInputToObject)(color);\n        }\n        this.originalInput = color;\n        var rgb = (0, format_input_1.inputToRGB)(color);\n        this.originalInput = color;\n        this.r = rgb.r;\n        this.g = rgb.g;\n        this.b = rgb.b;\n        this.a = rgb.a;\n        this.roundA = Math.round(100 * this.a) / 100;\n        this.format = (_a = opts.format) !== null && _a !== void 0 ? _a : rgb.format;\n        this.gradientType = opts.gradientType;\n        // Don't let the range of [0,255] come back in [0,1].\n        // Potentially lose a little bit of precision here, but will fix issues where\n        // .5 gets interpreted as half of the total, instead of half of 1\n        // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n        if (this.r < 1) {\n            this.r = Math.round(this.r);\n        }\n        if (this.g < 1) {\n            this.g = Math.round(this.g);\n        }\n        if (this.b < 1) {\n            this.b = Math.round(this.b);\n        }\n        this.isValid = rgb.ok;\n    }\n    TinyColor.prototype.isDark = function () {\n        return this.getBrightness() < 128;\n    };\n    TinyColor.prototype.isLight = function () {\n        return !this.isDark();\n    };\n    /**\n     * Returns the perceived brightness of the color, from 0-255.\n     */\n    TinyColor.prototype.getBrightness = function () {\n        // http://www.w3.org/TR/AERT#color-contrast\n        var rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    };\n    /**\n     * Returns the perceived luminance of a color, from 0-1.\n     */\n    TinyColor.prototype.getLuminance = function () {\n        // http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        var rgb = this.toRgb();\n        var R;\n        var G;\n        var B;\n        var RsRGB = rgb.r / 255;\n        var GsRGB = rgb.g / 255;\n        var BsRGB = rgb.b / 255;\n        if (RsRGB <= 0.03928) {\n            R = RsRGB / 12.92;\n        }\n        else {\n            // eslint-disable-next-line prefer-exponentiation-operator\n            R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n        }\n        if (GsRGB <= 0.03928) {\n            G = GsRGB / 12.92;\n        }\n        else {\n            // eslint-disable-next-line prefer-exponentiation-operator\n            G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n        }\n        if (BsRGB <= 0.03928) {\n            B = BsRGB / 12.92;\n        }\n        else {\n            // eslint-disable-next-line prefer-exponentiation-operator\n            B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n        }\n        return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n    };\n    /**\n     * Returns the alpha value of a color, from 0-1.\n     */\n    TinyColor.prototype.getAlpha = function () {\n        return this.a;\n    };\n    /**\n     * Sets the alpha value on the current color.\n     *\n     * @param alpha - The new alpha value. The accepted range is 0-1.\n     */\n    TinyColor.prototype.setAlpha = function (alpha) {\n        this.a = (0, util_1.boundAlpha)(alpha);\n        this.roundA = Math.round(100 * this.a) / 100;\n        return this;\n    };\n    /**\n     * Returns whether the color is monochrome.\n     */\n    TinyColor.prototype.isMonochrome = function () {\n        var s = this.toHsl().s;\n        return s === 0;\n    };\n    /**\n     * Returns the object as a HSVA object.\n     */\n    TinyColor.prototype.toHsv = function () {\n        var hsv = (0, conversion_1.rgbToHsv)(this.r, this.g, this.b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };\n    };\n    /**\n     * Returns the hsva values interpolated into a string with the following format:\n     * \"hsva(xxx, xxx, xxx, xx)\".\n     */\n    TinyColor.prototype.toHsvString = function () {\n        var hsv = (0, conversion_1.rgbToHsv)(this.r, this.g, this.b);\n        var h = Math.round(hsv.h * 360);\n        var s = Math.round(hsv.s * 100);\n        var v = Math.round(hsv.v * 100);\n        return this.a === 1 ? \"hsv(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%)\") : \"hsva(\".concat(h, \", \").concat(s, \"%, \").concat(v, \"%, \").concat(this.roundA, \")\");\n    };\n    /**\n     * Returns the object as a HSLA object.\n     */\n    TinyColor.prototype.toHsl = function () {\n        var hsl = (0, conversion_1.rgbToHsl)(this.r, this.g, this.b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };\n    };\n    /**\n     * Returns the hsla values interpolated into a string with the following format:\n     * \"hsla(xxx, xxx, xxx, xx)\".\n     */\n    TinyColor.prototype.toHslString = function () {\n        var hsl = (0, conversion_1.rgbToHsl)(this.r, this.g, this.b);\n        var h = Math.round(hsl.h * 360);\n        var s = Math.round(hsl.s * 100);\n        var l = Math.round(hsl.l * 100);\n        return this.a === 1 ? \"hsl(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%)\") : \"hsla(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%, \").concat(this.roundA, \")\");\n    };\n    /**\n     * Returns the hex value of the color.\n     * @param allow3Char will shorten hex value to 3 char if possible\n     */\n    TinyColor.prototype.toHex = function (allow3Char) {\n        if (allow3Char === void 0) { allow3Char = false; }\n        return (0, conversion_1.rgbToHex)(this.r, this.g, this.b, allow3Char);\n    };\n    /**\n     * Returns the hex value of the color -with a # prefixed.\n     * @param allow3Char will shorten hex value to 3 char if possible\n     */\n    TinyColor.prototype.toHexString = function (allow3Char) {\n        if (allow3Char === void 0) { allow3Char = false; }\n        return '#' + this.toHex(allow3Char);\n    };\n    /**\n     * Returns the hex 8 value of the color.\n     * @param allow4Char will shorten hex value to 4 char if possible\n     */\n    TinyColor.prototype.toHex8 = function (allow4Char) {\n        if (allow4Char === void 0) { allow4Char = false; }\n        return (0, conversion_1.rgbaToHex)(this.r, this.g, this.b, this.a, allow4Char);\n    };\n    /**\n     * Returns the hex 8 value of the color -with a # prefixed.\n     * @param allow4Char will shorten hex value to 4 char if possible\n     */\n    TinyColor.prototype.toHex8String = function (allow4Char) {\n        if (allow4Char === void 0) { allow4Char = false; }\n        return '#' + this.toHex8(allow4Char);\n    };\n    /**\n     * Returns the shorter hex value of the color depends on its alpha -with a # prefixed.\n     * @param allowShortChar will shorten hex value to 3 or 4 char if possible\n     */\n    TinyColor.prototype.toHexShortString = function (allowShortChar) {\n        if (allowShortChar === void 0) { allowShortChar = false; }\n        return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);\n    };\n    /**\n     * Returns the object as a RGBA object.\n     */\n    TinyColor.prototype.toRgb = function () {\n        return {\n            r: Math.round(this.r),\n            g: Math.round(this.g),\n            b: Math.round(this.b),\n            a: this.a,\n        };\n    };\n    /**\n     * Returns the RGBA values interpolated into a string with the following format:\n     * \"RGBA(xxx, xxx, xxx, xx)\".\n     */\n    TinyColor.prototype.toRgbString = function () {\n        var r = Math.round(this.r);\n        var g = Math.round(this.g);\n        var b = Math.round(this.b);\n        return this.a === 1 ? \"rgb(\".concat(r, \", \").concat(g, \", \").concat(b, \")\") : \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(this.roundA, \")\");\n    };\n    /**\n     * Returns the object as a RGBA object.\n     */\n    TinyColor.prototype.toPercentageRgb = function () {\n        var fmt = function (x) { return \"\".concat(Math.round((0, util_1.bound01)(x, 255) * 100), \"%\"); };\n        return {\n            r: fmt(this.r),\n            g: fmt(this.g),\n            b: fmt(this.b),\n            a: this.a,\n        };\n    };\n    /**\n     * Returns the RGBA relative values interpolated into a string\n     */\n    TinyColor.prototype.toPercentageRgbString = function () {\n        var rnd = function (x) { return Math.round((0, util_1.bound01)(x, 255) * 100); };\n        return this.a === 1\n            ? \"rgb(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%)\")\n            : \"rgba(\".concat(rnd(this.r), \"%, \").concat(rnd(this.g), \"%, \").concat(rnd(this.b), \"%, \").concat(this.roundA, \")\");\n    };\n    /**\n     * The 'real' name of the color -if there is one.\n     */\n    TinyColor.prototype.toName = function () {\n        if (this.a === 0) {\n            return 'transparent';\n        }\n        if (this.a < 1) {\n            return false;\n        }\n        var hex = '#' + (0, conversion_1.rgbToHex)(this.r, this.g, this.b, false);\n        for (var _i = 0, _a = Object.entries(css_color_names_1.names); _i < _a.length; _i++) {\n            var _b = _a[_i], key = _b[0], value = _b[1];\n            if (hex === value) {\n                return key;\n            }\n        }\n        return false;\n    };\n    TinyColor.prototype.toString = function (format) {\n        var formatSet = Boolean(format);\n        format = format !== null && format !== void 0 ? format : this.format;\n        var formattedString = false;\n        var hasAlpha = this.a < 1 && this.a >= 0;\n        var needsAlphaFormat = !formatSet && hasAlpha && (format.startsWith('hex') || format === 'name');\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === 'name' && this.a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === 'rgb') {\n            formattedString = this.toRgbString();\n        }\n        if (format === 'prgb') {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === 'hex' || format === 'hex6') {\n            formattedString = this.toHexString();\n        }\n        if (format === 'hex3') {\n            formattedString = this.toHexString(true);\n        }\n        if (format === 'hex4') {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === 'hex8') {\n            formattedString = this.toHex8String();\n        }\n        if (format === 'name') {\n            formattedString = this.toName();\n        }\n        if (format === 'hsl') {\n            formattedString = this.toHslString();\n        }\n        if (format === 'hsv') {\n            formattedString = this.toHsvString();\n        }\n        return formattedString || this.toHexString();\n    };\n    TinyColor.prototype.toNumber = function () {\n        return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);\n    };\n    TinyColor.prototype.clone = function () {\n        return new TinyColor(this.toString());\n    };\n    /**\n     * Lighten the color a given amount. Providing 100 will always return white.\n     * @param amount - valid between 1-100\n     */\n    TinyColor.prototype.lighten = function (amount) {\n        if (amount === void 0) { amount = 10; }\n        var hsl = this.toHsl();\n        hsl.l += amount / 100;\n        hsl.l = (0, util_1.clamp01)(hsl.l);\n        return new TinyColor(hsl);\n    };\n    /**\n     * Brighten the color a given amount, from 0 to 100.\n     * @param amount - valid between 1-100\n     */\n    TinyColor.prototype.brighten = function (amount) {\n        if (amount === void 0) { amount = 10; }\n        var rgb = this.toRgb();\n        rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n        rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n        rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n        return new TinyColor(rgb);\n    };\n    /**\n     * Darken the color a given amount, from 0 to 100.\n     * Providing 100 will always return black.\n     * @param amount - valid between 1-100\n     */\n    TinyColor.prototype.darken = function (amount) {\n        if (amount === void 0) { amount = 10; }\n        var hsl = this.toHsl();\n        hsl.l -= amount / 100;\n        hsl.l = (0, util_1.clamp01)(hsl.l);\n        return new TinyColor(hsl);\n    };\n    /**\n     * Mix the color with pure white, from 0 to 100.\n     * Providing 0 will do nothing, providing 100 will always return white.\n     * @param amount - valid between 1-100\n     */\n    TinyColor.prototype.tint = function (amount) {\n        if (amount === void 0) { amount = 10; }\n        return this.mix('white', amount);\n    };\n    /**\n     * Mix the color with pure black, from 0 to 100.\n     * Providing 0 will do nothing, providing 100 will always return black.\n     * @param amount - valid between 1-100\n     */\n    TinyColor.prototype.shade = function (amount) {\n        if (amount === void 0) { amount = 10; }\n        return this.mix('black', amount);\n    };\n    /**\n     * Desaturate the color a given amount, from 0 to 100.\n     * Providing 100 will is the same as calling greyscale\n     * @param amount - valid between 1-100\n     */\n    TinyColor.prototype.desaturate = function (amount) {\n        if (amount === void 0) { amount = 10; }\n        var hsl = this.toHsl();\n        hsl.s -= amount / 100;\n        hsl.s = (0, util_1.clamp01)(hsl.s);\n        return new TinyColor(hsl);\n    };\n    /**\n     * Saturate the color a given amount, from 0 to 100.\n     * @param amount - valid between 1-100\n     */\n    TinyColor.prototype.saturate = function (amount) {\n        if (amount === void 0) { amount = 10; }\n        var hsl = this.toHsl();\n        hsl.s += amount / 100;\n        hsl.s = (0, util_1.clamp01)(hsl.s);\n        return new TinyColor(hsl);\n    };\n    /**\n     * Completely desaturates a color into greyscale.\n     * Same as calling `desaturate(100)`\n     */\n    TinyColor.prototype.greyscale = function () {\n        return this.desaturate(100);\n    };\n    /**\n     * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n     * Values outside of this range will be wrapped into this range.\n     */\n    TinyColor.prototype.spin = function (amount) {\n        var hsl = this.toHsl();\n        var hue = (hsl.h + amount) % 360;\n        hsl.h = hue < 0 ? 360 + hue : hue;\n        return new TinyColor(hsl);\n    };\n    /**\n     * Mix the current color a given amount with another color, from 0 to 100.\n     * 0 means no mixing (return current color).\n     */\n    TinyColor.prototype.mix = function (color, amount) {\n        if (amount === void 0) { amount = 50; }\n        var rgb1 = this.toRgb();\n        var rgb2 = new TinyColor(color).toRgb();\n        var p = amount / 100;\n        var rgba = {\n            r: (rgb2.r - rgb1.r) * p + rgb1.r,\n            g: (rgb2.g - rgb1.g) * p + rgb1.g,\n            b: (rgb2.b - rgb1.b) * p + rgb1.b,\n            a: (rgb2.a - rgb1.a) * p + rgb1.a,\n        };\n        return new TinyColor(rgba);\n    };\n    TinyColor.prototype.analogous = function (results, slices) {\n        if (results === void 0) { results = 6; }\n        if (slices === void 0) { slices = 30; }\n        var hsl = this.toHsl();\n        var part = 360 / slices;\n        var ret = [this];\n        for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results;) {\n            hsl.h = (hsl.h + part) % 360;\n            ret.push(new TinyColor(hsl));\n        }\n        return ret;\n    };\n    /**\n     * taken from https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js\n     */\n    TinyColor.prototype.complement = function () {\n        var hsl = this.toHsl();\n        hsl.h = (hsl.h + 180) % 360;\n        return new TinyColor(hsl);\n    };\n    TinyColor.prototype.monochromatic = function (results) {\n        if (results === void 0) { results = 6; }\n        var hsv = this.toHsv();\n        var h = hsv.h;\n        var s = hsv.s;\n        var v = hsv.v;\n        var res = [];\n        var modification = 1 / results;\n        while (results--) {\n            res.push(new TinyColor({ h: h, s: s, v: v }));\n            v = (v + modification) % 1;\n        }\n        return res;\n    };\n    TinyColor.prototype.splitcomplement = function () {\n        var hsl = this.toHsl();\n        var h = hsl.h;\n        return [\n            this,\n            new TinyColor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }),\n            new TinyColor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }),\n        ];\n    };\n    /**\n     * Compute how the color would appear on a background\n     */\n    TinyColor.prototype.onBackground = function (background) {\n        var fg = this.toRgb();\n        var bg = new TinyColor(background).toRgb();\n        var alpha = fg.a + bg.a * (1 - fg.a);\n        return new TinyColor({\n            r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha,\n            g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha,\n            b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha,\n            a: alpha,\n        });\n    };\n    /**\n     * Alias for `polyad(3)`\n     */\n    TinyColor.prototype.triad = function () {\n        return this.polyad(3);\n    };\n    /**\n     * Alias for `polyad(4)`\n     */\n    TinyColor.prototype.tetrad = function () {\n        return this.polyad(4);\n    };\n    /**\n     * Get polyad colors, like (for 1, 2, 3, 4, 5, 6, 7, 8, etc...)\n     * monad, dyad, triad, tetrad, pentad, hexad, heptad, octad, etc...\n     */\n    TinyColor.prototype.polyad = function (n) {\n        var hsl = this.toHsl();\n        var h = hsl.h;\n        var result = [this];\n        var increment = 360 / n;\n        for (var i = 1; i < n; i++) {\n            result.push(new TinyColor({ h: (h + i * increment) % 360, s: hsl.s, l: hsl.l }));\n        }\n        return result;\n    };\n    /**\n     * compare color vs current color\n     */\n    TinyColor.prototype.equals = function (color) {\n        return this.toRgbString() === new TinyColor(color).toRgbString();\n    };\n    return TinyColor;\n}());\nexports.TinyColor = TinyColor;\n// kept for backwards compatability with v1\nfunction tinycolor(color, opts) {\n    if (color === void 0) { color = ''; }\n    if (opts === void 0) { opts = {}; }\n    return new TinyColor(color, opts);\n}\nexports.tinycolor = tinycolor;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar index_1 = require(\"./index\");\n__exportStar(require(\"./index\"), exports);\n__exportStar(require(\"./css-color-names\"), exports);\n__exportStar(require(\"./readability\"), exports);\n__exportStar(require(\"./to-ms-filter\"), exports);\n__exportStar(require(\"./from-ratio\"), exports);\n__exportStar(require(\"./format-input\"), exports);\n__exportStar(require(\"./random\"), exports);\n__exportStar(require(\"./interfaces\"), exports);\n__exportStar(require(\"./conversion\"), exports);\n// kept for backwards compatability with v1\nexports.default = index_1.tinycolor;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bounds = exports.random = void 0;\n/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\n// randomColor by David Merfield under the CC0 license\n// https://github.com/davidmerfield/randomColor/\nvar index_1 = require(\"./index\");\nfunction random(options) {\n    if (options === void 0) { options = {}; }\n    // Check if we need to generate multiple colors\n    if (options.count !== undefined &&\n        options.count !== null) {\n        var totalColors = options.count;\n        var colors = [];\n        options.count = undefined;\n        while (totalColors > colors.length) {\n            // Since we're generating multiple colors,\n            // incremement the seed. Otherwise we'd just\n            // generate the same color each time...\n            options.count = null;\n            if (options.seed) {\n                options.seed += 1;\n            }\n            colors.push(random(options));\n        }\n        options.count = totalColors;\n        return colors;\n    }\n    // First we pick a hue (H)\n    var h = pickHue(options.hue, options.seed);\n    // Then use H to determine saturation (S)\n    var s = pickSaturation(h, options);\n    // Then use S and H to determine brightness (B).\n    var v = pickBrightness(h, s, options);\n    var res = { h: h, s: s, v: v };\n    if (options.alpha !== undefined) {\n        res.a = options.alpha;\n    }\n    // Then we return the HSB color in the desired format\n    return new index_1.TinyColor(res);\n}\nexports.random = random;\nfunction pickHue(hue, seed) {\n    var hueRange = getHueRange(hue);\n    var res = randomWithin(hueRange, seed);\n    // Instead of storing red as two seperate ranges,\n    // we group them, using negative numbers\n    if (res < 0) {\n        res = 360 + res;\n    }\n    return res;\n}\nfunction pickSaturation(hue, options) {\n    if (options.hue === 'monochrome') {\n        return 0;\n    }\n    if (options.luminosity === 'random') {\n        return randomWithin([0, 100], options.seed);\n    }\n    var saturationRange = getColorInfo(hue).saturationRange;\n    var sMin = saturationRange[0];\n    var sMax = saturationRange[1];\n    switch (options.luminosity) {\n        case 'bright':\n            sMin = 55;\n            break;\n        case 'dark':\n            sMin = sMax - 10;\n            break;\n        case 'light':\n            sMax = 55;\n            break;\n        default:\n            break;\n    }\n    return randomWithin([sMin, sMax], options.seed);\n}\nfunction pickBrightness(H, S, options) {\n    var bMin = getMinimumBrightness(H, S);\n    var bMax = 100;\n    switch (options.luminosity) {\n        case 'dark':\n            bMax = bMin + 20;\n            break;\n        case 'light':\n            bMin = (bMax + bMin) / 2;\n            break;\n        case 'random':\n            bMin = 0;\n            bMax = 100;\n            break;\n        default:\n            break;\n    }\n    return randomWithin([bMin, bMax], options.seed);\n}\nfunction getMinimumBrightness(H, S) {\n    var lowerBounds = getColorInfo(H).lowerBounds;\n    for (var i = 0; i < lowerBounds.length - 1; i++) {\n        var s1 = lowerBounds[i][0];\n        var v1 = lowerBounds[i][1];\n        var s2 = lowerBounds[i + 1][0];\n        var v2 = lowerBounds[i + 1][1];\n        if (S >= s1 && S <= s2) {\n            var m = (v2 - v1) / (s2 - s1);\n            var b = v1 - m * s1;\n            return m * S + b;\n        }\n    }\n    return 0;\n}\nfunction getHueRange(colorInput) {\n    var num = parseInt(colorInput, 10);\n    if (!Number.isNaN(num) && num < 360 && num > 0) {\n        return [num, num];\n    }\n    if (typeof colorInput === 'string') {\n        var namedColor = exports.bounds.find(function (n) { return n.name === colorInput; });\n        if (namedColor) {\n            var color = defineColor(namedColor);\n            if (color.hueRange) {\n                return color.hueRange;\n            }\n        }\n        var parsed = new index_1.TinyColor(colorInput);\n        if (parsed.isValid) {\n            var hue = parsed.toHsv().h;\n            return [hue, hue];\n        }\n    }\n    return [0, 360];\n}\nfunction getColorInfo(hue) {\n    // Maps red colors to make picking hue easier\n    if (hue >= 334 && hue <= 360) {\n        hue -= 360;\n    }\n    for (var _i = 0, bounds_1 = exports.bounds; _i < bounds_1.length; _i++) {\n        var bound = bounds_1[_i];\n        var color = defineColor(bound);\n        if (color.hueRange && hue >= color.hueRange[0] && hue <= color.hueRange[1]) {\n            return color;\n        }\n    }\n    throw Error('Color not found');\n}\nfunction randomWithin(range, seed) {\n    if (seed === undefined) {\n        return Math.floor(range[0] + Math.random() * (range[1] + 1 - range[0]));\n    }\n    // Seeded random algorithm from http://indiegamr.com/generate-repeatable-random-numbers-in-js/\n    var max = range[1] || 1;\n    var min = range[0] || 0;\n    seed = (seed * 9301 + 49297) % 233280;\n    var rnd = seed / 233280.0;\n    return Math.floor(min + rnd * (max - min));\n}\nfunction defineColor(bound) {\n    var sMin = bound.lowerBounds[0][0];\n    var sMax = bound.lowerBounds[bound.lowerBounds.length - 1][0];\n    var bMin = bound.lowerBounds[bound.lowerBounds.length - 1][1];\n    var bMax = bound.lowerBounds[0][1];\n    return {\n        name: bound.name,\n        hueRange: bound.hueRange,\n        lowerBounds: bound.lowerBounds,\n        saturationRange: [sMin, sMax],\n        brightnessRange: [bMin, bMax],\n    };\n}\n/**\n * @hidden\n */\nexports.bounds = [\n    {\n        name: 'monochrome',\n        hueRange: null,\n        lowerBounds: [\n            [0, 0],\n            [100, 0],\n        ],\n    },\n    {\n        name: 'red',\n        hueRange: [-26, 18],\n        lowerBounds: [\n            [20, 100],\n            [30, 92],\n            [40, 89],\n            [50, 85],\n            [60, 78],\n            [70, 70],\n            [80, 60],\n            [90, 55],\n            [100, 50],\n        ],\n    },\n    {\n        name: 'orange',\n        hueRange: [19, 46],\n        lowerBounds: [\n            [20, 100],\n            [30, 93],\n            [40, 88],\n            [50, 86],\n            [60, 85],\n            [70, 70],\n            [100, 70],\n        ],\n    },\n    {\n        name: 'yellow',\n        hueRange: [47, 62],\n        lowerBounds: [\n            [25, 100],\n            [40, 94],\n            [50, 89],\n            [60, 86],\n            [70, 84],\n            [80, 82],\n            [90, 80],\n            [100, 75],\n        ],\n    },\n    {\n        name: 'green',\n        hueRange: [63, 178],\n        lowerBounds: [\n            [30, 100],\n            [40, 90],\n            [50, 85],\n            [60, 81],\n            [70, 74],\n            [80, 64],\n            [90, 50],\n            [100, 40],\n        ],\n    },\n    {\n        name: 'blue',\n        hueRange: [179, 257],\n        lowerBounds: [\n            [20, 100],\n            [30, 86],\n            [40, 80],\n            [50, 74],\n            [60, 60],\n            [70, 52],\n            [80, 44],\n            [90, 39],\n            [100, 35],\n        ],\n    },\n    {\n        name: 'purple',\n        hueRange: [258, 282],\n        lowerBounds: [\n            [20, 100],\n            [30, 87],\n            [40, 79],\n            [50, 70],\n            [60, 65],\n            [70, 59],\n            [80, 52],\n            [90, 45],\n            [100, 42],\n        ],\n    },\n    {\n        name: 'pink',\n        hueRange: [283, 334],\n        lowerBounds: [\n            [20, 100],\n            [30, 90],\n            [40, 86],\n            [60, 84],\n            [80, 80],\n            [90, 75],\n            [100, 73],\n        ],\n    },\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mostReadable = exports.isReadable = exports.readability = void 0;\nvar index_1 = require(\"./index\");\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n/**\n * AKA `contrast`\n *\n * Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\n */\nfunction readability(color1, color2) {\n    var c1 = new index_1.TinyColor(color1);\n    var c2 = new index_1.TinyColor(color2);\n    return ((Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) /\n        (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05));\n}\nexports.readability = readability;\n/**\n * Ensure that foreground and background color combinations meet WCAG2 guidelines.\n * The third argument is an object.\n *      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n *      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n * If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n *\n * Example\n * ```ts\n * new TinyColor().isReadable('#000', '#111') => false\n * new TinyColor().isReadable('#000', '#111', { level: 'AA', size: 'large' }) => false\n * ```\n */\nfunction isReadable(color1, color2, wcag2) {\n    var _a, _b;\n    if (wcag2 === void 0) { wcag2 = { level: 'AA', size: 'small' }; }\n    var readabilityLevel = readability(color1, color2);\n    switch (((_a = wcag2.level) !== null && _a !== void 0 ? _a : 'AA') + ((_b = wcag2.size) !== null && _b !== void 0 ? _b : 'small')) {\n        case 'AAsmall':\n        case 'AAAlarge':\n            return readabilityLevel >= 4.5;\n        case 'AAlarge':\n            return readabilityLevel >= 3;\n        case 'AAAsmall':\n            return readabilityLevel >= 7;\n        default:\n            return false;\n    }\n}\nexports.isReadable = isReadable;\n/**\n * Given a base color and a list of possible foreground or background\n * colors for that base, returns the most readable color.\n * Optionally returns Black or White if the most readable color is unreadable.\n *\n * @param baseColor - the base color.\n * @param colorList - array of colors to pick the most readable one from.\n * @param args - and object with extra arguments\n *\n * Example\n * ```ts\n * new TinyColor().mostReadable('#123', ['#124\", \"#125'], { includeFallbackColors: false }).toHexString(); // \"#112255\"\n * new TinyColor().mostReadable('#123', ['#124\", \"#125'],{ includeFallbackColors: true }).toHexString();  // \"#ffffff\"\n * new TinyColor().mostReadable('#a8015a', [\"#faf3f3\"], { includeFallbackColors:true, level: 'AAA', size: 'large' }).toHexString(); // \"#faf3f3\"\n * new TinyColor().mostReadable('#a8015a', [\"#faf3f3\"], { includeFallbackColors:true, level: 'AAA', size: 'small' }).toHexString(); // \"#ffffff\"\n * ```\n */\nfunction mostReadable(baseColor, colorList, args) {\n    if (args === void 0) { args = { includeFallbackColors: false, level: 'AA', size: 'small' }; }\n    var bestColor = null;\n    var bestScore = 0;\n    var includeFallbackColors = args.includeFallbackColors, level = args.level, size = args.size;\n    for (var _i = 0, colorList_1 = colorList; _i < colorList_1.length; _i++) {\n        var color = colorList_1[_i];\n        var score = readability(baseColor, color);\n        if (score > bestScore) {\n            bestScore = score;\n            bestColor = new index_1.TinyColor(color);\n        }\n    }\n    if (isReadable(baseColor, bestColor, { level: level, size: size }) || !includeFallbackColors) {\n        return bestColor;\n    }\n    args.includeFallbackColors = false;\n    return mostReadable(baseColor, ['#fff', '#000'], args);\n}\nexports.mostReadable = mostReadable;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toMsFilter = void 0;\nvar conversion_1 = require(\"./conversion\");\nvar index_1 = require(\"./index\");\n/**\n * Returns the color represented as a Microsoft filter for use in old versions of IE.\n */\nfunction toMsFilter(firstColor, secondColor) {\n    var color = new index_1.TinyColor(firstColor);\n    var hex8String = '#' + (0, conversion_1.rgbaToArgbHex)(color.r, color.g, color.b, color.a);\n    var secondHex8String = hex8String;\n    var gradientType = color.gradientType ? 'GradientType = 1, ' : '';\n    if (secondColor) {\n        var s = new index_1.TinyColor(secondColor);\n        secondHex8String = '#' + (0, conversion_1.rgbaToArgbHex)(s.r, s.g, s.b, s.a);\n    }\n    return \"progid:DXImageTransform.Microsoft.gradient(\".concat(gradientType, \"startColorstr=\").concat(hex8String, \",endColorstr=\").concat(secondHex8String, \")\");\n}\nexports.toMsFilter = toMsFilter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pad2 = exports.convertToPercentage = exports.boundAlpha = exports.isPercentage = exports.isOnePointZero = exports.clamp01 = exports.bound01 = void 0;\n/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nfunction bound01(n, max) {\n    if (isOnePointZero(n)) {\n        n = '100%';\n    }\n    var isPercent = isPercentage(n);\n    n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n    // Automatically convert percentage into number\n    if (isPercent) {\n        n = parseInt(String(n * max), 10) / 100;\n    }\n    // Handle floating point rounding errors\n    if (Math.abs(n - max) < 0.000001) {\n        return 1;\n    }\n    // Convert into [0, 1] range if it isn't already\n    if (max === 360) {\n        // If n is a hue given in degrees,\n        // wrap around out-of-range values into [0, 360] range\n        // then convert into [0, 1].\n        n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n    }\n    else {\n        // If n not a hue given in degrees\n        // Convert into [0, 1] range if it isn't already.\n        n = (n % max) / parseFloat(String(max));\n    }\n    return n;\n}\nexports.bound01 = bound01;\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nfunction clamp01(val) {\n    return Math.min(1, Math.max(0, val));\n}\nexports.clamp01 = clamp01;\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n * @hidden\n */\nfunction isOnePointZero(n) {\n    return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\nexports.isOnePointZero = isOnePointZero;\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nfunction isPercentage(n) {\n    return typeof n === 'string' && n.indexOf('%') !== -1;\n}\nexports.isPercentage = isPercentage;\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nfunction boundAlpha(a) {\n    a = parseFloat(a);\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n    return a;\n}\nexports.boundAlpha = boundAlpha;\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nfunction convertToPercentage(n) {\n    if (n <= 1) {\n        return \"\".concat(Number(n) * 100, \"%\");\n    }\n    return n;\n}\nexports.convertToPercentage = convertToPercentage;\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nfunction pad2(c) {\n    return c.length === 1 ? '0' + c : String(c);\n}\nexports.pad2 = pad2;\n"]}