{"version":3,"sources":["webpack:////build/source/node_modules/lodash/clamp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/utils.js","webpack:////build/source/node_modules/lodash/isNil.js","webpack:///./vue_shared/mixins/timeago.js","webpack:////build/source/node_modules/lodash/_baseClamp.js","webpack:////build/source/node_modules/d3-array/src/ascending.js","webpack:////build/source/node_modules/d3-array/src/bisector.js","webpack:////build/source/node_modules/d3-array/src/bisect.js","webpack:////build/source/node_modules/d3-array/src/cross.js","webpack:////build/source/node_modules/d3-array/src/number.js","webpack:////build/source/node_modules/d3-array/src/extent.js","webpack:////build/source/node_modules/d3-array/src/array.js","webpack:////build/source/node_modules/d3-array/src/range.js","webpack:////build/source/node_modules/d3-array/src/ticks.js","webpack:////build/source/node_modules/d3-array/src/threshold/sturges.js","webpack:////build/source/node_modules/d3-array/src/quantile.js","webpack:////build/source/node_modules/d3-array/src/max.js","webpack:////build/source/node_modules/d3-array/src/min.js","webpack:////build/source/node_modules/d3-array/src/sum.js","webpack:////build/source/node_modules/d3-path/src/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/utils.js","webpack:///./graphql_shared/fragments/ci_icon.fragment.graphql","webpack:////build/source/node_modules/d3-selection/src/matcher.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js","webpack:////build/source/node_modules/d3-selection/src/selector.js","webpack:///./vue_shared/components/time_ago_tooltip.vue","webpack:///./vue_shared/components/time_ago_tooltip.vue?3039","webpack:///vue_shared/components/time_ago_tooltip.vue","webpack:///./vue_shared/components/time_ago_tooltip.vue?f6d8","webpack:////build/source/node_modules/d3-selection/src/selection/style.js","webpack:////build/source/node_modules/@gitlab/ui/dist/directives/outside/outside.js","webpack:////build/source/node_modules/d3-axis/src/array.js","webpack:////build/source/node_modules/d3-dispatch/src/dispatch.js","webpack:////build/source/node_modules/d3-color/src/define.js","webpack:////build/source/node_modules/d3-color/src/color.js","webpack:////build/source/node_modules/d3-interpolate/src/basis.js","webpack:////build/source/node_modules/d3-interpolate/src/constant.js","webpack:////build/source/node_modules/d3-interpolate/src/color.js","webpack:////build/source/node_modules/d3-interpolate/src/rgb.js","webpack:////build/source/node_modules/d3-interpolate/src/basisClosed.js","webpack:////build/source/node_modules/d3-interpolate/src/date.js","webpack:////build/source/node_modules/d3-interpolate/src/number.js","webpack:////build/source/node_modules/d3-interpolate/src/string.js","webpack:////build/source/node_modules/d3-timer/src/timer.js","webpack:////build/source/node_modules/d3-timer/src/timeout.js","webpack:////build/source/node_modules/d3-transition/src/transition/schedule.js","webpack:////build/source/node_modules/d3-transition/src/interrupt.js","webpack:////build/source/node_modules/d3-interpolate/src/transform/parse.js","webpack:////build/source/node_modules/d3-interpolate/src/transform/decompose.js","webpack:////build/source/node_modules/d3-interpolate/src/transform/index.js","webpack:////build/source/node_modules/d3-transition/src/transition/tween.js","webpack:////build/source/node_modules/d3-transition/src/transition/interpolate.js","webpack:////build/source/node_modules/d3-transition/src/transition/attr.js","webpack:////build/source/node_modules/d3-transition/src/transition/attrTween.js","webpack:////build/source/node_modules/d3-transition/src/transition/delay.js","webpack:////build/source/node_modules/d3-transition/src/transition/duration.js","webpack:////build/source/node_modules/d3-transition/src/transition/ease.js","webpack:////build/source/node_modules/d3-transition/src/transition/on.js","webpack:////build/source/node_modules/d3-transition/src/transition/remove.js","webpack:////build/source/node_modules/d3-transition/src/transition/selection.js","webpack:////build/source/node_modules/d3-transition/src/transition/style.js","webpack:////build/source/node_modules/d3-transition/src/transition/styleTween.js","webpack:////build/source/node_modules/d3-transition/src/transition/textTween.js","webpack:////build/source/node_modules/d3-transition/src/transition/index.js","webpack:////build/source/node_modules/d3-transition/src/transition/select.js","webpack:////build/source/node_modules/d3-transition/src/transition/selectAll.js","webpack:////build/source/node_modules/d3-transition/src/transition/filter.js","webpack:////build/source/node_modules/d3-transition/src/transition/merge.js","webpack:////build/source/node_modules/d3-transition/src/transition/transition.js","webpack:////build/source/node_modules/d3-transition/src/transition/text.js","webpack:////build/source/node_modules/d3-transition/src/transition/end.js","webpack:////build/source/node_modules/d3-transition/src/selection/transition.js","webpack:////build/source/node_modules/d3-ease/src/cubic.js","webpack:////build/source/node_modules/d3-transition/src/selection/index.js","webpack:////build/source/node_modules/d3-transition/src/selection/interrupt.js","webpack:////build/source/node_modules/d3-brush/src/brush.js","webpack:////build/source/node_modules/d3-chord/src/math.js","webpack:////build/source/node_modules/d3-chord/src/array.js","webpack:////build/source/node_modules/d3-collection/src/map.js","webpack:////build/source/node_modules/d3-collection/src/set.js","webpack:////build/source/node_modules/d3-contour/src/array.js","webpack:////build/source/node_modules/d3-quadtree/src/add.js","webpack:////build/source/node_modules/d3-quadtree/src/cover.js","webpack:////build/source/node_modules/d3-quadtree/src/quad.js","webpack:////build/source/node_modules/d3-quadtree/src/x.js","webpack:////build/source/node_modules/d3-quadtree/src/y.js","webpack:////build/source/node_modules/d3-quadtree/src/quadtree.js","webpack:////build/source/node_modules/d3-quadtree/src/data.js","webpack:////build/source/node_modules/d3-quadtree/src/extent.js","webpack:////build/source/node_modules/d3-quadtree/src/find.js","webpack:////build/source/node_modules/d3-quadtree/src/remove.js","webpack:////build/source/node_modules/d3-quadtree/src/root.js","webpack:////build/source/node_modules/d3-quadtree/src/size.js","webpack:////build/source/node_modules/d3-quadtree/src/visit.js","webpack:////build/source/node_modules/d3-quadtree/src/visitAfter.js","webpack:////build/source/node_modules/d3-force/src/simulation.js","webpack:////build/source/node_modules/d3-random/src/defaultSource.js","webpack:////build/source/node_modules/d3-random/src/normal.js","webpack:////build/source/node_modules/d3-random/src/uniform.js","webpack:////build/source/node_modules/d3-random/src/irwinHall.js","webpack:////build/source/node_modules/d3-random/src/logNormal.js","webpack:////build/source/node_modules/d3-random/src/bates.js","webpack:////build/source/node_modules/d3-random/src/exponential.js","webpack:////build/source/node_modules/d3-scale/src/array.js","webpack:////build/source/node_modules/d3-format/src/formatSpecifier.js","webpack:////build/source/node_modules/d3-format/src/formatDecimal.js","webpack:////build/source/node_modules/d3-format/src/exponent.js","webpack:////build/source/node_modules/d3-format/src/formatPrefixAuto.js","webpack:////build/source/node_modules/d3-format/src/defaultLocale.js","webpack:////build/source/node_modules/d3-format/src/formatRounded.js","webpack:////build/source/node_modules/d3-format/src/formatTypes.js","webpack:////build/source/node_modules/d3-format/src/identity.js","webpack:////build/source/node_modules/d3-format/src/locale.js","webpack:////build/source/node_modules/d3-format/src/formatGroup.js","webpack:////build/source/node_modules/d3-format/src/formatNumerals.js","webpack:////build/source/node_modules/d3-format/src/formatTrim.js","webpack:////build/source/node_modules/d3-time/src/interval.js","webpack:////build/source/node_modules/d3-time/src/year.js","webpack:////build/source/node_modules/d3-time/src/month.js","webpack:////build/source/node_modules/d3-time/src/week.js","webpack:////build/source/node_modules/d3-time/src/duration.js","webpack:////build/source/node_modules/d3-time/src/day.js","webpack:////build/source/node_modules/d3-time/src/hour.js","webpack:////build/source/node_modules/d3-time/src/minute.js","webpack:////build/source/node_modules/d3-time/src/second.js","webpack:////build/source/node_modules/d3-time/src/millisecond.js","webpack:////build/source/node_modules/d3-time/src/utcWeek.js","webpack:////build/source/node_modules/d3-time/src/utcDay.js","webpack:////build/source/node_modules/d3-time/src/utcYear.js","webpack:////build/source/node_modules/d3-time-format/src/locale.js","webpack:////build/source/node_modules/d3-time-format/src/defaultLocale.js","webpack:////build/source/node_modules/d3-scale/src/time.js","webpack:////build/source/node_modules/d3-time/src/utcMonth.js","webpack:////build/source/node_modules/d3-time/src/utcHour.js","webpack:////build/source/node_modules/d3-time/src/utcMinute.js","webpack:////build/source/node_modules/d3-voronoi/src/RedBlackTree.js","webpack:////build/source/node_modules/d3-voronoi/src/Edge.js","webpack:////build/source/node_modules/d3-voronoi/src/Cell.js","webpack:////build/source/node_modules/d3-voronoi/src/Circle.js","webpack:////build/source/node_modules/d3-voronoi/src/Beach.js","webpack:////build/source/node_modules/d3-voronoi/src/Diagram.js","webpack:////build/source/node_modules/d3-interpolate/src/zoom.js","webpack:////build/source/node_modules/d3-zoom/src/transform.js","webpack:////build/source/node_modules/d3-sankey/src/align.js","webpack:////build/source/node_modules/d3-sankey/src/constant.js","webpack:////build/source/node_modules/d3-sankey/src/sankey.js","webpack:////build/source/node_modules/d3-shape/src/array.js","webpack:////build/source/node_modules/d3-shape/src/constant.js","webpack:////build/source/node_modules/d3-shape/src/point.js","webpack:////build/source/node_modules/d3-shape/src/link/index.js","webpack:////build/source/node_modules/d3-sankey/src/sankeyLinkHorizontal.js","webpack:////build/source/node_modules/d3-path/src/path.js","webpack:////build/source/node_modules/d3-selection/src/selection/sparse.js","webpack:////build/source/node_modules/d3-selection/src/selection/enter.js","webpack:////build/source/node_modules/d3-selection/src/selection/data.js","webpack:////build/source/node_modules/d3-selection/src/selection/sort.js","webpack:////build/source/node_modules/d3-selection/src/selection/call.js","webpack:////build/source/node_modules/d3-selection/src/selection/attr.js","webpack:////build/source/node_modules/d3-selection/src/selection/property.js","webpack:////build/source/node_modules/d3-selection/src/selection/classed.js","webpack:////build/source/node_modules/d3-selection/src/selection/text.js","webpack:////build/source/node_modules/d3-selection/src/selection/html.js","webpack:////build/source/node_modules/d3-selection/src/selection/raise.js","webpack:////build/source/node_modules/d3-selection/src/selection/lower.js","webpack:////build/source/node_modules/d3-selection/src/creator.js","webpack:////build/source/node_modules/d3-selection/src/selection/insert.js","webpack:////build/source/node_modules/d3-selection/src/selection/remove.js","webpack:////build/source/node_modules/d3-selection/src/selection/clone.js","webpack:////build/source/node_modules/d3-selection/src/selection/dispatch.js","webpack:////build/source/node_modules/d3-selection/src/selection/index.js","webpack:////build/source/node_modules/d3-selection/src/selection/select.js","webpack:////build/source/node_modules/d3-selection/src/selection/selectAll.js","webpack:////build/source/node_modules/d3-selection/src/selection/filter.js","webpack:////build/source/node_modules/d3-selection/src/constant.js","webpack:////build/source/node_modules/d3-selection/src/selection/exit.js","webpack:////build/source/node_modules/d3-selection/src/selection/join.js","webpack:////build/source/node_modules/d3-selection/src/selection/merge.js","webpack:////build/source/node_modules/d3-selection/src/selection/order.js","webpack:////build/source/node_modules/d3-selection/src/selection/nodes.js","webpack:////build/source/node_modules/d3-selection/src/selection/node.js","webpack:////build/source/node_modules/d3-selection/src/selection/size.js","webpack:////build/source/node_modules/d3-selection/src/selection/empty.js","webpack:////build/source/node_modules/d3-selection/src/selection/each.js","webpack:////build/source/node_modules/d3-selection/src/selection/append.js","webpack:////build/source/node_modules/d3-selection/src/selection/datum.js","webpack:////build/source/node_modules/d3-selection/src/namespace.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/constants.js","webpack:////build/source/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js","webpack:////build/source/node_modules/@floating-ui/utils/dist/floating-ui.utils.esm.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_search_input.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox.js","webpack:////build/source/node_modules/d3-selection/src/namespaces.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/intersection_observer/intersection_observer.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_type/search_box_by_type.js","webpack:////build/source/node_modules/d3-selection/src/window.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/collapse/helpers/bv-collapse.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/collapse/collapse.js","webpack:///./ci/common/pipeline_summary/graphql/queries/get_pipeline_summary.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/constants.js","webpack:////build/source/node_modules/d3-selection/src/select.js","webpack:////build/source/node_modules/d3-selection/src/selectorAll.js","webpack:////build/source/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","webpack:////build/source/node_modules/d3-selection/src/selection/on.js","webpack:///./ci/common/pipeline_summary/pipeline_summary.vue","webpack:///./ci/common/pipeline_summary/pipeline_summary.vue?b8d8","webpack:///ci/common/pipeline_summary/pipeline_summary.vue","webpack:///./ci/utils/polling_utils.js","webpack:///./ci/common/pipeline_summary/pipeline_summary.vue?8a37","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_item.js"],"names":["baseClamp","toNumber","module","exports","number","lower","upper","undefined","isOption","item","Boolean","value","isGroup","options","arguments","length","Array","isArray","every","hasNoDuplicates","array","Set","size","flattenedOptions","items","flatMap","itemsValidator","isAllOptionsOrAllGroups","map","_ref","hasUniqueValues","filter","_ref2","text","hasUniqueGroups","methods","timeFormatted","time","format","getTimeago","newDate","timeagoLanguageCode","tooltipTitle","localeDateFormat","asDateTimeFull","a","b","NaN","f","compare","d","x","ascending","left","lo","hi","mid","right","ascendingBisect","bisector","bisectRight","bisect","min","max","n","values","i","valueof","prototype","slice","start","stop","step","Math","ceil","range","e10","sqrt","e5","e2","reverse","ticks","count","tickIncrement","isFinite","floor","power","log","LN10","error","pow","tickStep","step0","abs","step1","LN2","p","i0","value0","sum","isItem","_item$text","itemValidator","group","hasOnlyListItemsVue2","defaultSlot","nodes","tags","vNode","tag","_vNode$componentOptio","componentOptions","includes","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","find","node","children","trim","_vNode$type","type","name","isValidSlotTagVue3","hasOnlyListItems","version","startsWith","doc","loc","source","definitionRefs","findOperation","definitions","element","forEach","def","refs","collectFragmentReferences","kind","add","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","hasOwnProperty","opRefs","allRefs","newRefs","refName","prevRefs","has","childRef","op","push","oneQuery","this","matches","selector","DISCLOSURE_DROPDOWN_ITEM_NAME","DISCLOSURE_DROPDOWN_GROUP_NAME","DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS","top","bottom","DROPDOWN_SELECTOR","ITEM_SELECTOR","__vue_script__","events","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","components","GlBaseDropdown","GlDisclosureDropdownItem","GlDisclosureDropdownGroup","props","required","default","validator","toggleText","String","textSrOnly","category","primary","variant","icon","disabled","loading","toggleId","toggleClass","Object","noCaret","placement","keys","toggleAriaLabelledBy","listAriaLabelledBy","block","dropdownOffset","Number","fluidWidth","autoClose","positioningStrategy","strategy","startOpened","data","disclosureId","nextFocusedItemIndex","computed","_this$items","$scopedSlots","$slots","toggle","open","$refs","baseDropdown","close","$emit","event","code","elements","getFocusableListItemElements","focusItem","focusNextItem","handleAutoClose","_this$$refs$content","content","querySelectorAll","from","offset","target","currentIndex","indexOf","nextIndex","index","_elements$index","focus","closeAndFocus","action","window","requestAnimationFrame","e","closest","$el","uniqueItemId","GL_DROPDOWN_CONTENTS_CLASS","__vue_component__","render","_vm","_h","$createElement","_c","_self","ref","staticClass","attrs","on","_d","$options","onShow","onHide","onBeforeClose","onKeydown","scopedSlots","_u","key","fn","_t","proxy","_v","disclosureTag","class","_l","handleAction","groupItem","_e","staticRenderFns","none","querySelector","directives","GlTooltip","GlTooltipDirective","GlTruncate","mixins","timeagoMixin","Date","tooltipPlacement","cssClass","dateTimeFormat","DEFAULT_DATE_TIME_FORMAT","timeFormat","DATE_TIME_FORMATS","enableTruncation","timeAgo","tooltipText","component","rawName","expression","modifiers","_s","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","v","apply","styleValue","getPropertyValue","getComputedStyle","each","callbacks","Map","activeEventTypes","lastMousedown","globalListener","callback","eventTypes","originalEvent","contains","onMousedown","OutsideDirective","bind","el","bindings","_ref3","arg","modifiersList","parseBinding","set","eventType","document","addEventListener","capture","startListening","unbind","entry","get","eventTypesToUnbind","delete","removeEventListener","noop","dispatch","t","_","test","Error","Dispatch","parseTypenames","typenames","types","split","c","concat","constructor","typename","T","copy","call","that","args","factory","extend","parent","definition","create","Color","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","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","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","m","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","o","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","round","toString","h","s","Hsl","hslConvert","hsl2rgb","m1","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","formatHsl","brighter","k","darker","linear","gamma","y","nogamma","exponential","constant","color","end","rgbGamma","rgbSpline","spline","colors","reA","reB","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","one","join","timeout","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","setTimeout","clearNow","Timer","_call","_time","_next","timer","delay","restart","wake","timerFlush","t0","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","TypeError","elapsed","emptyOn","emptyTween","schedules","__transition","id","self","tween","j","state","__data__","tick","duration","ease","timing","init","schedule","cssNode","cssRoot","cssView","svgNode","active","empty","degrees","PI","translateX","translateY","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","translate","scale","interpolateTransformCss","createElement","documentElement","defaultView","transform","appendChild","removeChild","decompose","interpolateTransformSvg","createElementNS","setAttribute","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","splice","tweenFunction","tweenValue","transition","_id","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","space","local","attrConstant","interpolate","value1","string00","interpolate0","string1","string0","getAttribute","attrConstantNS","getAttributeNS","attrFunction","string10","attrFunctionNS","attrInterpolate","attrInterpolateNS","setAttributeNS","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","listener","on0","on1","sit","Selection","styleInterpolate","styleTween","textInterpolate","textContent","textTween","Transition","groups","parents","_groups","_parents","_name","newId","selection_prototype","select","subgroups","subnode","subgroup","selectAll","selectorAll","child","inherit","match","matcher","merge","groups0","groups1","m0","merges","group0","group1","id0","id1","attr","namespace","styleNull","listener0","remove","styleMaybeRemove","textFunction","textConstant","parentNode","Promise","resolve","reject","cancel","interrupt","defaultTiming","number1","number2","cos","sin","object","property","clear","entries","proto","tree","xm","ym","xp","yp","_root","leaf","x0","_x0","y0","_y0","x1","_x1","y1","_y1","_x","_y","next","quadtree","Quadtree","addAll","leaf_copy","treeProto","cover","xz","yz","z","visit","extent","x2","y2","x3","y3","quads","radius","dx","dy","d2","retainer","previous","removeAll","root","visitAfter","random","randomUniform","sourceRandomUniform","randomNormal","mu","sigma","sourceRandomNormal","randomLogNormal","normal","exp","sourceRandomLogNormal","randomIrwinHall","sourceRandomIrwinHall","randomBates","irwinHall","sourceRandomBates","randomExponential","lambda","sourceRandomExponential","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","formatDecimalParts","toExponential","coefficient","prefixExponent","exponent","toFixed","toLocaleString","replace","toPrecision","formatRounded","toUpperCase","prefixes","locale","grouping","thousands","substring","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","prefix","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","i1","formatTrim","charCodeAt","padding","formatPrefix","newInterval","floori","offseti","field","interval","date","d0","d1","setTime","setMonth","setHours","setFullYear","getFullYear","setDate","getMonth","weekday","getDate","getDay","getTimezoneOffset","sunday","monday","tuesday","wednesday","thursday","friday","saturday","getMilliseconds","getSeconds","getMinutes","getHours","getUTCSeconds","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcDay","utcYear","setUTCMonth","setUTCFullYear","getUTCFullYear","localDate","H","M","S","L","utcDate","UTC","pads","numberRe","percentRe","requoteRe","pad","string","requote","formatRe","names","formatLookup","parseWeekdayNumberSunday","w","parseWeekdayNumberMonday","u","parseWeekNumberSunday","U","parseWeekNumberISO","V","parseWeekNumberMonday","W","parseFullYear","parseYear","parseZone","Z","parseQuarter","parseMonthNumber","parseDayOfMonth","parseDayOfYear","parseHour24","parseMinutes","parseSeconds","parseMilliseconds","parseMicroseconds","parseLiteralPercent","parseUnixTimestamp","Q","parseUnixTimestampSeconds","formatDayOfMonth","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMicroseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekdayNumberMonday","day","formatWeekNumberSunday","dISO","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYearISO","formatFullYear","formatFullYearISO","formatZone","formatUTCDayOfMonth","formatUTCHour24","getUTCHours","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","getUTCMilliseconds","formatUTCMicroseconds","formatUTCMonthNumber","getUTCMonth","formatUTCMinutes","getUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","dow","formatUTCWeekNumberSunday","UTCdISO","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCYearISO","formatUTCFullYear","formatUTCFullYearISO","formatUTCZone","formatLiteralPercent","formatUnixTimestamp","formatUnixTimestampSeconds","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","periodLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","utcFormats","parses","parseSpecifier","charAt","newParse","week","X","utcFormat","utcParse","formatLocale","utcMonth","utcHour","setUTCMinutes","utcMinute","setUTCSeconds","RedBlackTree","RedBlackNode","C","R","P","N","RedBlackRotateLeft","RedBlackRotateRight","RedBlackFirst","insert","after","grandpa","uncle","sibling","createEdge","edge","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","ax","ay","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","arc","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","cx","epsilon2","ha","hc","circle","before","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","Diagram","sites","sort","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","dc","v00","v01","v11","v10","clipCells","edges","polygons","polygon","triangles","s0","e1","s1","links","_found","vx","vy","SQRT2","Transform","point","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","rescaleY","targetDepth","depth","height","justify","sourceLinks","center","targetLinks","ascendingSourceBreadth","ascendingBreadth","ascendingTargetBreadth","defaultId","defaultNodes","graph","defaultLinks","nodeById","computeLinkBreadths","link","Sankey","py","linkSort","iterations","sankey","computeNodeLinks","computeNodeValues","computeNodeDepths","computeNodeHeights","computeNodeBreadths","fixedValue","current","columns","kx","layer","column","computeNodeLayers","ky","reorderLinks","initializeNodeBreadths","alpha","beta","relaxRightToLeft","relaxLeftToRight","targetTop","reorderNodeLinks","resolveCollisions","sourceTop","subject","resolveCollisionsBottomToTop","resolveCollisionsTopToBottom","update","nodeId","nodeAlign","nodeSort","nodeWidth","nodePadding","linkSource","linkTarget","curve","context","buffer","argv","path","curveHorizontal","moveTo","bezierCurveTo","horizontalSource","horizontalTarget","pi","tau","tauEpsilon","Path","closePath","lineTo","quadraticCurveTo","arcTo","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","a0","a1","ccw","cw","da","rect","EnterNode","datum","ownerDocument","namespaceURI","_parent","insertBefore","bindIndex","enter","exit","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","previousSibling","firstChild","creatorInherit","uri","creatorFixed","constantNull","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","enterGroup","updateGroup","_enter","_exit","sparse","onenter","append","onupdate","onexit","order","compareDocumentPosition","compareNode","sortgroups","sortgroup","classed","html","creator","deep","ARROW_DOWN","ARROW_UP","END","ENTER","HOME","SPACE","POSITION_ABSOLUTE","POSITION_FIXED","getWindow","_node$ownerDocument","getComputedStyle$1","isNode","Node","getNodeName","nodeName","isHTMLElement","HTMLElement","isElement","Element","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","safari","isSafari","css","perspective","containerType","backdropFilter","some","willChange","contain","CSS","supports","isLastTraversableNode","createEmptyCoords","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","contextElement","getScale","domElement","getBoundingClientRect","noOffsets","getVisualOffsets","isFixed","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","win","visualViewport","offsetLeft","offsetTop","includeScale","isFixedStrategy","offsetParent","clientRect","visualOffsets","offsetWin","currentIFrame","frameElement","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getDocumentElement","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getWindowScrollBarX","getParentNode","result","assignedSlot","host","getOverflowAncestors","scrollableAncestor","getNearestOverflowAncestor","body","isBody","getClientRectFromClippingAncestor","clippingAncestor","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getTrueOffsetParent","polyfill","getOffsetParent","currentNode","getContainingBlock","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","platform","getClippingRect","boundary","rootBoundary","clippingAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","firstClippingAncestor","clippingRect","reduce","accRect","convertOffsetParentRelativeRectToViewportRelativeRect","getDimensions","reference","floating","getOffsetParentFn","getDimensionsFn","getClientRects","isRTL","autoUpdate","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","passive","cleanupIo","onMove","timeoutId","io","cleanup","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","ratio","intersectionRatio","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","prevRefRect","frameLoop","nextRefRect","computePosition","mergedOptions","platformWithCache","ITEM_CLASS","BLink","_this$item","_this$item2","href","to","isLink","is","extraAttrs","listeners","click","_item$action","_this$item3","_this$item3$extraAttr","_this$item4","_this$item4$extraAttr","_this$item$wrapperCla","_this$item5","wrapperClass","keydown","isCustomContent","MouseEvent","_this$$refs$item","_g","listIndex","wrapperListeners","itemComponent","_b","componentIndex","sides","alignments","placements","acc","side","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","param","getSide","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getOppositeAxisPlacements","flipAlignment","isStart","lr","rl","tb","bt","getSideList","getPaddingObject","expandPaddingObject","rectToClientRect","GlClearIconButton","GlIcon","model","prop","placeholder","$listeners","input","focusInput","domProps","inputListeners","$event","stopPropagation","clearInput","nameId","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","GlListboxItem","GlListboxGroup","GlButton","GlSearchBoxByType","GlListboxSearchInput","GlLoadingIcon","GlIntersectionObserver","selected","multiple","headerText","isCheckCentered","searchable","searching","infiniteScroll","totalItems","infiniteScrollLoading","noResultsText","searchPlaceholder","resetButtonLabel","showSelectAllButtonLabel","srOnlyResultsLabel","Function","selectedValues","listboxId","searchStr","topBoundaryVisible","bottomBoundaryVisible","hasItems","listboxTag","_this$flattenedOption","findIndex","showNoResultsText","showSelectAllButton","toggleClasses","hasSelection","footer","watch","immediate","newSelected","$nextTick","observeScroll","_this$scrollObserver","scrollObserver","groupClasses","_this$selectedIndices","focusSearchInput","selectedIndices","isSearchInput","_this$$refs$list","searchBox","isSelected","onMultiSelect","onSingleSelect","selectedValue","searchTerm","_this$scrollObserver2","observer","_entry$target","$__visibilityProp","isIntersecting","topBoundary","bottomBoundary","listboxToggleText","toggleButtonClasses","headerId","onResetButtonClicked","onSelectAllButtonClicked","search","_k","keyCode","preventDefault","$$v","listboxClasses","itemTag","hasHeader","isFocused","onSelect","listboxItemMoreItemsAriaAttributes","option","onIntersectionObserverAppear","hasFooter","xhtml","svg","xlink","xml","xmlns","getObserver","$_gl_intersectionHandler","$_gl_intersectionObserver","BORDER_CLASSES","bordered","borderPosition","_this$group","showHeader","borderClass","groupLabeledBy","GlFormInput","inheritAttrs","borderless","clearButtonTitle","isLoading","tooltipContainer","attributes","$attrs","onInput","focusin","onFocusin","focusout","onFocusout","hasValue","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","TRANSITION_PROPS","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","TRANSITION_HANDLERS","afterEnter","leave","afterLeave","appear","BVCollapse","functional","ROOT_ACTION_EVENT_NAME_TOGGLE","ROOT_ACTION_EVENT_NAME_REQUEST_STATE","ROOT_EVENT_NAME_ACCORDION","ROOT_EVENT_NAME_STATE","ROOT_EVENT_NAME_SYNC_STATE","mixin","modelMixin","modelProps","MODEL_PROP_NAME","MODEL_EVENT_NAME","defaultValue","accordion","BCollapse","show","transitioning","collapse","visible","newValue","oldValue","emitState","listenOnRoot","handleToggleEvent","handleAccordionEvent","safeId","emitSync","emitOnRoot","openedId","openAccordion","isThis","$content","classObject","normalizeSlot","slotScope","onEnter","onAfterEnter","onLeave","onAfterLeave","BASE_DROPDOWN_CLASS","Outside","ariaHaspopup","ariaLabelledby","mainAxis","openedYet","baseDropdownId","_this$toggleText","hasNoVisibleToggleText","isIconOnly","toggleLabelledBy","isEllipsisButton","isCaretOnly","isDefaultToggle","buttonTextClasses","toggleButtonTextClasses","ariaAttributes","toggleOptions","_this$$refs$toggle","firstElementChild","middleware","allowedPlacements","_this$nonScrollableCo","availableHeight","contentsEl","contentsAvailableHeight","nonScrollableContentHeight","maxHeight","toggleElement","checkToggleFocusable","stopFloating","calculateNonScrollableAreaHeight","MutationObserver","childList","subtree","stopAutoUpdate","async","floatingUIConfig","_this$observer","_this$stopAutoUpdate","prevented","startFloating","hadFocusWithin","activeElement","hasToggled","focusToggle","tagName","toggleOnEnter","toggleOnSpace","scrollableArea","floatingElementBoundingBox","scrollableAreaBoundingBox","toggleComponent","toggleAttributes","toggleListeners","panelClasses","computeCoordsFromPlacement","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","config","validMiddleware","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","initialPlacement","detectOverflow","_await$platform$isEle","elementContext","altBoundary","paddingObject","clippingClientRect","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","shouldAddOffset","alignmentOffset","centerOffset","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","autoAlignment","detectOverflowOptions","placements$1","getPlacementList","currentPlacement","alignmentSides","currentOverflows","allOverflows","overflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","checkMainAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","overflowsData","_middlewareData$flip2","_overflowsData$filter","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","referenceHiddenOffsets","referenceHidden","escapedOffsets","escaped","getBoundingRect","minX","minY","inline","nativeClientRects","clientRects","sortedRects","prevRect","getRectsByLine","fallback","resetRects","firstRect","lastRect","isTop","isLeftSide","maxRight","minLeft","measureRects","_middlewareData$offse","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","convertValueToCoords","shift","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","filterEvents","mouseenter","mouseleave","filterContextListener","contextListener","related","event1","event0","onRemove","__on","onAdd","wrap","customEvent","sourceEvent","i18n","loadingText","s__","pipelineSummaryFetchError","__","pipelineStatusText","pipelineCommitText","CiIcon","GlLink","GlSprintf","PipelineMiniGraph","TimeAgoTooltip","fullPath","iid","includeCommitInfo","pipelineEtag","pipeline","pollInterval","PIPELINE_POLL_INTERVAL_DEFAULT","apollo","getQueryHeaders","query","getPipelineSummaryQuery","notifyOnNetworkStatusChange","variables","networkStatus","NETWORK_STATUS_READY","increasePollInterval","project","createAlert","message","reportToSentry","commitPath","_this$pipeline","commit","webPath","commitSha","_this$pipeline2","shortId","downstreamPipelines","_this$pipeline3","downstream","finishedAt","_this$pipeline4","$apollo","queries","pipelineId","_this$pipeline5","getIdFromGraphQLId","pipelinePath","_this$status","status","detailsPath","pipelineStages","_this$pipeline6","stages","_this$pipeline7","detailedStatus","statusLabel","_this$status2","label","upstreamPipeline","_this$pipeline8","upstream","mounted","_this","Visibility","change","handlePolling","hidden","resetPollInterval","currentInterval","intervalIncreased","PIPELINE_POLL_INTERVAL_BACKOFF","FOUR_MINUTES_IN_MS","getIncreasedPollInterval","onJobActionExecuted","toggleSelection","checkedClasses"],"mappings":"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","file":"commons-pages.projects.ci.pipeline_editor.show-pages.projects.commit.pipelines-pages.projects.commit-4ed71dfb.e1fffe08.chunk.js","sourcesContent":["var baseClamp = require('./_baseClamp'),\n toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","import isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nconst isOption = item => Boolean(item) && (isString(item.value) || isNumber(item.value));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isGroup = function () {\n let {\n options\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Array.isArray(options) && options.every(isOption);\n};\nconst hasNoDuplicates = array => array.length === new Set(array).size;\nconst flattenedOptions = items => items.flatMap(item => isOption(item) ? item : item.options);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isAllOptionsOrAllGroups = items => items.every(isOption) || items.every(isGroup);\nconst hasUniqueValues = items => hasNoDuplicates(flattenedOptions(items).map(_ref => {\n let {\n value\n } = _ref;\n return value;\n}));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst hasUniqueGroups = items => hasNoDuplicates(items.filter(isGroup).map(_ref2 => {\n let {\n text\n } = _ref2;\n return text;\n}));\nconst itemsValidator = items => isAllOptionsOrAllGroups(items) && hasUniqueValues(items) && hasUniqueGroups(items);\n\nexport { flattenedOptions, isOption, itemsValidator };\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","import {\n getTimeago,\n localeDateFormat,\n newDate,\n timeagoLanguageCode,\n} from '~/lib/utils/datetime_utility';\n\n/**\n * Mixin with time ago methods used in some vue components\n */\nexport default {\n methods: {\n timeFormatted(time, format) {\n const timeago = getTimeago(format);\n\n return timeago.format(newDate(time), timeagoLanguageCode);\n },\n\n tooltipTitle(time) {\n return localeDateFormat.asDateTimeFull.format(newDate(time));\n },\n },\n};\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","export {default as path} from \"./path.js\";\n","import Vue from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\n\nconst itemValidator = item => {\n var _item$text;\n return (item === null || item === void 0 ? void 0 : (_item$text = item.text) === null || _item$text === void 0 ? void 0 : _item$text.length) > 0 && !Array.isArray(item === null || item === void 0 ? void 0 : item.items);\n};\nconst isItem = item => Boolean(item) && itemValidator(item);\nconst isGroup = group => Boolean(group) && Array.isArray(group.items) && Boolean(group.items.length) &&\n// eslint-disable-next-line unicorn/no-array-callback-reference\ngroup.items.every(isItem);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst itemsValidator = items => items.every(isItem) || items.every(isGroup);\nconst isListItem = tag => ['gl-disclosure-dropdown-group', 'gl-disclosure-dropdown-item', 'li'].includes(tag);\nconst isValidSlotTagVue2 = vNode => {\n var _vNode$componentOptio;\n return Boolean(vNode) && isListItem(((_vNode$componentOptio = vNode.componentOptions) === null || _vNode$componentOptio === void 0 ? void 0 : _vNode$componentOptio.tag) || vNode.tag);\n};\nconst isValidSlotTagVue3 = vNode => {\n var _vNode$type;\n return [DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME].includes((_vNode$type = vNode.type) === null || _vNode$type === void 0 ? void 0 : _vNode$type.name) || vNode.type === 'li';\n};\nconst hasOnlyListItemsVue2 = defaultSlot => {\n const nodes = defaultSlot();\n if (!Array.isArray(nodes)) {\n return false;\n }\n const tags = nodes.filter(vNode => vNode.tag);\n return tags.length && tags.every(tag => isValidSlotTagVue2(tag));\n};\nconst hasOnlyListItemsVue3 = defaultSlot => {\n const nodes = defaultSlot();\n const fragment = nodes.find(node => Array.isArray(node.children) && node.children.length);\n const targetNodes = fragment ? fragment.children : nodes;\n return targetNodes\n // Remove empty text vNodes\n .filter(vNode => !isString(vNode.text) || vNode.text.trim().length > 0).every(vNode => isValidSlotTagVue3(vNode));\n};\nconst hasOnlyListItems = defaultSlot => {\n if (!isFunction(defaultSlot)) {\n return false;\n }\n if (Vue.version.startsWith('3')) {\n return hasOnlyListItemsVue3(defaultSlot);\n }\n return hasOnlyListItemsVue2(defaultSlot);\n};\n\nexport { hasOnlyListItems, isGroup, isItem, itemsValidator };\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"CiIcon\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"DetailedStatus\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"text\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":71}};\n doc.loc.source = {\"body\":\"fragment CiIcon on DetailedStatus {\\n id\\n icon\\n text\\n detailsPath\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"CiIcon\"] = oneQuery(doc, \"CiIcon\");\n \n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","const DISCLOSURE_DROPDOWN_ITEM_NAME = 'GlDisclosureDropdownItem';\nconst DISCLOSURE_DROPDOWN_GROUP_NAME = 'GlDisclosureDropdownGroup';\nconst DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS = {\n top: 'top',\n bottom: 'bottom'\n};\n\nexport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME, DISCLOSURE_DROPDOWN_ITEM_NAME };\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport { stopEvent, filterVisible } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_FOCUS_CONTENT, POSITION_ABSOLUTE, POSITION_FIXED, HOME, END, ARROW_UP, ARROW_DOWN, ENTER, SPACE, GL_DROPDOWN_CONTENTS_CLASS } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlBaseDropdown, { BASE_DROPDOWN_CLASS } from '../base_dropdown/base_dropdown';\nimport GlDisclosureDropdownItem, { ITEM_CLASS } from './disclosure_dropdown_item';\nimport GlDisclosureDropdownGroup from './disclosure_dropdown_group';\nimport { itemsValidator, hasOnlyListItems, isItem } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst DROPDOWN_SELECTOR = `.${BASE_DROPDOWN_CLASS}`;\nconst ITEM_SELECTOR = `.${ITEM_CLASS}`;\nvar script = {\n name: 'GlDisclosureDropdown',\n events: {\n GL_DROPDOWN_SHOWN,\n GL_DROPDOWN_HIDDEN,\n GL_DROPDOWN_BEFORE_CLOSE,\n GL_DROPDOWN_FOCUS_CONTENT\n },\n components: {\n GlBaseDropdown,\n GlDisclosureDropdownItem,\n GlDisclosureDropdownGroup\n },\n props: {\n /**\n * Items to display in the dropdown\n */\n items: {\n type: Array,\n required: false,\n default: () => [],\n validator: itemsValidator\n },\n /**\n * Toggle button text\n */\n toggleText: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Toggle text to be read by screen readers only\n */\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Styling option - dropdown's toggle category\n */\n category: {\n type: String,\n required: false,\n default: buttonCategoryOptions.primary,\n validator: value => value in buttonCategoryOptions\n },\n /**\n * Styling option - dropdown's toggle variant\n */\n variant: {\n type: String,\n required: false,\n default: dropdownVariantOptions.default,\n validator: value => value in dropdownVariantOptions\n },\n /**\n * The size of the dropdown toggle\n */\n size: {\n type: String,\n required: false,\n default: 'medium',\n validator: value => value in buttonSizeOptions\n },\n /**\n * Icon name that will be rendered in the toggle button\n */\n icon: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Set to \"true\" to disable the dropdown\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Set to \"true\" when dropdown content (items) is loading\n * It will render a small loader in the dropdown toggle and make it disabled\n */\n loading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Custom toggle id.\n * For instance, it can be referenced by tooltip or popover\n */\n toggleId: {\n type: String,\n required: false,\n default: () => uniqueId('dropdown-toggle-btn-')\n },\n /**\n * Additional CSS classes to customize toggle appearance\n */\n toggleClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n /**\n * Set to \"true\" to hide the caret\n */\n noCaret: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Align disclosure dropdown with respect to the toggle button\n */\n placement: {\n type: String,\n required: false,\n default: 'bottom-start',\n validator: value => Object.keys(dropdownPlacements).includes(value)\n },\n /**\n * The `aria-labelledby` attribute value for the toggle button\n * Provide the string of ids seperated by space\n */\n toggleAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The `aria-labelledby` attribute value for the list of options\n * Provide the string of ids seperated by space\n */\n listAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Render the toggle button as a block element\n */\n block: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Custom offset to be applied to Floating UI's offset middleware.\n * https://floating-ui.com/docs/offset\n */\n dropdownOffset: {\n type: [Number, Object],\n required: false,\n default: undefined\n },\n /**\n * Lets the dropdown extend to match its content's width, up to a maximum width\n * defined by the `$gl-new-dropdown-max-width` variable.\n */\n fluidWidth: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Close the dropdown on item click (action)\n */\n autoClose: {\n type: Boolean,\n required: false,\n default: true\n },\n /**\n * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n * fit in, setting this to fixed will let it position itself above its container.\n * https://floating-ui.com/docs/computePosition#strategy\n */\n positioningStrategy: {\n type: String,\n required: false,\n default: POSITION_ABSOLUTE,\n validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n },\n /**\n * Opens dropdown on render\n */\n startOpened: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n data() {\n return {\n disclosureId: uniqueId('disclosure-'),\n nextFocusedItemIndex: null\n };\n },\n computed: {\n disclosureTag() {\n var _this$items;\n if ((_this$items = this.items) !== null && _this$items !== void 0 && _this$items.length ||\n // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n hasOnlyListItems(this.$scopedSlots.default || this.$slots.default)) {\n return 'ul';\n }\n return 'div';\n },\n hasCustomToggle() {\n return Boolean(this.$scopedSlots.toggle);\n }\n },\n mounted() {\n if (this.startOpened) {\n this.open();\n }\n },\n methods: {\n open() {\n this.$refs.baseDropdown.open();\n },\n close() {\n this.$refs.baseDropdown.close();\n },\n onShow() {\n /**\n * Emitted when dropdown is shown\n *\n * @event shown\n */\n this.$emit(GL_DROPDOWN_SHOWN);\n },\n onBeforeClose(event) {\n /**\n * Emitted when dropdown is about to be closed\n *\n * @event beforeClose\n */\n this.$emit(GL_DROPDOWN_BEFORE_CLOSE, event);\n },\n onHide() {\n /**\n * Emitted when dropdown is hidden\n *\n * @event hidden\n */\n this.$emit(GL_DROPDOWN_HIDDEN);\n this.nextFocusedItemIndex = null;\n },\n onKeydown(event) {\n const {\n code\n } = event;\n const elements = this.getFocusableListItemElements();\n if (elements.length < 1) return;\n let stop = true;\n if (code === HOME) {\n this.focusItem(0, elements);\n } else if (code === END) {\n this.focusItem(elements.length - 1, elements);\n } else if (code === ARROW_UP) {\n this.focusNextItem(event, elements, -1);\n } else if (code === ARROW_DOWN) {\n this.focusNextItem(event, elements, 1);\n } else if (code === ENTER || code === SPACE) {\n this.handleAutoClose(event);\n } else {\n stop = false;\n }\n if (stop) {\n stopEvent(event);\n }\n },\n getFocusableListItemElements() {\n var _this$$refs$content;\n const items = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelectorAll(ITEM_SELECTOR);\n return filterVisible(Array.from(items || []));\n },\n focusNextItem(event, elements, offset) {\n const {\n target\n } = event;\n const currentIndex = elements.indexOf(target);\n const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n this.focusItem(nextIndex, elements);\n },\n focusItem(index, elements) {\n var _elements$index;\n this.nextFocusedItemIndex = index;\n (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n },\n closeAndFocus() {\n this.$refs.baseDropdown.closeAndFocus();\n },\n handleAction(action) {\n // See https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4376 for\n // detailed explanation why we need requestAnimationFrame\n window.requestAnimationFrame(() => {\n /**\n * Emitted when one of disclosure dropdown items is clicked\n *\n * @event action\n */\n this.$emit('action', action);\n });\n },\n handleAutoClose(e) {\n if (this.autoClose && e.target.closest(ITEM_SELECTOR) && e.target.closest(DROPDOWN_SELECTOR) === this.$refs.baseDropdown.$el) {\n this.closeAndFocus();\n }\n },\n uniqueItemId() {\n return uniqueId(`disclosure-item-`);\n },\n isItem\n },\n GL_DROPDOWN_CONTENTS_CLASS\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",staticClass:\"gl-disclosure-dropdown\",attrs:{\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.toggleText,\"toggle-class\":_vm.toggleClass,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"block\":_vm.block,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide,_vm.$options.events.GL_DROPDOWN_BEFORE_CLOSE,_vm.onBeforeClose,_vm.$options.events.GL_DROPDOWN_FOCUS_CONTENT,_vm.onKeydown]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._t(\"header\"),_vm._v(\" \"),_c(_vm.disclosureTag,{ref:\"content\",tag:\"component\",class:_vm.$options.GL_DROPDOWN_CONTENTS_CLASS,attrs:{\"id\":_vm.disclosureId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.toggleId,\"data-testid\":\"disclosure-content\",\"tabindex\":\"-1\"},on:{\"keydown\":_vm.onKeydown,\"click\":_vm.handleAutoClose}},[_vm._t(\"default\",function(){return [_vm._l((_vm.items),function(item,index){return [(_vm.isItem(item))?[_c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([('list-item' in _vm.$scopedSlots)?{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}:null],null,true)})]:[_c('gl-disclosure-dropdown-group',{key:item.name,attrs:{\"bordered\":index !== 0,\"group\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.$scopedSlots['list-item'])?_vm._l((item.items),function(groupItem){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":groupItem},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":groupItem})]},proxy:true}],null,true)})}):_vm._e()],2)]]})]})],2),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { DROPDOWN_SELECTOR, ITEM_SELECTOR };\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('time',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.viewport\",value:({ placement: _vm.tooltipPlacement }),expression:\"{ placement: tooltipPlacement }\",modifiers:{\"viewport\":true}}],class:_vm.cssClass,attrs:{\"title\":_vm.tooltipText,\"datetime\":_vm.time}},[_vm._t(\"default\",function(){return [(_vm.enableTruncation)?[_c('gl-truncate',{attrs:{\"text\":_vm.timeAgo,\"with-tooltip\":\"\"}})]:[_vm._v(_vm._s(_vm.timeAgo))]]},{\"timeAgo\":_vm.timeAgo})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago_tooltip.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./time_ago_tooltip.vue?vue&type=script&lang=js\"","<script>\nimport { GlTruncate, GlTooltipDirective } from '@gitlab/ui';\n\nimport { DATE_TIME_FORMATS, DEFAULT_DATE_TIME_FORMAT } from '~/lib/utils/datetime_utility';\nimport timeagoMixin from '../mixins/timeago';\n\n/**\n * Port of ruby helper time_ago_with_tooltip\n */\n\nexport default {\n directives: {\n GlTooltip: GlTooltipDirective,\n },\n components: {\n GlTruncate,\n },\n mixins: [timeagoMixin],\n props: {\n time: {\n type: [String, Number, Date],\n required: true,\n },\n tooltipPlacement: {\n type: String,\n required: false,\n default: 'top',\n },\n cssClass: {\n type: String,\n required: false,\n default: '',\n },\n dateTimeFormat: {\n type: String,\n required: false,\n default: DEFAULT_DATE_TIME_FORMAT,\n validator: (timeFormat) => DATE_TIME_FORMATS.includes(timeFormat),\n },\n enableTruncation: {\n type: Boolean,\n required: false,\n default: false,\n },\n },\n computed: {\n timeAgo() {\n return this.timeFormatted(this.time, this.dateTimeFormat);\n },\n tooltipText() {\n return this.enableTruncation ? undefined : this.tooltipTitle(this.time);\n },\n },\n};\n</script>\n<template>\n <time\n v-gl-tooltip.viewport=\"{ placement: tooltipPlacement }\"\n :class=\"cssClass\"\n :title=\"tooltipText\"\n :datetime=\"time\"\n ><slot :time-ago=\"timeAgo\"\n ><template v-if=\"enableTruncation\"><gl-truncate :text=\"timeAgo\" with-tooltip /></template\n ><template v-else>{{ timeAgo }}</template></slot\n ></time\n >\n</template>\n","import { render, staticRenderFns } from \"./time_ago_tooltip.vue?vue&type=template&id=26d04390\"\nimport script from \"./time_ago_tooltip.vue?vue&type=script&lang=js\"\nexport * from \"./time_ago_tooltip.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","/**\n * Map<HTMLElement, { callback: Function, eventTypes: Array<string> }>\n */\nconst callbacks = new Map();\nconst click = 'click';\nconst focusin = 'focusin';\nconst supportedEventTypes = [click, focusin];\nconst defaultEventType = click;\n\n/**\n * A Set to keep track of currently active event types.\n * This ensures that event listeners are only added for the event types that are in use.\n *\n * @type {Set<string>}\n */\nconst activeEventTypes = new Set();\nlet lastMousedown = null;\nconst globalListener = event => {\n callbacks.forEach((_ref, element) => {\n let {\n callback,\n eventTypes\n } = _ref;\n const originalEvent = event.type === click ? lastMousedown || event : event;\n if (\n // Ignore events that aren't targeted outside the element\n element.contains(originalEvent.target) ||\n // Ignore events that aren't the specified types for this element\n !eventTypes.includes(event.type)) {\n return;\n }\n try {\n callback(event);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n });\n if (event.type === click) {\n lastMousedown = null;\n }\n};\n\n// We need to listen for mouse events because text selection fires click event only when selection ends.\n// This means that the click event target could differ from the element where it originally started.\n// As example: if we use mouse events we could guarantee that selecting text within a dropdown won't close it.\nconst onMousedown = event => {\n lastMousedown = event;\n};\nconst startListening = eventTypes => {\n eventTypes.forEach(eventType => {\n if (!activeEventTypes.has(eventType)) {\n // Listening to mousedown events, ensures that a text selection doesn't trigger the\n // GlOutsideDirective 'click' callback if the selection started within the target element.\n if (eventType === click) {\n document.addEventListener('mousedown', onMousedown);\n }\n\n // Added { capture: true } to all event types to prevent the behavior discussed in https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/1686#note_412545027\n // Ensures the event listener handles the event in the capturing phase, avoiding issues encountered previously.\n // Cannot be tested with Jest or Cypress, but can be tested with Playwright in the future: https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4272#note_1947425384\n document.addEventListener(eventType, globalListener, {\n capture: true\n });\n activeEventTypes.add(eventType);\n }\n });\n lastMousedown = null;\n};\nconst stopListening = eventTypesToUnbind => {\n eventTypesToUnbind.forEach(eventType => {\n if (activeEventTypes.has(eventType)) {\n if ([...callbacks.values()].every(_ref2 => {\n let {\n eventTypes\n } = _ref2;\n return !eventTypes.includes(eventType);\n })) {\n document.removeEventListener(eventType, globalListener);\n activeEventTypes.delete(eventType);\n }\n }\n });\n if (eventTypesToUnbind.includes(click) && !activeEventTypes.has(click)) {\n document.removeEventListener('mousedown', onMousedown);\n }\n};\nfunction parseBinding(_ref3) {\n let {\n arg,\n value,\n modifiers\n } = _ref3;\n const modifiersList = Object.keys(modifiers);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof value !== 'function') {\n throw new Error(`[GlOutsideDirective] Value must be a function; got ${typeof value}!`);\n }\n if (typeof arg !== 'undefined') {\n throw new Error(`[GlOutsideDirective] Arguments are not supported. Consider using modifiers instead.`);\n }\n const unsupportedModifiers = modifiersList.filter(modifier => !supportedEventTypes.includes(modifier));\n if (unsupportedModifiers.length > 0) {\n throw new Error(`[GlOutsideDirective] Cannot bind ${unsupportedModifiers.join(', ')} events; supported event types are: ${supportedEventTypes.join(', ')}`);\n }\n }\n return {\n callback: value,\n eventTypes: modifiersList.length > 0 ? modifiersList : [defaultEventType]\n };\n}\nconst bind = (el, bindings) => {\n const {\n callback,\n eventTypes\n } = parseBinding(bindings);\n if (callbacks.has(el)) {\n // This element is already bound. This is possible if two components, which\n // share the same root node, (i.e., one is a higher-order component\n // wrapping another) _both_ have this directive applied.\n //\n // Because Vue binds directives in the direction towards the root, only the\n // deepest instance of this directive will be bound.\n //\n // A future iteration may add support for binding all instances on a given\n // element.\n return;\n }\n callbacks.set(el, {\n callback,\n eventTypes\n });\n startListening(eventTypes);\n};\nconst unbind = el => {\n const entry = callbacks.get(el);\n if (entry) {\n callbacks.delete(el);\n stopListening(entry.eventTypes);\n }\n};\nconst OutsideDirective = {\n bind,\n unbind\n};\n\nexport { OutsideDirective };\n","export var slice = Array.prototype.slice;\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","export var slice = Array.prototype.slice;\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": formatDecimal,\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","// base dropdown events\nconst GL_DROPDOWN_SHOWN = 'shown';\nconst GL_DROPDOWN_HIDDEN = 'hidden';\nconst GL_DROPDOWN_BEFORE_CLOSE = 'beforeClose';\nconst GL_DROPDOWN_FOCUS_CONTENT = 'focusContent';\n\n// KEY Codes\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_UP = 'ArrowUp';\nconst END = 'End';\nconst ENTER = 'Enter';\nconst HOME = 'Home';\nconst SPACE = 'Space';\n\n// Positioning strategies\n// https://floating-ui.com/docs/computePosition#strategy\nconst POSITION_ABSOLUTE = 'absolute';\nconst POSITION_FIXED = 'fixed';\nconst GL_DROPDOWN_CONTENTS_CLASS = 'gl-new-dropdown-contents';\n\nexport { ARROW_DOWN, ARROW_UP, END, ENTER, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_FOCUS_CONTENT, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_SHOWN, HOME, POSITION_ABSOLUTE, POSITION_FIXED, SPACE };\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n var _node$ownerDocument;\n return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction isNode(value) {\n return value instanceof getWindow(value).Node;\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\n\nfunction isHTMLElement(value) {\n return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n return value instanceof getWindow(value).Element;\n}\nfunction isShadowRoot(node) {\n // Browsers without `ShadowRoot` support.\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle$1(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n const safari = isSafari();\n const css = getComputedStyle$1(element);\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction isSafari() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createEmptyCoords = v => ({\n x: v,\n y: v\n});\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createEmptyCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createEmptyCoords(0);\nfunction getVisualOffsets(element, isFixed, floatingOffsetParent) {\n var _win$visualViewport, _win$visualViewport2;\n if (isFixed === void 0) {\n isFixed = true;\n }\n if (!isSafari()) {\n return noOffsets;\n }\n const win = element ? getWindow(element) : window;\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) {\n return noOffsets;\n }\n return {\n x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0,\n y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0\n };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createEmptyCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = getVisualOffsets(domElement, isFixedStrategy, offsetParent);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentIFrame = win.frameElement;\n while (currentIFrame && offsetParent && offsetWin !== win) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentIFrame = getWindow(currentIFrame).frameElement;\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\nfunction getDocumentElement(node) {\n return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.pageXOffset,\n scrollTop: element.pageYOffset\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n if (offsetParent === documentElement) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createEmptyCoords(1);\n const offsets = createEmptyCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n };\n}\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n var _node$ownerDocument;\n if (list === void 0) {\n list = [];\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isSafari();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createEmptyCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n ...clippingAncestor,\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n return getCssDimensions(element);\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else {\n currentNode = getParentNode(currentNode);\n }\n }\n return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const window = getWindow(element);\n if (!isHTMLElement(element)) {\n return window;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n return window;\n }\n return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createEmptyCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\nconst platform = {\n getClippingRect,\n convertOffsetParentRelativeRectToViewportRelativeRect,\n isElement,\n getDimensions,\n getOffsetParent,\n getDocumentElement,\n getScale,\n async getElementRects(_ref) {\n let {\n reference,\n floating,\n strategy\n } = _ref;\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n return {\n reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n floating: {\n x: 0,\n y: 0,\n ...(await getDimensionsFn(floating))\n }\n };\n },\n getClientRects: element => Array.from(element.getClientRects()),\n isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n clearTimeout(timeoutId);\n io && io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const {\n left,\n top,\n width,\n height\n } = element.getBoundingClientRect();\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 100);\n } else {\n refresh(false, ratio);\n }\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n resizeObserver && resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo && cleanupIo();\n resizeObserver && resizeObserver.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import { BLink } from '../../../../vendor/bootstrap-vue/src/components/link/link';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport { isItem } from './utils';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst ITEM_CLASS = 'gl-new-dropdown-item';\nvar script = {\n name: DISCLOSURE_DROPDOWN_ITEM_NAME,\n ITEM_CLASS,\n components: {\n BLink\n },\n props: {\n item: {\n type: Object,\n required: false,\n default: null,\n validator: isItem\n }\n },\n computed: {\n isLink() {\n var _this$item, _this$item2;\n return typeof ((_this$item = this.item) === null || _this$item === void 0 ? void 0 : _this$item.href) === 'string' || typeof ((_this$item2 = this.item) === null || _this$item2 === void 0 ? void 0 : _this$item2.to) === 'string';\n },\n isCustomContent() {\n return Boolean(this.$scopedSlots.default);\n },\n itemComponent() {\n const {\n item\n } = this;\n if (this.isLink) return {\n is: BLink,\n attrs: {\n href: item.href,\n to: item.to,\n ...item.extraAttrs\n },\n listeners: {\n click: this.action\n }\n };\n return {\n is: 'button',\n attrs: {\n ...(item === null || item === void 0 ? void 0 : item.extraAttrs),\n type: 'button'\n },\n listeners: {\n click: () => {\n var _item$action;\n item === null || item === void 0 ? void 0 : (_item$action = item.action) === null || _item$action === void 0 ? void 0 : _item$action.call(undefined, item);\n this.action();\n }\n }\n };\n },\n listIndex() {\n var _this$item3, _this$item3$extraAttr;\n return (_this$item3 = this.item) !== null && _this$item3 !== void 0 && (_this$item3$extraAttr = _this$item3.extraAttrs) !== null && _this$item3$extraAttr !== void 0 && _this$item3$extraAttr.disabled ? null : 0;\n },\n componentIndex() {\n var _this$item4, _this$item4$extraAttr;\n return (_this$item4 = this.item) !== null && _this$item4 !== void 0 && (_this$item4$extraAttr = _this$item4.extraAttrs) !== null && _this$item4$extraAttr !== void 0 && _this$item4$extraAttr.disabled ? null : -1;\n },\n wrapperClass() {\n var _this$item$wrapperCla, _this$item5;\n return (_this$item$wrapperCla = (_this$item5 = this.item) === null || _this$item5 === void 0 ? void 0 : _this$item5.wrapperClass) !== null && _this$item$wrapperCla !== void 0 ? _this$item$wrapperCla : '';\n },\n wrapperListeners() {\n const listeners = {\n keydown: this.onKeydown\n };\n if (this.isCustomContent) {\n listeners.click = this.action;\n }\n return listeners;\n }\n },\n methods: {\n onKeydown(event) {\n const {\n code\n } = event;\n if (code === ENTER || code === SPACE) {\n if (this.isCustomContent) {\n this.action();\n } else {\n stopEvent(event);\n /** Instead of simply navigating or calling the action, we want\n * the `a/button` to be the target of the event as it might have additional attributes.\n * E.g. `a` might have `target` attribute.\n */\n const e = new MouseEvent('click', {\n bubbles: true,\n cancelable: true\n });\n if (this.isLink) {\n this.$refs.item.$el.dispatchEvent(e);\n } else {\n var _this$$refs$item;\n (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : _this$$refs$item.dispatchEvent(e);\n }\n }\n }\n },\n action() {\n this.$emit('action', this.item);\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',_vm._g({class:[_vm.$options.ITEM_CLASS, _vm.wrapperClass],attrs:{\"tabindex\":_vm.listIndex,\"data-testid\":\"disclosure-dropdown-item\"}},_vm.wrapperListeners),[_vm._t(\"default\",function(){return [_c(_vm.itemComponent.is,_vm._g(_vm._b({ref:\"item\",tag:\"component\",staticClass:\"gl-new-dropdown-item-content\",attrs:{\"tabindex\":_vm.componentIndex}},'component',_vm.itemComponent.attrs,false),_vm.itemComponent.listeners),[_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n \"+_vm._s(_vm.item.text)+\"\\n \")]})],2)])]})],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { ITEM_CLASS };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import GlClearIconButton from '../../../shared_components/clear_icon_button/clear_icon_button';\nimport GlIcon from '../../icon/icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlListboxSearchInput',\n components: {\n GlClearIconButton,\n GlIcon\n },\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n /**\n * If provided, used as value of search input\n */\n value: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Search input placeholder text and aria-label\n */\n placeholder: {\n type: String,\n required: false,\n default: 'Search'\n }\n },\n computed: {\n hasValue() {\n return Boolean(this.value.length);\n },\n inputListeners() {\n return {\n ...this.$listeners,\n input: event => {\n this.$emit('input', event.target.value);\n }\n };\n }\n },\n methods: {\n clearInput() {\n this.$emit('input', '');\n this.focusInput();\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-listbox-search\"},[_c('gl-icon',{staticClass:\"gl-listbox-search-icon\",attrs:{\"name\":\"search-sm\",\"size\":12}}),_vm._v(\" \"),_c('input',_vm._g({ref:\"input\",staticClass:\"gl-listbox-search-input\",attrs:{\"type\":\"search\",\"aria-label\":_vm.placeholder,\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value}},_vm.inputListeners)),_vm._v(\" \"),(_vm.hasValue)?_c('gl-clear-icon-button',{staticClass:\"gl-listbox-search-clear-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)}}}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlListboxGroup',\n props: {\n name: {\n type: String,\n required: true\n },\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n created() {\n this.nameId = uniqueId('gl-listbox-group-');\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"gl-mb-0 gl-pl-0\",attrs:{\"role\":\"group\",\"aria-labelledby\":_vm.nameId}},[_c('li',{staticClass:\"gl-pb-2 gl-pl-4 gl-pt-3 gl-text-sm gl-font-bold gl-text-strong\",class:{ 'gl-sr-only': _vm.textSrOnly },attrs:{\"id\":_vm.nameId,\"role\":\"presentation\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.name))]})],2),_vm._v(\" \"),_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport isNil from 'lodash/isNil';\nimport { stopEvent } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, HOME, END, ARROW_UP, ARROW_DOWN } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport GlLoadingIcon from '../../loading_icon/loading_icon';\nimport GlIntersectionObserver from '../../../utilities/intersection_observer/intersection_observer';\nimport GlSearchBoxByType from '../../search_box_by_type/search_box_by_type';\nimport GlBaseDropdown from '../base_dropdown/base_dropdown';\nimport { translatePlural } from '../../../../utils/i18n';\nimport GlListboxItem from './listbox_item';\nimport GlListboxSearchInput from './listbox_search_input';\nimport GlListboxGroup from './listbox_group';\nimport { itemsValidator, isOption, flattenedOptions } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst ITEM_SELECTOR = '[role=\"option\"]';\nconst HEADER_ITEMS_BORDER_CLASSES = ['gl-border-b-1', 'gl-border-b-solid', 'gl-border-b-dropdown'];\nconst GROUP_TOP_BORDER_CLASSES = ['gl-border-t', 'gl-border-t-dropdown', 'gl-pt-1', 'gl-mt-2'];\nconst SEARCH_INPUT_SELECTOR = '.gl-listbox-search-input';\nvar script = {\n name: 'GlCollapsibleListbox',\n HEADER_ITEMS_BORDER_CLASSES,\n events: {\n GL_DROPDOWN_SHOWN,\n GL_DROPDOWN_HIDDEN\n },\n components: {\n GlBaseDropdown,\n GlListboxItem,\n GlListboxGroup,\n GlButton,\n GlSearchBoxByType,\n GlListboxSearchInput,\n GlLoadingIcon,\n GlIntersectionObserver\n },\n model: {\n prop: 'selected',\n event: 'select'\n },\n props: {\n /**\n * Items to display in the dropdown\n */\n items: {\n type: Array,\n required: false,\n default: () => [],\n validator: itemsValidator\n },\n /**\n * Array of selected items values for multi-select and selected item value for single-select\n */\n selected: {\n type: [Array, String, Number],\n required: false,\n default: () => []\n },\n /**\n * Allow multi-selection\n */\n multiple: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Toggle button text\n */\n toggleText: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Toggle text to be read by screen readers only\n */\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n /** The header text */\n headerText: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Styling option - dropdown's toggle category\n */\n category: {\n type: String,\n required: false,\n default: buttonCategoryOptions.primary,\n validator: value => value in buttonCategoryOptions\n },\n /**\n * Styling option - dropdown's toggle variant\n */\n variant: {\n type: String,\n required: false,\n default: dropdownVariantOptions.default,\n validator: value => value in dropdownVariantOptions\n },\n /**\n * The size of the dropdown toggle\n */\n size: {\n type: String,\n required: false,\n default: 'medium',\n validator: value => value in buttonSizeOptions\n },\n /**\n * Icon name that will be rendered in the toggle button\n */\n icon: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Set to \"true\" to disable the dropdown\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Set to \"true\" when dropdown content (items) is loading\n * It will render a small loader in the dropdown toggle and make it disabled\n */\n loading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Additional CSS classes to customize toggle appearance\n */\n toggleClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n /**\n * Set to \"true\" to hide the caret\n */\n noCaret: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Align listbox menu with respect to the toggle button\n */\n placement: {\n type: String,\n required: false,\n default: 'bottom-start',\n validator: value => Object.keys(dropdownPlacements).includes(value)\n },\n /**\n * Center selected item checkmark\n */\n isCheckCentered: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * The `aria-labelledby` attribute value for the toggle button\n * Provide the string of ids seperated by space\n */\n toggleAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The `aria-labelledby` attribute value for the list of options\n * Provide the string of ids seperated by space\n */\n listAriaLabelledBy: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Enable search\n */\n searchable: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Set to \"true\" when items search is in progress.\n * It will display loading icon below the search input\n */\n searching: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Enables infinite scroll.\n * When set to `true`, the `@bottom-reached` event will be fired when\n * the bottom of the listbox is scrolled to.\n * Does not support groups.\n */\n infiniteScroll: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * This prop is used for infinite scroll.\n * It represents the total number of items that exist,\n * even if they have not yet been loaded.\n * Do not set this prop if the total number of items is unknown.\n */\n totalItems: {\n type: Number,\n required: false,\n default: null\n },\n /**\n * This prop is used for infinite scroll.\n * Set to `true` when more items are being loaded.\n */\n infiniteScrollLoading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Message to be displayed when filtering produced no results\n */\n noResultsText: {\n type: String,\n required: false,\n default: 'No results found'\n },\n /**\n * Search input placeholder text and aria-label\n */\n searchPlaceholder: {\n type: String,\n required: false,\n default: 'Search'\n },\n /**\n * The reset button's label, to be rendered in the header. If this is omitted, the button is not\n * rendered.\n * The reset button requires a header to be set, so this prop should be used in conjunction with\n * headerText.\n */\n resetButtonLabel: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * The select all button's label, to be rendered in the header. If this is omitted, the button is not\n * rendered.\n * The select all button requires a header to be set, so this prop should be used in conjunction with\n * headerText.\n */\n showSelectAllButtonLabel: {\n type: String,\n required: false,\n default: ''\n },\n /**\n * Render the toggle button as a block element\n */\n block: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Custom offset to be applied to Floating UI's offset middleware.\n * https://floating-ui.com/docs/offset\n */\n dropdownOffset: {\n type: [Number, Object],\n required: false,\n default: undefined\n },\n /**\n * Lets the dropdown extend to match its content's width, up to a maximum width\n * defined by the `$gl-new-dropdown-max-width` variable.\n */\n fluidWidth: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n * fit in, setting this to fixed will let it position itself above its container.\n * https://floating-ui.com/docs/computePosition#strategy\n */\n positioningStrategy: {\n type: String,\n required: false,\n default: POSITION_ABSOLUTE,\n validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n },\n /**\n * Opens dropdown on render\n */\n startOpened: {\n type: Boolean,\n required: false,\n default: false\n },\n srOnlyResultsLabel: {\n type: Function,\n required: false,\n default: translatePlural('GlCollapsibleListbox.srOnlyResultsLabel', '%d result', '%d results')\n }\n },\n data() {\n return {\n selectedValues: [],\n toggleId: uniqueId('dropdown-toggle-btn-'),\n listboxId: uniqueId('listbox-'),\n nextFocusedItemIndex: null,\n searchStr: '',\n topBoundaryVisible: true,\n bottomBoundaryVisible: true\n };\n },\n computed: {\n listboxTag() {\n if (!this.hasItems || isOption(this.items[0])) return 'ul';\n return 'div';\n },\n listboxClasses() {\n return {\n 'top-scrim-visible': !this.topBoundaryVisible,\n 'bottom-scrim-visible': !this.bottomBoundaryVisible,\n [GL_DROPDOWN_CONTENTS_CLASS]: true\n };\n },\n itemTag() {\n return this.listboxTag === 'ul' ? 'li' : 'div';\n },\n flattenedOptions() {\n return flattenedOptions(this.items);\n },\n hasItems() {\n return this.items.length > 0;\n },\n listboxToggleText() {\n if (!this.toggleText) {\n if (!this.multiple && this.selectedValues.length) {\n var _this$flattenedOption;\n return (_this$flattenedOption = this.flattenedOptions.find(_ref => {\n let {\n value\n } = _ref;\n return value === this.selectedValues[0];\n })) === null || _this$flattenedOption === void 0 ? void 0 : _this$flattenedOption.text;\n }\n return '';\n }\n return this.toggleText;\n },\n selectedIndices() {\n return this.selectedValues.map(selected => this.flattenedOptions.findIndex(_ref2 => {\n let {\n value\n } = _ref2;\n return value === selected;\n })).sort();\n },\n showList() {\n return this.flattenedOptions.length && !this.searching;\n },\n showNoResultsText() {\n return !this.flattenedOptions.length && !this.searching;\n },\n announceSRSearchResults() {\n return this.searchable && !this.showNoResultsText;\n },\n headerId() {\n return this.headerText && uniqueId('listbox-header-');\n },\n showResetButton() {\n if (!this.resetButtonLabel) {\n return false;\n }\n\n /**\n * if dropdown has no items\n * reset all should be hidden\n */\n if (!this.hasItems) {\n return false;\n }\n\n // hide if no selection\n if (!this.selected || this.selected.length === 0) {\n return false;\n }\n\n // only show reset button if show all button is not there\n return !this.showSelectAllButton;\n },\n showSelectAllButton() {\n if (!this.showSelectAllButtonLabel) {\n return false;\n }\n if (!this.multiple) {\n return false;\n }\n\n /**\n * if dropdown has no items\n * select all should be hidden\n */\n if (!this.hasItems) {\n return false;\n }\n return this.selected.length !== this.flattenedOptions.length;\n },\n showIntersectionObserver() {\n return this.infiniteScroll && !this.infiniteScrollLoading && !this.loading && !this.searching;\n },\n hasCustomToggle() {\n return Boolean(this.$scopedSlots.toggle);\n },\n hasSelection() {\n return Boolean(this.selectedValues.length);\n },\n toggleButtonClasses() {\n const toggleClasses = [this.toggleClass];\n if (!this.hasSelection) {\n toggleClasses.push('!gl-text-subtle');\n }\n return toggleClasses;\n },\n hasHeader() {\n return this.headerText || this.searchable;\n },\n hasFooter() {\n return Boolean(this.$scopedSlots.footer);\n }\n },\n watch: {\n selected: {\n immediate: true,\n handler(newSelected) {\n if (Array.isArray(newSelected)) {\n if (process.env.NODE_ENV !== 'production' && !this.multiple && newSelected.length) {\n throw new Error('To allow multi-selection, please, set \"multiple\" property to \"true\"');\n }\n this.selectedValues = [...newSelected];\n } else {\n this.selectedValues = isNil(newSelected) ? [] : [newSelected];\n }\n }\n },\n items: {\n handler() {\n this.$nextTick(() => {\n /* Every time the list of items changes (on search),\n * the observed elements are recreated, thus we need to start obesrving them again */\n this.observeScroll();\n });\n }\n },\n ...(process.env.NODE_ENV !== 'production' ? {\n resetButtonLabel: {\n immediate: true,\n handler(newResetButtonLabel) {\n if (newResetButtonLabel && !this.headerText) {\n throw new Error('The reset button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the resetButtonLabel prop.');\n }\n }\n },\n showSelectAllButtonLabel: {\n immediate: true,\n handler(showSelectAllButtonLabel) {\n if (showSelectAllButtonLabel && !this.headerText) {\n throw new Error('The select all button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the showSelectAllButtonLabel prop.');\n }\n }\n },\n infiniteScroll: {\n immediate: true,\n handler(newValue) {\n if (newValue && this.items.some(item => !isOption(item))) {\n throw new Error('Infinite scroll does not support groups. Please set the \"infiniteScroll\" prop to \"false\"');\n }\n }\n }\n } : {})\n },\n mounted() {\n if (this.startOpened) {\n this.open();\n }\n this.observeScroll();\n },\n beforeDestroy() {\n var _this$scrollObserver;\n (_this$scrollObserver = this.scrollObserver) === null || _this$scrollObserver === void 0 ? void 0 : _this$scrollObserver.disconnect();\n },\n methods: {\n open() {\n this.$refs.baseDropdown.open();\n },\n close() {\n this.$refs.baseDropdown.close();\n },\n groupClasses(index) {\n return index === 0 ? null : GROUP_TOP_BORDER_CLASSES;\n },\n onShow() {\n if (this.searchable) {\n this.focusSearchInput();\n } else {\n var _this$selectedIndices;\n this.focusItem((_this$selectedIndices = this.selectedIndices[0]) !== null && _this$selectedIndices !== void 0 ? _this$selectedIndices : 0, this.getFocusableListItemElements());\n }\n /**\n * Emitted when dropdown is shown\n *\n * @event shown\n */\n this.$emit(GL_DROPDOWN_SHOWN);\n },\n onHide() {\n /**\n * Emitted when dropdown is hidden\n *\n * @event hidden\n */\n this.$emit(GL_DROPDOWN_HIDDEN);\n this.nextFocusedItemIndex = null;\n },\n onKeydown(event) {\n const {\n code,\n target\n } = event;\n const elements = this.getFocusableListItemElements();\n if (elements.length < 1) return;\n let stop = true;\n const isSearchInput = target.matches(SEARCH_INPUT_SELECTOR);\n if (code === HOME) {\n if (isSearchInput) {\n return;\n }\n this.focusItem(0, elements);\n } else if (code === END) {\n if (isSearchInput) {\n return;\n }\n this.focusItem(elements.length - 1, elements);\n } else if (code === ARROW_UP) {\n if (isSearchInput) {\n return;\n }\n if (this.searchable && elements.indexOf(target) === 0) {\n this.focusSearchInput();\n } else {\n this.focusNextItem(event, elements, -1);\n }\n } else if (code === ARROW_DOWN) {\n if (isSearchInput) {\n this.focusItem(0, elements);\n } else {\n this.focusNextItem(event, elements, 1);\n }\n } else {\n stop = false;\n }\n if (stop) {\n stopEvent(event);\n }\n },\n getFocusableListItemElements() {\n var _this$$refs$list;\n const items = (_this$$refs$list = this.$refs.list) === null || _this$$refs$list === void 0 ? void 0 : _this$$refs$list.querySelectorAll(ITEM_SELECTOR);\n return Array.from(items || []);\n },\n focusNextItem(event, elements, offset) {\n const {\n target\n } = event;\n const currentIndex = elements.indexOf(target);\n const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n this.focusItem(nextIndex, elements);\n },\n focusItem(index, elements) {\n var _elements$index;\n this.nextFocusedItemIndex = index;\n (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n },\n focusSearchInput() {\n this.$refs.searchBox.focusInput();\n },\n onSelect(item, isSelected) {\n if (this.multiple) {\n this.onMultiSelect(item.value, isSelected);\n } else {\n this.onSingleSelect(item.value, isSelected);\n }\n },\n isSelected(item) {\n return this.selectedValues.some(value => value === item.value);\n },\n isFocused(item) {\n return this.nextFocusedItemIndex === this.flattenedOptions.indexOf(item);\n },\n onSingleSelect(value, isSelected) {\n if (isSelected) {\n /**\n * Emitted when selection is changed\n *\n * @event select\n */\n this.$emit('select', value);\n }\n this.closeAndFocus();\n },\n onMultiSelect(value, isSelected) {\n if (isSelected) {\n this.$emit('select', [...this.selectedValues, value]);\n } else {\n this.$emit('select', this.selectedValues.filter(selectedValue => selectedValue !== value));\n }\n },\n search(searchTerm) {\n /**\n * Emitted when the search query string is changed\n *\n * @event search\n * @type {string}\n */\n this.$emit('search', searchTerm);\n },\n onResetButtonClicked() {\n /**\n * Emitted when the reset button is clicked\n *\n * @event reset\n */\n this.$emit('reset');\n },\n onSelectAllButtonClicked() {\n /**\n * Emitted when the select all button is clicked\n *\n * @event select-all\n */\n this.$emit('select-all');\n },\n closeAndFocus() {\n this.$refs.baseDropdown.closeAndFocus();\n },\n onIntersectionObserverAppear() {\n /**\n * Emitted when bottom of listbox has been scrolled to.\n * Used for infinite scroll.\n *\n * @event bottom-reached\n */\n this.$emit('bottom-reached');\n },\n listboxItemMoreItemsAriaAttributes(index) {\n if (this.totalItems === null) {\n return {};\n }\n return {\n 'aria-setsize': this.totalItems,\n 'aria-posinset': index + 1\n };\n },\n observeScroll() {\n var _this$scrollObserver2;\n const root = this.$refs.list;\n const options = {\n rootMargin: '8px',\n root,\n threshold: 1.0\n };\n (_this$scrollObserver2 = this.scrollObserver) === null || _this$scrollObserver2 === void 0 ? void 0 : _this$scrollObserver2.disconnect();\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n var _entry$target;\n this[(_entry$target = entry.target) === null || _entry$target === void 0 ? void 0 : _entry$target.$__visibilityProp] = entry.isIntersecting;\n });\n }, options);\n const topBoundary = this.$refs['top-boundary'];\n const bottomBoundary = this.$refs['bottom-boundary'];\n if (topBoundary) {\n topBoundary.$__visibilityProp = 'topBoundaryVisible';\n observer.observe(topBoundary);\n }\n if (bottomBoundary) {\n bottomBoundary.$__visibilityProp = 'bottomBoundaryVisible';\n observer.observe(bottomBoundary);\n }\n this.scrollObserver = observer;\n },\n isOption\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",attrs:{\"aria-haspopup\":\"listbox\",\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"block\":_vm.block,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.listboxToggleText,\"toggle-class\":_vm.toggleButtonClasses,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.headerText)?_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center !gl-p-4\",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:\"gl-grow gl-pr-2 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.headerId,\"data-testid\":\"listbox-header-text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.headerText)+\"\\n \")]),_vm._v(\" \"),(_vm.showResetButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-shadow-inner-2-blue-400\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-reset-button\"},on:{\"click\":_vm.onResetButtonClicked}},[_vm._v(\"\\n \"+_vm._s(_vm.resetButtonLabel)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showSelectAllButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-shadow-inner-2-blue-400\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-select-all-button\"},on:{\"click\":_vm.onSelectAllButtonClicked}},[_vm._v(\"\\n \"+_vm._s(_vm.showSelectAllButtonLabel)+\"\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.searchable)?_c('div',{class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('gl-listbox-search-input',{ref:\"searchBox\",class:{ 'gl-listbox-topmost': !_vm.headerText },attrs:{\"data-testid\":\"listbox-search-input\",\"placeholder\":_vm.searchPlaceholder},on:{\"input\":_vm.search,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},_vm.onKeydown]},model:{value:(_vm.searchStr),callback:function ($$v) {_vm.searchStr=$$v;},expression:\"searchStr\"}}),_vm._v(\" \"),(_vm.searching)?_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-search-loader\",\"size\":\"md\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showList)?_c(_vm.listboxTag,{ref:\"list\",tag:\"component\",staticClass:\"gl-new-dropdown-contents gl-new-dropdown-contents-with-scrim-overlay\",class:_vm.listboxClasses,attrs:{\"id\":_vm.listboxId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.headerId || _vm.toggleId,\"role\":\"listbox\",\"tabindex\":\"0\"},on:{\"keydown\":_vm.onKeydown}},[_c(_vm.itemTag,{tag:\"component\",staticClass:\"top-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"top-scrim\"}},[_c('div',{staticClass:\"top-scrim\",class:{ 'top-scrim-light': !_vm.hasHeader, 'top-scrim-dark': _vm.hasHeader }})]),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"top-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_vm._l((_vm.items),function(item,index){return [(_vm.isOption(item))?[_c('gl-listbox-item',_vm._b({key:item.value,attrs:{\"data-testid\":(\"listbox-item-\" + (item.value)),\"is-selected\":_vm.isSelected(item),\"is-focused\":_vm.isFocused(item),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(item, $event)}}},'gl-listbox-item',_vm.listboxItemMoreItemsAriaAttributes(index),false),[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n \"+_vm._s(item.text)+\"\\n \")]},{\"item\":item})],2)]:[_c('gl-listbox-group',{key:item.text,class:_vm.groupClasses(index),attrs:{\"name\":item.text,\"text-sr-only\":item.textSrOnly},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._l((item.options),function(option){return _c('gl-listbox-item',{key:option.value,attrs:{\"data-testid\":(\"listbox-item-\" + (option.value)),\"is-selected\":_vm.isSelected(option),\"is-focused\":_vm.isFocused(option),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(option, $event)}}},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n \"+_vm._s(option.text)+\"\\n \")]},{\"item\":option})],2)})],2)]]}),_vm._v(\" \"),(_vm.infiniteScrollLoading)?_c(_vm.itemTag,{tag:\"component\"},[_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-infinite-scroll-loader\",\"size\":\"md\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showIntersectionObserver)?_c('gl-intersection-observer',{on:{\"appear\":_vm.onIntersectionObserverAppear}}):_vm._e(),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"bottom-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c(_vm.itemTag,{tag:\"component\",staticClass:\"bottom-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"bottom-scrim\"}},[_c('div',{staticClass:\"bottom-scrim\",class:{ '!gl-rounded-none': _vm.hasFooter }})])],2):_vm._e(),_vm._v(\" \"),(_vm.announceSRSearchResults)?_c('span',{staticClass:\"gl-sr-only\",attrs:{\"data-testid\":\"listbox-number-of-results\",\"aria-live\":\"assertive\"}},[_vm._t(\"search-summary-sr-only\",function(){return [_vm._v(\"\\n \"+_vm._s(_vm.srOnlyResultsLabel(_vm.flattenedOptions.length))+\"\\n \")]})],2):(_vm.showNoResultsText)?_c('div',{staticClass:\"gl-py-3 gl-pl-7 gl-pr-5 gl-text-base gl-text-subtle\",attrs:{\"aria-live\":\"assertive\",\"data-testid\":\"listbox-no-results-text\"}},[_vm._v(\"\\n \"+_vm._s(_vm.noResultsText)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { ITEM_SELECTOR, SEARCH_INPUT_SELECTOR };\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import memoize from 'lodash/memoize';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst getObserver = memoize(options => new IntersectionObserver(entries => {\n entries.forEach(entry => {\n entry.target.$_gl_intersectionHandler(entry);\n });\n}, options || {}));\nvar script = {\n name: 'GlIntersectionObserver',\n props: {\n /**\n * Extra options to pass directly to the intersection observer API.\n */\n options: {\n type: Object,\n required: false,\n default: null\n }\n },\n mounted() {\n const observer = getObserver(this.options);\n this.$el.$_gl_intersectionHandler = entry => {\n /**\n * Emitted when the element's visibility changes\n */\n this.$emit('update', entry);\n if (entry.isIntersecting) {\n /**\n * Emitted when the element appears on the page\n */\n this.$emit('appear');\n } else {\n /**\n * Emitted when the element disappears from the page\n */\n this.$emit('disappear');\n }\n };\n this.$el.$_gl_intersectionObserver = observer;\n observer.observe(this.$el);\n },\n destroyed() {\n this.$el.$_gl_intersectionObserver.unobserve(this.$el);\n delete this.$el.$_gl_intersectionHandler;\n delete this.$el.$_gl_intersectionObserver;\n },\n // Expose getObserver method for tests\n getObserver\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport GlDisclosureDropdownItem from './disclosure_dropdown_item';\nimport { isGroup } from './utils';\nimport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BORDER_CLASSES = {\n [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top]: 'gl-border-t gl-border-t-dropdown gl-pt-2 gl-mt-2',\n [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.bottom]: 'gl-border-b gl-border-b-dropdown gl-pb-2 gl-mb-2'\n};\nvar script = {\n name: DISCLOSURE_DROPDOWN_GROUP_NAME,\n components: {\n GlDisclosureDropdownItem\n },\n props: {\n /**\n * Group of items\n */\n group: {\n type: Object,\n required: false,\n default: null,\n validator: isGroup\n },\n /**\n * If 'true', will set top border for the group\n * to separate from other groups. You can control\n * the border position using the `borderPosition`\n * property.\n */\n bordered: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Controls the position of the group's border. Valid\n * values are 'top' and 'bottom'.\n */\n borderPosition: {\n type: String,\n required: false,\n default: DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top,\n validator: value => Object.keys(DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS).includes(value)\n }\n },\n computed: {\n borderClass() {\n return this.bordered ? BORDER_CLASSES[this.borderPosition] : null;\n },\n showHeader() {\n var _this$group;\n return this.$scopedSlots['group-label'] || ((_this$group = this.group) === null || _this$group === void 0 ? void 0 : _this$group.name);\n },\n groupLabeledBy() {\n return this.showHeader ? this.nameId : null;\n }\n },\n created() {\n this.nameId = uniqueId('gl-disclosure-dropdown-group-');\n },\n methods: {\n handleAction(action) {\n this.$emit('action', action);\n },\n uniqueItemId() {\n return uniqueId(`disclosure-item-`);\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:_vm.borderClass},[(_vm.showHeader)?_c('div',{staticClass:\"gl-py-2 gl-pl-4 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.nameId,\"aria-hidden\":\"true\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.group.name))]})],2):_vm._e(),_vm._v(\" \"),_c('ul',{staticClass:\"gl-mb-0 gl-list-none gl-pl-0\",attrs:{\"aria-labelledby\":_vm.groupLabeledBy}},[_vm._t(\"default\",function(){return _vm._l((_vm.group.items),function(item){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}],null,true)})})})],2)])};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { BORDER_CLASSES };\n","import GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlIcon from '../icon/icon';\nimport GlLoadingIcon from '../loading_icon/loading_icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlSearchboxByType',\n components: {\n GlClearIconButton,\n GlIcon,\n GlFormInput,\n GlLoadingIcon\n },\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n /**\n * If provided, used as value of search input\n */\n value: {\n type: String,\n required: false,\n default: ''\n },\n borderless: {\n type: Boolean,\n required: false,\n default: false\n },\n clearButtonTitle: {\n type: String,\n required: false,\n default: () => translate('GlSearchBoxByType.clearButtonTitle', 'Clear')\n },\n /**\n * If provided and true, disables the input and controls\n */\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Puts search box into loading state, rendering spinner\n */\n isLoading: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Container for tooltip. Valid values: DOM node, selector string or `false` for default\n */\n tooltipContainer: {\n required: false,\n default: false,\n validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n }\n },\n computed: {\n inputAttributes() {\n const attributes = {\n type: 'search',\n placeholder: translate('GlSearchBoxByType.input.placeholder', 'Search'),\n ...this.$attrs\n };\n if (!attributes['aria-label']) {\n attributes['aria-label'] = attributes.placeholder;\n }\n return attributes;\n },\n hasValue() {\n return Boolean(this.value.length);\n },\n inputListeners() {\n return {\n ...this.$listeners,\n input: this.onInput,\n focusin: this.onFocusin,\n focusout: this.onFocusout\n };\n },\n showClearButton() {\n return this.hasValue && !this.disabled;\n }\n },\n methods: {\n isInputOrClearButton(element) {\n var _this$$refs$input, _this$$refs$clearButt;\n return element === ((_this$$refs$input = this.$refs.input) === null || _this$$refs$input === void 0 ? void 0 : _this$$refs$input.$el) || element === ((_this$$refs$clearButt = this.$refs.clearButton) === null || _this$$refs$clearButt === void 0 ? void 0 : _this$$refs$clearButt.$el);\n },\n clearInput() {\n this.onInput('');\n this.focusInput();\n },\n focusInput() {\n this.$refs.input.$el.focus();\n },\n onInput(value) {\n this.$emit('input', value);\n },\n onFocusout(event) {\n const {\n relatedTarget\n } = event;\n if (this.isInputOrClearButton(relatedTarget)) {\n return;\n }\n this.$emit('focusout', event);\n },\n onFocusin(event) {\n const {\n relatedTarget\n } = event;\n if (this.isInputOrClearButton(relatedTarget)) {\n return;\n }\n this.$emit('focusin', event);\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-search-box-by-type\"},[_c('gl-icon',{staticClass:\"gl-search-box-by-type-search-icon\",attrs:{\"name\":\"search\",\"variant\":\"subtle\"}}),_vm._v(\" \"),_c('gl-form-input',_vm._g(_vm._b({ref:\"input\",class:{\n 'gl-search-box-by-type-input': !_vm.borderless,\n 'gl-search-box-by-type-input-borderless': _vm.borderless,\n },attrs:{\"value\":_vm.value,\"disabled\":_vm.disabled}},'gl-form-input',_vm.inputAttributes,false),_vm.inputListeners)),_vm._v(\" \"),(_vm.isLoading || _vm.showClearButton)?_c('div',{staticClass:\"gl-search-box-by-type-right-icons\"},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-search-box-by-type-loading-icon\"}):_vm._e(),_vm._v(\" \"),(_vm.showClearButton)?_c('gl-clear-icon-button',{ref:\"clearButton\",staticClass:\"gl-search-box-by-type-clear gl-clear-icon-button\",attrs:{\"title\":_vm.clearButtonTitle,\"tooltip-container\":_vm.tooltipContainer},on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)},\"focusin\":_vm.onFocusin,\"focusout\":_vm.onFocusout}}):_vm._e()],1):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import { extend, mergeData } from '../../../vue';\nimport { NAME_COLLAPSE_HELPER } from '../../../constants/components';\nimport { PROP_TYPE_BOOLEAN } from '../../../constants/props';\nimport { setStyle, requestAF, reflow, removeStyle, getBCR } from '../../../utils/dom';\nimport { makeProp } from '../../../utils/props';\n\n// Generic collapse transion helper component\n\n// --- Helper methods ---\n\n// Transition event handler helpers\nconst onEnter = el => {\n setStyle(el, 'height', 0);\n // In a `requestAF()` for `appear` to work\n requestAF(() => {\n reflow(el);\n setStyle(el, 'height', `${el.scrollHeight}px`);\n });\n};\nconst onAfterEnter = el => {\n removeStyle(el, 'height');\n};\nconst onLeave = el => {\n setStyle(el, 'height', 'auto');\n setStyle(el, 'display', 'block');\n setStyle(el, 'height', `${getBCR(el).height}px`);\n reflow(el);\n setStyle(el, 'height', 0);\n};\nconst onAfterLeave = el => {\n removeStyle(el, 'height');\n};\n\n// --- Constants ---\n\n// Default transition props\n// `appear` will use the enter classes\nconst TRANSITION_PROPS = {\n css: true,\n enterClass: '',\n enterActiveClass: 'collapsing',\n enterToClass: 'collapse show',\n leaveClass: 'collapse show',\n leaveActiveClass: 'collapsing',\n leaveToClass: 'collapse'\n};\n\n// Default transition handlers\n// `appear` will use the enter handlers\nconst TRANSITION_HANDLERS = {\n enter: onEnter,\n afterEnter: onAfterEnter,\n leave: onLeave,\n afterLeave: onAfterLeave\n};\n\n// --- Main component ---\n\nconst props = {\n // // If `true` (and `visible` is `true` on mount), animate initially visible\n appear: makeProp(PROP_TYPE_BOOLEAN, false)\n};\n\n// --- Main component ---\n\n// @vue/component\nconst BVCollapse = /*#__PURE__*/extend({\n name: NAME_COLLAPSE_HELPER,\n functional: true,\n props,\n render(h, _ref) {\n let {\n props,\n data,\n children\n } = _ref;\n return h('transition',\n // We merge in the `appear` prop last\n mergeData(data, {\n props: TRANSITION_PROPS,\n on: TRANSITION_HANDLERS\n }, {\n props\n }),\n // Note: `<transition>` supports a single root element only\n children);\n }\n});\n\nexport { BVCollapse, props };\n","import { extend } from '../../vue';\nimport { NAME_COLLAPSE } from '../../constants/components';\nimport { EVENT_NAME_SHOW, EVENT_NAME_SHOWN, EVENT_NAME_HIDE, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { getRootActionEventName, getRootEventName } from '../../utils/events';\nimport { makeModelMixin } from '../../utils/model';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { BVCollapse } from './helpers/bv-collapse';\n\n// --- Constants ---\nconst ROOT_ACTION_EVENT_NAME_TOGGLE = getRootActionEventName(NAME_COLLAPSE, 'toggle');\nconst ROOT_ACTION_EVENT_NAME_REQUEST_STATE = getRootActionEventName(NAME_COLLAPSE, 'request-state');\nconst ROOT_EVENT_NAME_ACCORDION = getRootEventName(NAME_COLLAPSE, 'accordion');\nconst ROOT_EVENT_NAME_STATE = getRootEventName(NAME_COLLAPSE, 'state');\nconst ROOT_EVENT_NAME_SYNC_STATE = getRootEventName(NAME_COLLAPSE, 'sync-state');\nconst {\n mixin: modelMixin,\n props: modelProps,\n prop: MODEL_PROP_NAME,\n event: MODEL_EVENT_NAME\n} = makeModelMixin('visible', {\n type: PROP_TYPE_BOOLEAN,\n defaultValue: false\n});\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n ...props$1,\n ...modelProps,\n // If `true` (and `visible` is `true` on mount), animate initially visible\n accordion: makeProp(PROP_TYPE_STRING),\n appear: makeProp(PROP_TYPE_BOOLEAN, false),\n tag: makeProp(PROP_TYPE_STRING, 'div')\n}), NAME_COLLAPSE);\n\n// --- Main component ---\n\n// @vue/component\nconst BCollapse = /*#__PURE__*/extend({\n name: NAME_COLLAPSE,\n mixins: [idMixin, modelMixin, normalizeSlotMixin, listenOnRootMixin],\n props,\n data() {\n return {\n show: this[MODEL_PROP_NAME],\n transitioning: false\n };\n },\n computed: {\n classObject() {\n const {\n transitioning\n } = this;\n return {\n collapse: !transitioning,\n show: this.show && !transitioning\n };\n },\n slotScope() {\n return {\n visible: this.show,\n close: () => {\n this.show = false;\n }\n };\n }\n },\n watch: {\n [MODEL_PROP_NAME](newValue) {\n if (newValue !== this.show) {\n this.show = newValue;\n }\n },\n show(newValue, oldValue) {\n if (newValue !== oldValue) {\n this.emitState();\n }\n }\n },\n created() {\n this.show = this[MODEL_PROP_NAME];\n },\n mounted() {\n this.show = this[MODEL_PROP_NAME];\n // Listen for toggle events to open/close us\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_TOGGLE, this.handleToggleEvent);\n // Listen to other collapses for accordion events\n this.listenOnRoot(ROOT_EVENT_NAME_ACCORDION, this.handleAccordionEvent);\n this.$nextTick(() => {\n this.emitState();\n });\n // Listen for \"Sync state\" requests from `v-b-toggle`\n this.listenOnRoot(ROOT_ACTION_EVENT_NAME_REQUEST_STATE, id => {\n if (id === this.safeId()) {\n this.$nextTick(this.emitSync);\n }\n });\n },\n updated() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitSync();\n },\n beforeDestroy() {\n // Trigger state emit if needed\n this.show = false;\n },\n methods: {\n toggle() {\n this.show = !this.show;\n },\n onEnter() {\n this.transitioning = true;\n // This should be moved out so we can add cancellable events\n this.$emit(EVENT_NAME_SHOW);\n },\n onAfterEnter() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_SHOWN);\n },\n onLeave() {\n this.transitioning = true;\n // This should be moved out so we can add cancellable events\n this.$emit(EVENT_NAME_HIDE);\n },\n onAfterLeave() {\n this.transitioning = false;\n this.$emit(EVENT_NAME_HIDDEN);\n },\n emitState() {\n const {\n show,\n accordion\n } = this;\n const id = this.safeId();\n this.$emit(MODEL_EVENT_NAME, show);\n\n // Let `v-b-toggle` know the state of this collapse\n this.emitOnRoot(ROOT_EVENT_NAME_STATE, id, show);\n if (accordion && show) {\n // Tell the other collapses in this accordion to close\n this.emitOnRoot(ROOT_EVENT_NAME_ACCORDION, id, accordion);\n }\n },\n emitSync() {\n // Emit a private event every time this component updates to ensure\n // the toggle button is in sync with the collapse's state\n // It is emitted regardless if the visible state changes\n this.emitOnRoot(ROOT_EVENT_NAME_SYNC_STATE, this.safeId(), this.show);\n },\n handleToggleEvent(id) {\n if (id === this.safeId()) {\n this.toggle();\n }\n },\n handleAccordionEvent(openedId, openAccordion) {\n const {\n accordion,\n show\n } = this;\n if (!accordion || accordion !== openAccordion) {\n return;\n }\n const isThis = openedId === this.safeId();\n // Open this collapse if not shown or\n // close this collapse if shown\n if (isThis && !show || !isThis && show) {\n this.toggle();\n }\n }\n },\n render(h) {\n const {\n appear\n } = this;\n const $content = h(this.tag, {\n class: this.classObject,\n directives: [{\n name: 'show',\n value: this.show\n }],\n attrs: {\n id: this.safeId()\n }\n }, this.normalizeSlot(SLOT_NAME_DEFAULT, this.slotScope));\n return h(BVCollapse, {\n props: {\n appear\n },\n on: {\n enter: this.onEnter,\n afterEnter: this.onAfterEnter,\n leave: this.onLeave,\n afterLeave: this.onAfterLeave\n }\n }, [$content]);\n }\n});\n\nexport { BCollapse, props };\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"getPipelineSummary\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"includeCommitInfo\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pipeline\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"iid\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"commit\"},\"arguments\":[],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"includeCommitInfo\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"shortId\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"webPath\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"CiIcon\"},\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"downstream\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"path\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sourceJob\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"retried\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"finishedAt\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stages\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"tooltip\"},\"arguments\":[],\"directives\":[]}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"upstream\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailedStatus\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"detailsPath\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"icon\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"label\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":1119}};\n doc.loc.source = {\"body\":\"#import \\\"~/graphql_shared/fragments/ci_icon.fragment.graphql\\\"\\n\\nquery getPipelineSummary($fullPath: ID!, $iid: ID!, $includeCommitInfo: Boolean!) {\\n project(fullPath: $fullPath) {\\n id\\n pipeline(iid: $iid) {\\n id\\n commit @include(if: $includeCommitInfo) {\\n id\\n shortId\\n webPath\\n }\\n detailedStatus {\\n label\\n ...CiIcon\\n }\\n downstream {\\n nodes {\\n id\\n detailedStatus {\\n id\\n detailsPath\\n icon\\n label\\n }\\n path\\n project {\\n id\\n name\\n }\\n sourceJob {\\n id\\n retried\\n }\\n }\\n }\\n finishedAt\\n stages {\\n nodes {\\n id\\n name\\n detailedStatus {\\n id\\n icon\\n label\\n tooltip\\n }\\n }\\n }\\n upstream {\\n id\\n project {\\n id\\n name\\n }\\n detailedStatus {\\n id\\n detailsPath\\n icon\\n label\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n doc.definitions = doc.definitions.concat(unique(require(\"~/graphql_shared/fragments/ci_icon.fragment.graphql\").definitions));\n\n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"getPipelineSummary\"] = oneQuery(doc, \"getPipelineSummary\");\n \n","import uniqueId from 'lodash/uniqueId';\nimport { offset, autoPlacement, shift, size, autoUpdate, computePosition } from '@floating-ui/dom';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements, dropdownAllowedAutoPlacements } from '../../../../utils/constants';\nimport { POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, ENTER, SPACE, ARROW_DOWN, GL_DROPDOWN_FOCUS_CONTENT } from '../constants';\nimport { logWarning, isElementFocusable, isElementTabbable } from '../../../../utils/utils';\nimport { OutsideDirective } from '../../../../directives/outside/outside';\nimport GlButton from '../../button/button';\nimport GlIcon from '../../icon/icon';\nimport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BASE_DROPDOWN_CLASS = 'gl-new-dropdown';\nvar script = {\n name: 'BaseDropdown',\n BASE_DROPDOWN_CLASS,\n components: {\n GlButton,\n GlIcon\n },\n directives: {\n Outside: OutsideDirective\n },\n props: {\n toggleText: {\n type: String,\n required: false,\n default: ''\n },\n textSrOnly: {\n type: Boolean,\n required: false,\n default: false\n },\n block: {\n type: Boolean,\n required: false,\n default: false\n },\n category: {\n type: String,\n required: false,\n default: buttonCategoryOptions.primary,\n validator: value => Object.keys(buttonCategoryOptions).includes(value)\n },\n variant: {\n type: String,\n required: false,\n default: dropdownVariantOptions.default,\n validator: value => Object.keys(dropdownVariantOptions).includes(value)\n },\n size: {\n type: String,\n required: false,\n default: 'medium',\n validator: value => Object.keys(buttonSizeOptions).includes(value)\n },\n icon: {\n type: String,\n required: false,\n default: ''\n },\n disabled: {\n type: Boolean,\n required: false,\n default: false\n },\n loading: {\n type: Boolean,\n required: false,\n default: false\n },\n toggleClass: {\n type: [String, Array, Object],\n required: false,\n default: null\n },\n noCaret: {\n type: Boolean,\n required: false,\n default: false\n },\n placement: {\n type: String,\n required: false,\n default: 'bottom-start',\n validator: value => {\n if (['left', 'center', 'right'].includes(value)) {\n logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: \"${value}\" placement is deprecated.\n Use ${dropdownPlacements[value]} instead.`);\n }\n return Object.keys(dropdownPlacements).includes(value);\n }\n },\n // ARIA props\n ariaHaspopup: {\n type: [String, Boolean],\n required: false,\n default: false,\n validator: value => {\n return ['menu', 'listbox', 'tree', 'grid', 'dialog', true, false].includes(value);\n }\n },\n /**\n * Id that will be referenced by `aria-labelledby` attribute of the dropdown content`\n */\n toggleId: {\n type: String,\n required: true\n },\n /**\n * The `aria-labelledby` attribute value for the toggle `button`\n */\n ariaLabelledby: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Custom value to be passed to the offset middleware.\n * https://floating-ui.com/docs/offset\n */\n offset: {\n type: [Number, Object],\n required: false,\n default: () => ({\n mainAxis: DEFAULT_OFFSET\n })\n },\n fluidWidth: {\n type: Boolean,\n required: false,\n default: false\n },\n /**\n * Strategy to be applied by computePosition. If this is set to fixed, the dropdown's position\n * needs to be set to fixed in CSS as well.\n * https://floating-ui.com/docs/computePosition#strategy\n */\n positioningStrategy: {\n type: String,\n required: false,\n default: POSITION_ABSOLUTE,\n validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n }\n },\n data() {\n return {\n openedYet: false,\n visible: false,\n baseDropdownId: uniqueId('base-dropdown-')\n };\n },\n computed: {\n hasNoVisibleToggleText() {\n var _this$toggleText;\n return !((_this$toggleText = this.toggleText) !== null && _this$toggleText !== void 0 && _this$toggleText.length) || this.textSrOnly;\n },\n isIconOnly() {\n return Boolean(this.icon && this.hasNoVisibleToggleText);\n },\n isEllipsisButton() {\n return this.isIconOnly && this.icon === 'ellipsis_h';\n },\n isCaretOnly() {\n return !this.noCaret && !this.icon && this.hasNoVisibleToggleText;\n },\n ariaAttributes() {\n return {\n 'aria-haspopup': this.ariaHaspopup,\n 'aria-expanded': String(this.visible),\n 'aria-controls': this.baseDropdownId,\n 'aria-labelledby': this.toggleLabelledBy\n };\n },\n toggleButtonClasses() {\n return [this.toggleClass, {\n 'gl-new-dropdown-toggle': true,\n 'button-ellipsis-horizontal': this.isEllipsisButton,\n 'gl-new-dropdown-icon-only btn-icon': this.isIconOnly && !this.isEllipsisButton,\n 'gl-new-dropdown-toggle-no-caret': this.noCaret,\n 'gl-new-dropdown-caret-only btn-icon': this.isCaretOnly\n }];\n },\n toggleButtonTextClasses() {\n return this.block ? 'gl-w-full' : '';\n },\n toggleLabelledBy() {\n return this.ariaLabelledby ? `${this.ariaLabelledby} ${this.toggleId}` : this.toggleId;\n },\n isDefaultToggle() {\n return !this.$scopedSlots.toggle;\n },\n toggleOptions() {\n if (this.isDefaultToggle) {\n return {\n is: GlButton,\n icon: this.icon,\n block: this.block,\n buttonTextClasses: this.toggleButtonTextClasses,\n category: this.category,\n variant: this.variant,\n size: this.size,\n disabled: this.disabled,\n loading: this.loading,\n class: this.toggleButtonClasses,\n ...this.ariaAttributes,\n listeners: {\n keydown: event => this.onKeydown(event),\n click: event => this.toggle(event)\n }\n };\n }\n return {\n is: 'div',\n class: 'gl-new-dropdown-custom-toggle',\n listeners: {\n keydown: event => this.onKeydown(event),\n click: event => this.toggle(event)\n }\n };\n },\n toggleListeners() {\n return this.toggleOptions.listeners;\n },\n toggleAttributes() {\n const {\n listeners,\n is,\n ...attributes\n } = this.toggleOptions;\n return attributes;\n },\n toggleComponent() {\n return this.toggleOptions.is;\n },\n toggleElement() {\n var _this$$refs$toggle;\n return this.$refs.toggle.$el || ((_this$$refs$toggle = this.$refs.toggle) === null || _this$$refs$toggle === void 0 ? void 0 : _this$$refs$toggle.firstElementChild);\n },\n panelClasses() {\n return {\n '!gl-block': this.visible,\n [FIXED_WIDTH_CLASS]: !this.fluidWidth,\n 'gl-fixed': this.openedYet && this.isFixed,\n 'gl-absolute': this.openedYet && !this.isFixed\n };\n },\n isFixed() {\n return this.positioningStrategy === POSITION_FIXED;\n },\n floatingUIConfig() {\n const placement = dropdownPlacements[this.placement];\n const [, alignment] = placement.split('-');\n return {\n placement,\n strategy: this.positioningStrategy,\n middleware: [offset(this.offset), autoPlacement({\n alignment,\n allowedPlacements: dropdownAllowedAutoPlacements[this.placement]\n }), shift(), size({\n apply: _ref => {\n var _this$nonScrollableCo;\n let {\n availableHeight,\n elements\n } = _ref;\n const contentsEl = elements.floating.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n if (!contentsEl) {\n return;\n }\n const contentsAvailableHeight = availableHeight - ((_this$nonScrollableCo = this.nonScrollableContentHeight) !== null && _this$nonScrollableCo !== void 0 ? _this$nonScrollableCo : 0) - DEFAULT_OFFSET;\n Object.assign(contentsEl.style, {\n maxHeight: `${Math.max(contentsAvailableHeight, 0)}px`\n });\n }\n })]\n };\n }\n },\n watch: {\n ariaAttributes: {\n deep: true,\n handler(ariaAttributes) {\n if (this.$scopedSlots.toggle) {\n Object.keys(ariaAttributes).forEach(key => {\n this.toggleElement.setAttribute(key, ariaAttributes[key]);\n });\n }\n }\n }\n },\n mounted() {\n this.checkToggleFocusable();\n },\n beforeDestroy() {\n this.stopFloating();\n },\n methods: {\n checkToggleFocusable() {\n if (!isElementFocusable(this.toggleElement) && !isElementTabbable(this.toggleElement)) {\n logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: Toggle is missing a 'tabindex' and cannot be focused.\n Use 'a' or 'button' element instead or make sure to add 'role=\"button\"' along with 'tabindex' otherwise.`, this.$el);\n }\n },\n async startFloating() {\n this.calculateNonScrollableAreaHeight();\n this.observer = new MutationObserver(this.calculateNonScrollableAreaHeight);\n this.observer.observe(this.$refs.content, {\n attributes: false,\n childList: true,\n subtree: true\n });\n this.stopAutoUpdate = autoUpdate(this.toggleElement, this.$refs.content, async () => {\n const {\n x,\n y\n } = await computePosition(this.toggleElement, this.$refs.content, this.floatingUIConfig);\n\n /**\n * Due to the asynchronous nature of computePosition, it's technically possible for the\n * component to have been destroyed by the time the promise resolves. In such case, we exit\n * early to prevent a TypeError.\n */\n if (!this.$refs.content) return;\n Object.assign(this.$refs.content.style, {\n left: `${x}px`,\n top: `${y}px`\n });\n });\n },\n stopFloating() {\n var _this$observer, _this$stopAutoUpdate;\n (_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.disconnect();\n (_this$stopAutoUpdate = this.stopAutoUpdate) === null || _this$stopAutoUpdate === void 0 ? void 0 : _this$stopAutoUpdate.call(this);\n },\n async toggle(event) {\n if (event && this.visible) {\n let prevented = false;\n this.$emit(GL_DROPDOWN_BEFORE_CLOSE, {\n originalEvent: event,\n preventDefault() {\n prevented = true;\n }\n });\n if (prevented) return false;\n }\n this.visible = !this.visible;\n if (this.visible) {\n // The dropdown needs to be actually visible before we compute its position with Floating UI.\n await this.$nextTick();\n this.openedYet = true;\n /**\n * We wait until the dropdown's position has been computed before emitting the `shown` event.\n * This ensures that, if the parent component attempts to focus an inner element, the dropdown\n * is already properly placed in the page. Otherwise, the page would scroll back to the top.\n */\n this.startFloating();\n this.$emit(GL_DROPDOWN_SHOWN);\n } else {\n this.stopFloating();\n this.$emit(GL_DROPDOWN_HIDDEN);\n }\n\n // this is to check whether `toggle` was prevented or not\n return true;\n },\n open() {\n if (this.visible) {\n return;\n }\n this.toggle();\n },\n close(event) {\n if (!this.visible) {\n return;\n }\n this.toggle(event);\n },\n /**\n * Closes the dropdown and returns the focus to the toggle unless it has has moved outside\n * of the dropdown, meaning that the consumer needed to put some other element in focus.\n *\n * @param {KeyboardEvent?} event The keyboard event that caused the dropdown to close.\n */\n async closeAndFocus(event) {\n if (!this.visible) {\n return;\n }\n const hadFocusWithin = this.$el.contains(document.activeElement);\n const hasToggled = await this.toggle(event);\n if (!hadFocusWithin) {\n return;\n }\n if (hasToggled) {\n this.focusToggle();\n }\n },\n focusToggle() {\n this.toggleElement.focus();\n },\n onKeydown(event) {\n const {\n code,\n target: {\n tagName\n }\n } = event;\n let toggleOnEnter = true;\n let toggleOnSpace = true;\n if (tagName === 'BUTTON') {\n toggleOnEnter = false;\n toggleOnSpace = false;\n } else if (tagName === 'A') {\n toggleOnEnter = false;\n }\n if (code === ENTER && toggleOnEnter || code === SPACE && toggleOnSpace) {\n this.toggle(event);\n }\n if (code === ARROW_DOWN) {\n this.$emit(GL_DROPDOWN_FOCUS_CONTENT, event);\n }\n },\n calculateNonScrollableAreaHeight() {\n var _this$$refs$content;\n const scrollableArea = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n if (!scrollableArea) return;\n const floatingElementBoundingBox = this.$refs.content.getBoundingClientRect();\n const scrollableAreaBoundingBox = scrollableArea.getBoundingClientRect();\n this.nonScrollableContentHeight = floatingElementBoundingBox.height - scrollableAreaBoundingBox.height;\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"outside\",rawName:\"v-outside.click.focusin\",value:(_vm.close),expression:\"close\",modifiers:{\"click\":true,\"focusin\":true}}],class:[_vm.$options.BASE_DROPDOWN_CLASS, { '!gl-block': _vm.block }]},[_c(_vm.toggleComponent,_vm._g(_vm._b({ref:\"toggle\",tag:\"component\",attrs:{\"id\":_vm.toggleId,\"data-testid\":\"base-dropdown-toggle\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.close.apply(null, arguments)}}},'component',_vm.toggleAttributes,false),_vm.toggleListeners),[_vm._t(\"toggle\",function(){return [_c('span',{staticClass:\"gl-new-dropdown-button-text\",class:{ 'gl-sr-only': _vm.textSrOnly }},[_vm._v(\"\\n \"+_vm._s(_vm.toggleText)+\"\\n \")]),_vm._v(\" \"),(!_vm.noCaret)?_c('gl-icon',{staticClass:\"gl-button-icon gl-new-dropdown-chevron\",attrs:{\"name\":\"chevron-down\"}}):_vm._e()]})],2),_vm._v(\" \"),_c('div',{ref:\"content\",staticClass:\"gl-new-dropdown-panel\",class:_vm.panelClasses,attrs:{\"id\":_vm.baseDropdownId,\"data-testid\":\"base-dropdown-menu\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.closeAndFocus.apply(null, arguments)}}},[_c('div',{staticClass:\"gl-new-dropdown-inner\"},[_vm._t(\"default\")],2)])],1)};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\nexport { BASE_DROPDOWN_CLASS };\n","const FIXED_WIDTH_CLASS = '!gl-w-31';\nconst DEFAULT_OFFSET = 4;\n\nexport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS };\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"w-100\"},[(_vm.isLoading)?_c('div',{staticClass:\"align-items-center gl-mx-2 gl-flex\"},[_c('gl-loading-icon',{staticClass:\"gl-mr-4\"}),_vm._v(\"\\n \"+_vm._s(_vm.$options.i18n.loadingText)+\"\\n \")],1):_c('div',{staticClass:\"align-items-center w-100 gl-flex\"},[_c('div',{staticClass:\"flex-grow-1 justify-space-between gl-flex gl-flex-wrap gl-gap-3\",class:{ 'align-items-center': !_vm.finishedAt }},[(_vm.status)?_c('ci-icon',{staticClass:\"gl-mt-1 gl-self-start\",attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"flex-grow-1 gl-flex gl-flex-col\"},[_c('span',[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.pipelineStatusText},scopedSlots:_vm._u([{key:\"status\",fn:function(){return [_vm._v(_vm._s(_vm.statusLabel))]},proxy:true},{key:\"link\",fn:function({ content }){return [_c('gl-link',{attrs:{\"data-testid\":\"pipeline-path\",\"href\":_vm.pipelinePath}},[_c('gl-sprintf',{attrs:{\"message\":content},scopedSlots:_vm._u([{key:\"pipelineId\",fn:function(){return [_vm._v(_vm._s(_vm.pipelineId))]},proxy:true}],null,true)})],1)]}}])})],1),_vm._v(\" \"),_c('span',{staticClass:\"align-items-center gl-flex gl-text-sm gl-text-subtle\"},[(_vm.includeCommitInfo)?_c('span',{attrs:{\"data-testid\":\"commit-info\"}},[_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.pipelineCommitText},scopedSlots:_vm._u([{key:\"status\",fn:function(){return [_vm._v(_vm._s(_vm.statusLabel))]},proxy:true},{key:\"link\",fn:function(){return [_c('gl-link',{staticClass:\"commit-sha-container gl-mr-2\",attrs:{\"data-testid\":\"commit-path\",\"href\":_vm.commitPath}},[_vm._v(\"\\n \"+_vm._s(_vm.commitSha)+\"\\n \")])]},proxy:true}],null,false,1610447767)})],1):_vm._e(),_vm._v(\" \"),(_vm.finishedAt)?_c('time-ago-tooltip',{attrs:{\"time\":_vm.finishedAt,\"tooltip-placement\":\"bottom\"}}):_vm._e()],1)]),_vm._v(\" \"),_c('pipeline-mini-graph',{attrs:{\"data-testid\":\"pipeline-summary-pipeline-mini-graph\",\"downstream-pipelines\":_vm.downstreamPipelines,\"pipeline-path\":_vm.pipelinePath,\"pipeline-stages\":_vm.pipelineStages,\"upstream-pipeline\":_vm.upstreamPipeline},on:{\"jobActionExecuted\":_vm.onJobActionExecuted}})],1)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_summary.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./pipeline_summary.vue?vue&type=script&lang=js\"","<script>\nimport { GlLink, GlLoadingIcon, GlSprintf } from '@gitlab/ui';\nimport Visibility from 'visibilityjs';\nimport { createAlert } from '~/alert';\nimport { __, s__ } from '~/locale';\nimport { reportToSentry } from '~/ci/utils';\nimport { getIncreasedPollInterval } from '~/ci/utils/polling_utils';\nimport { NETWORK_STATUS_READY, PIPELINE_POLL_INTERVAL_DEFAULT } from '~/ci/constants';\nimport { getIdFromGraphQLId } from '~/graphql_shared/utils';\nimport CiIcon from '~/vue_shared/components/ci_icon/ci_icon.vue';\nimport TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';\nimport { getQueryHeaders } from '~/ci/pipeline_details/graph/utils';\nimport PipelineMiniGraph from '~/ci/pipeline_mini_graph/pipeline_mini_graph.vue';\nimport getPipelineSummaryQuery from './graphql/queries/get_pipeline_summary.query.graphql';\n\nexport default {\n name: 'PipelineSummary',\n i18n: {\n loadingText: s__('Pipeline|Checking pipeline status'),\n pipelineSummaryFetchError: __('There was a problem fetching the pipeline summary.'),\n pipelineStatusText: s__('Pipelines|Pipeline %{linkStart}#%{pipelineId}%{linkEnd} %{status}'),\n pipelineCommitText: s__('Pipelines|Pipeline %{status} for %{linkStart}%{commit}%{linkEnd} '),\n },\n components: {\n CiIcon,\n GlLink,\n GlLoadingIcon,\n GlSprintf,\n PipelineMiniGraph,\n TimeAgoTooltip,\n },\n props: {\n fullPath: {\n type: String,\n required: true,\n },\n iid: {\n type: String,\n required: true,\n },\n includeCommitInfo: {\n type: Boolean,\n required: false,\n default: false,\n },\n pipelineEtag: {\n type: String,\n required: true,\n },\n },\n data() {\n return {\n pipeline: {},\n pollInterval: PIPELINE_POLL_INTERVAL_DEFAULT,\n };\n },\n apollo: {\n pipeline: {\n context() {\n return getQueryHeaders(this.pipelineEtag);\n },\n query: getPipelineSummaryQuery,\n notifyOnNetworkStatusChange: true,\n pollInterval() {\n return this.pollInterval;\n },\n variables() {\n return {\n fullPath: this.fullPath,\n iid: this.iid,\n includeCommitInfo: this.includeCommitInfo,\n };\n },\n result({ networkStatus }) {\n // We need this for handling the reactive poll interval while also using frontend cache\n // a status of 7 = 'ready'\n if (networkStatus !== NETWORK_STATUS_READY) return;\n this.pollInterval = this.increasePollInterval();\n },\n update({ project }) {\n return project?.pipeline || {};\n },\n error(error) {\n createAlert({ message: this.$options.i18n.pipelineSummaryFetchError });\n reportToSentry(this.$options.name, error);\n },\n },\n },\n computed: {\n commitPath() {\n return this.pipeline?.commit?.webPath;\n },\n commitSha() {\n return this.pipeline?.commit?.shortId;\n },\n downstreamPipelines() {\n return this.pipeline?.downstream?.nodes || [];\n },\n finishedAt() {\n return this.pipeline?.finishedAt;\n },\n isLoading() {\n return this.$apollo.queries.pipeline.loading;\n },\n pipelineId() {\n return getIdFromGraphQLId(this.pipeline?.id);\n },\n pipelinePath() {\n return this.status?.detailsPath || '';\n },\n pipelineStages() {\n return this.pipeline?.stages?.nodes || [];\n },\n status() {\n return this.pipeline?.detailedStatus || null;\n },\n statusLabel() {\n return this.status?.label || '';\n },\n upstreamPipeline() {\n return this.pipeline?.upstream || {};\n },\n },\n mounted() {\n Visibility.change(() => {\n this.handlePolling();\n });\n },\n methods: {\n /** Note: cannot use `toggleQueryPollingByVisibility` because interval is dynamic */\n handlePolling() {\n if (!Visibility.hidden()) {\n this.resetPollInterval();\n } else {\n this.pollInterval = 0;\n }\n },\n increasePollInterval() {\n return getIncreasedPollInterval(this.pollInterval);\n },\n onJobActionExecuted() {\n this.resetPollInterval();\n },\n resetPollInterval() {\n this.pollInterval = PIPELINE_POLL_INTERVAL_DEFAULT;\n },\n },\n};\n</script>\n\n<template>\n <div class=\"w-100\">\n <div v-if=\"isLoading\" class=\"align-items-center gl-mx-2 gl-flex\">\n <gl-loading-icon class=\"gl-mr-4\" />\n {{ $options.i18n.loadingText }}\n </div>\n <div v-else class=\"align-items-center w-100 gl-flex\">\n <div\n class=\"flex-grow-1 justify-space-between gl-flex gl-flex-wrap gl-gap-3\"\n :class=\"{ 'align-items-center': !finishedAt }\"\n >\n <ci-icon v-if=\"status\" class=\"gl-mt-1 gl-self-start\" :status=\"status\" />\n <div class=\"flex-grow-1 gl-flex gl-flex-col\">\n <span>\n <gl-sprintf :message=\"$options.i18n.pipelineStatusText\">\n <template #status>{{ statusLabel }}</template>\n <template #link=\"{ content }\">\n <gl-link data-testid=\"pipeline-path\" :href=\"pipelinePath\">\n <gl-sprintf :message=\"content\">\n <template #pipelineId>{{ pipelineId }}</template>\n </gl-sprintf>\n </gl-link>\n </template>\n </gl-sprintf>\n </span>\n <span class=\"align-items-center gl-flex gl-text-sm gl-text-subtle\">\n <span v-if=\"includeCommitInfo\" data-testid=\"commit-info\">\n <gl-sprintf :message=\"$options.i18n.pipelineCommitText\">\n <template #status>{{ statusLabel }}</template>\n <template #link>\n <gl-link\n data-testid=\"commit-path\"\n :href=\"commitPath\"\n class=\"commit-sha-container gl-mr-2\"\n >\n {{ commitSha }}\n </gl-link>\n </template>\n </gl-sprintf>\n </span>\n <time-ago-tooltip v-if=\"finishedAt\" :time=\"finishedAt\" tooltip-placement=\"bottom\" />\n </span>\n </div>\n <pipeline-mini-graph\n data-testid=\"pipeline-summary-pipeline-mini-graph\"\n :downstream-pipelines=\"downstreamPipelines\"\n :pipeline-path=\"pipelinePath\"\n :pipeline-stages=\"pipelineStages\"\n :upstream-pipeline=\"upstreamPipeline\"\n @jobActionExecuted=\"onJobActionExecuted\"\n />\n </div>\n </div>\n </div>\n</template>\n","import { FOUR_MINUTES_IN_MS, PIPELINE_POLL_INTERVAL_BACKOFF } from '~/ci/constants';\n\nexport const getIncreasedPollInterval = (currentInterval) => {\n const intervalIncreased = PIPELINE_POLL_INTERVAL_BACKOFF * currentInterval;\n\n return intervalIncreased >= FOUR_MINUTES_IN_MS ? FOUR_MINUTES_IN_MS : intervalIncreased;\n};\n","import { render, staticRenderFns } from \"./pipeline_summary.vue?vue&type=template&id=101a1478\"\nimport script from \"./pipeline_summary.vue?vue&type=script&lang=js\"\nexport * from \"./pipeline_summary.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import GlIcon from '../../icon/icon';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n name: 'GlListboxItem',\n components: {\n GlIcon\n },\n props: {\n isSelected: {\n type: Boolean,\n default: false,\n required: false\n },\n isFocused: {\n type: Boolean,\n default: false,\n required: false\n },\n isCheckCentered: {\n type: Boolean,\n required: false,\n default: false\n }\n },\n computed: {\n checkedClasses() {\n if (this.isCheckCentered) {\n return '';\n }\n return 'gl-mt-3 gl-self-start';\n }\n },\n methods: {\n toggleSelection() {\n this.$emit('select', !this.isSelected);\n },\n onKeydown(event) {\n const {\n code\n } = event;\n if (code === ENTER || code === SPACE) {\n stopEvent(event);\n this.toggleSelection();\n }\n }\n }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"gl-new-dropdown-item\",attrs:{\"role\":\"option\",\"tabindex\":_vm.isFocused ? 0 : -1,\"aria-selected\":_vm.isSelected},on:{\"click\":_vm.toggleSelection,\"keydown\":_vm.onKeydown}},[_c('span',{staticClass:\"gl-new-dropdown-item-content\"},[_c('gl-icon',{class:[\n 'gl-new-dropdown-item-check-icon',\n { 'gl-invisible': !_vm.isSelected },\n _vm.checkedClasses ],attrs:{\"name\":\"mobile-issue-close\",\"data-testid\":\"dropdown-item-checkbox\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"default\")],2)],1)])};\nvar __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = __vue_normalize__(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nexport default __vue_component__;\n"],"sourceRoot":""}