@schukai/monster 4.136.4 → 4.136.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1 +1 @@
1
- {"author":"Volker Schukai","dependencies":{"@floating-ui/dom":"^1.7.6"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"4.136.4"}
1
+ {"author":"Volker Schukai","dependencies":{"@floating-ui/dom":"^1.7.6"},"description":"Monster is a simple library for creating fast, robust and lightweight websites.","homepage":"https://monsterjs.org/","keywords":["framework","web","dom","css","sass","mobile-first","app","front-end","templates","schukai","core","shopcloud","alvine","monster","buildmap","stack","observer","observable","uuid","node","nodelist","css-in-js","logger","log","theme"],"license":"AGPL 3.0","main":"source/monster.mjs","module":"source/monster.mjs","name":"@schukai/monster","repository":{"type":"git","url":"https://gitlab.schukai.com/oss/libraries/javascript/monster.git"},"type":"module","version":"4.136.5"}
@@ -41,6 +41,7 @@ import { getLocaleOfDocument } from "../../dom/locale.mjs";
41
41
  import {
42
42
  findElementWithSelectorUpwards,
43
43
  getDocument,
44
+ getWindow,
44
45
  } from "../../dom/util.mjs";
45
46
  import {
46
47
  getDocumentTranslations,
@@ -69,6 +70,7 @@ import {
69
70
  isPositionedPopperOpen,
70
71
  openPositionedPopper,
71
72
  positionPopper,
73
+ resolveClippingBoundaryElement,
72
74
  } from "./util/floating-ui.mjs";
73
75
  import { Pathfinder } from "../../data/pathfinder.mjs";
74
76
  import { TokenList } from "../../types/tokenlist.mjs";
@@ -76,9 +78,14 @@ import { TokenList } from "../../types/tokenlist.mjs";
76
78
  import "../datatable/pagination.mjs";
77
79
 
78
80
  export {
81
+ getDefaultSelectPopperPositionProfile,
79
82
  getSelectionTemplate,
80
83
  getSummaryTemplate,
81
84
  popperElementSymbol,
85
+ resolveSelectPopperWidthConstraints,
86
+ resolveSelectListDimension,
87
+ resolveSelectVisibleRect,
88
+ resolveSelectViewportMetrics,
82
89
  Select,
83
90
  };
84
91
 
@@ -129,6 +136,14 @@ const clearOptionEventHandler = Symbol("clearOptionEventHandler");
129
136
  * @type {Symbol}
130
137
  */
131
138
  const resizeObserverSymbol = Symbol("resizeObserver");
139
+ const resizeObserverFrameSymbol = Symbol("resizeObserverFrame");
140
+ const visualViewportResizeHandlerSymbol = Symbol("visualViewportResizeHandler");
141
+ const visualViewportScrollHandlerSymbol = Symbol("visualViewportScrollHandler");
142
+ const visibilityChangeHandlerSymbol = Symbol("visibilityChangeHandler");
143
+ const windowResizeHandlerSymbol = Symbol("windowResizeHandler");
144
+ const windowOrientationChangeHandlerSymbol = Symbol(
145
+ "windowOrientationChangeHandler",
146
+ );
132
147
 
133
148
  /**
134
149
  * local symbol
@@ -343,6 +358,9 @@ const FILTER_POSITION_POPPER = "popper";
343
358
  * @type {string}
344
359
  */
345
360
  const FILTER_POSITION_INLINE = "inline";
361
+ const SELECT_MIN_POPPER_WIDTH = 240;
362
+ const SELECT_MAX_POPPER_HEIGHT = 500;
363
+ const SELECT_VIEWPORT_PADDING = 12;
346
364
 
347
365
  /**
348
366
  * A select control that can be used to select o
@@ -1975,21 +1993,8 @@ function initOptionsFromArguments() {
1975
1993
  * @private
1976
1994
  */
1977
1995
  function attachResizeObserver() {
1978
- // against flickering
1979
- this[resizeObserverSymbol] = new ResizeObserver((entries) => {
1980
- if (this[timerCallbackSymbol] instanceof DeadMansSwitch) {
1981
- try {
1982
- this[timerCallbackSymbol].touch();
1983
- return;
1984
- } catch (e) {
1985
- delete this[timerCallbackSymbol];
1986
- }
1987
- }
1988
-
1989
- this[timerCallbackSymbol] = new DeadMansSwitch(200, () => {
1990
- updatePopper.call(this);
1991
- delete this[timerCallbackSymbol];
1992
- });
1996
+ this[resizeObserverSymbol] = new ResizeObserver(() => {
1997
+ scheduleResizeObserverPopperUpdate.call(this);
1993
1998
  });
1994
1999
 
1995
2000
  let parent = this.parentNode;
@@ -2000,6 +2005,70 @@ function attachResizeObserver() {
2000
2005
  if (parent instanceof HTMLElement) {
2001
2006
  this[resizeObserverSymbol].observe(parent);
2002
2007
  }
2008
+
2009
+ for (const element of [
2010
+ this,
2011
+ this[controlElementSymbol],
2012
+ this[popperElementSymbol],
2013
+ this[popperFilterContainerElementSymbol],
2014
+ this[optionsElementSymbol],
2015
+ this[paginationElementSymbol],
2016
+ ]) {
2017
+ if (element instanceof HTMLElement) {
2018
+ this[resizeObserverSymbol].observe(element);
2019
+ }
2020
+ }
2021
+
2022
+ const boundaryElement = resolveClippingBoundaryElement(
2023
+ this[controlElementSymbol],
2024
+ this[popperElementSymbol],
2025
+ );
2026
+ if (boundaryElement instanceof HTMLElement) {
2027
+ this[resizeObserverSymbol].observe(boundaryElement);
2028
+ }
2029
+
2030
+ const viewport = getGlobal().visualViewport;
2031
+ const windowObject = getWindow();
2032
+ this[visualViewportResizeHandlerSymbol] = () => {
2033
+ updatePopper.call(this);
2034
+ };
2035
+ this[visualViewportScrollHandlerSymbol] = () => {
2036
+ updatePopper.call(this);
2037
+ };
2038
+ this[visibilityChangeHandlerSymbol] = () => {
2039
+ if (document.visibilityState === "visible") {
2040
+ updatePopper.call(this);
2041
+ }
2042
+ };
2043
+ this[windowResizeHandlerSymbol] = () => {
2044
+ updatePopper.call(this);
2045
+ };
2046
+ this[windowOrientationChangeHandlerSymbol] = () => {
2047
+ updatePopper.call(this);
2048
+ };
2049
+
2050
+ if (viewport) {
2051
+ viewport.addEventListener(
2052
+ "resize",
2053
+ this[visualViewportResizeHandlerSymbol],
2054
+ );
2055
+ viewport.addEventListener(
2056
+ "scroll",
2057
+ this[visualViewportScrollHandlerSymbol],
2058
+ );
2059
+ }
2060
+
2061
+ document.addEventListener(
2062
+ "visibilitychange",
2063
+ this[visibilityChangeHandlerSymbol],
2064
+ );
2065
+ if (windowObject?.addEventListener instanceof Function) {
2066
+ windowObject.addEventListener("resize", this[windowResizeHandlerSymbol]);
2067
+ windowObject.addEventListener(
2068
+ "orientationchange",
2069
+ this[windowOrientationChangeHandlerSymbol],
2070
+ );
2071
+ }
2003
2072
  }
2004
2073
 
2005
2074
  /**
@@ -2009,6 +2078,83 @@ function disconnectResizeObserver() {
2009
2078
  if (this[resizeObserverSymbol] instanceof ResizeObserver) {
2010
2079
  this[resizeObserverSymbol].disconnect();
2011
2080
  }
2081
+ cancelScheduledResizeObserverPopperUpdate.call(this);
2082
+
2083
+ const viewport = getGlobal().visualViewport;
2084
+ if (
2085
+ viewport &&
2086
+ this[visualViewportResizeHandlerSymbol] instanceof Function
2087
+ ) {
2088
+ viewport.removeEventListener(
2089
+ "resize",
2090
+ this[visualViewportResizeHandlerSymbol],
2091
+ );
2092
+ }
2093
+ if (
2094
+ viewport &&
2095
+ this[visualViewportScrollHandlerSymbol] instanceof Function
2096
+ ) {
2097
+ viewport.removeEventListener(
2098
+ "scroll",
2099
+ this[visualViewportScrollHandlerSymbol],
2100
+ );
2101
+ }
2102
+ if (this[visibilityChangeHandlerSymbol] instanceof Function) {
2103
+ document.removeEventListener(
2104
+ "visibilitychange",
2105
+ this[visibilityChangeHandlerSymbol],
2106
+ );
2107
+ }
2108
+ const windowObject = getWindow();
2109
+ if (
2110
+ windowObject?.removeEventListener instanceof Function &&
2111
+ this[windowResizeHandlerSymbol] instanceof Function
2112
+ ) {
2113
+ windowObject.removeEventListener("resize", this[windowResizeHandlerSymbol]);
2114
+ }
2115
+ if (
2116
+ windowObject?.removeEventListener instanceof Function &&
2117
+ this[windowOrientationChangeHandlerSymbol] instanceof Function
2118
+ ) {
2119
+ windowObject.removeEventListener(
2120
+ "orientationchange",
2121
+ this[windowOrientationChangeHandlerSymbol],
2122
+ );
2123
+ }
2124
+ }
2125
+
2126
+ function scheduleResizeObserverPopperUpdate() {
2127
+ const globalObject = getGlobal();
2128
+ if (typeof this[resizeObserverFrameSymbol] === "number") {
2129
+ return;
2130
+ }
2131
+
2132
+ const schedule =
2133
+ globalObject?.requestAnimationFrame instanceof Function
2134
+ ? globalObject.requestAnimationFrame.bind(globalObject)
2135
+ : (callback) => {
2136
+ return globalObject.setTimeout(callback, 16);
2137
+ };
2138
+
2139
+ this[resizeObserverFrameSymbol] = schedule(() => {
2140
+ delete this[resizeObserverFrameSymbol];
2141
+ updatePopper.call(this);
2142
+ });
2143
+ }
2144
+
2145
+ function cancelScheduledResizeObserverPopperUpdate() {
2146
+ const globalObject = getGlobal();
2147
+ const frameId = this[resizeObserverFrameSymbol];
2148
+ if (typeof frameId !== "number") {
2149
+ return;
2150
+ }
2151
+
2152
+ if (globalObject?.cancelAnimationFrame instanceof Function) {
2153
+ globalObject.cancelAnimationFrame(frameId);
2154
+ } else {
2155
+ globalObject.clearTimeout(frameId);
2156
+ }
2157
+ delete this[resizeObserverFrameSymbol];
2012
2158
  }
2013
2159
 
2014
2160
  /**
@@ -2468,10 +2614,9 @@ function calcAndSetOptionsDimension() {
2468
2614
  }
2469
2615
 
2470
2616
  let visible = 0;
2471
- let optionHeight = 0;
2617
+ const visibleOptionHeights = [];
2472
2618
  const max = this.getOption("showMaxOptions", 10);
2473
2619
 
2474
- let scrollFlag = false;
2475
2620
  for (const [, option] of Object.entries(options)) {
2476
2621
  const computedStyle = getGlobal().getComputedStyle(option);
2477
2622
  if (computedStyle.display === "none") continue;
@@ -2479,18 +2624,8 @@ function calcAndSetOptionsDimension() {
2479
2624
  let h = option.getBoundingClientRect().height;
2480
2625
  h += parseInt(computedStyle.getPropertyValue("margin-top"), 10);
2481
2626
  h += parseInt(computedStyle.getPropertyValue("margin-bottom"), 10);
2482
- optionHeight += h;
2483
-
2627
+ visibleOptionHeights.push(h);
2484
2628
  visible++;
2485
-
2486
- if (visible > max) {
2487
- break;
2488
- }
2489
- }
2490
-
2491
- if (visible > max) {
2492
- visible = max;
2493
- scrollFlag = true;
2494
2629
  }
2495
2630
 
2496
2631
  if (visible === 0) {
@@ -2535,61 +2670,299 @@ function calcAndSetOptionsDimension() {
2535
2670
  let margin = parseInt(styles.getPropertyValue("margin-top"), 10);
2536
2671
  margin += parseInt(styles.getPropertyValue("margin-bottom"), 10);
2537
2672
 
2538
- let containerHeight = optionHeight + padding + margin;
2539
- const maxViewportHeight = Math.floor(getVisibleHeightLimit(this) / 3);
2540
- if (containerHeight > maxViewportHeight) {
2541
- containerHeight = maxViewportHeight;
2542
- }
2673
+ const geometry = getSelectPopperGeometry.call(this);
2674
+ const listDimension = resolveSelectListDimension({
2675
+ visibleOptionHeights,
2676
+ maxVisibleOptions: max,
2677
+ availableHeight: geometry.availableHeight,
2678
+ padding,
2679
+ margin,
2680
+ });
2681
+ const widthConstraints = resolveSelectPopperWidthConstraints({
2682
+ controlWidth: this[controlElementSymbol].getBoundingClientRect().width,
2683
+ availableWidth: geometry.availableWidth,
2684
+ });
2543
2685
 
2544
- container.style.height = `${containerHeight}px`;
2686
+ container.style.height =
2687
+ listDimension.desiredHeight > 0 ? `${listDimension.desiredHeight}px` : "0px";
2688
+ container.style.maxHeight =
2689
+ listDimension.maxHeight > 0 ? `${listDimension.maxHeight}px` : "0px";
2690
+ container.style.overflowY = listDimension.overflowY;
2545
2691
 
2546
- if (scrollFlag === true) {
2547
- container.style.overflowY = "scroll";
2692
+ this[popperElementSymbol].dataset.monsterPreferredWidth = `${Math.ceil(
2693
+ widthConstraints.preferredWidth,
2694
+ )}`;
2695
+ if (
2696
+ Number.isFinite(widthConstraints.maxWidth) &&
2697
+ widthConstraints.maxWidth > 0
2698
+ ) {
2699
+ this[popperElementSymbol].dataset.monsterPreferredMaxWidth = `${Math.ceil(
2700
+ widthConstraints.maxWidth,
2701
+ )}`;
2702
+ this[popperElementSymbol].style.maxWidth = `${Math.ceil(
2703
+ widthConstraints.maxWidth,
2704
+ )}px`;
2548
2705
  } else {
2549
- container.style.overflowY = "auto";
2706
+ delete this[popperElementSymbol].dataset.monsterPreferredMaxWidth;
2707
+ this[popperElementSymbol].style.removeProperty("maxWidth");
2708
+ }
2709
+ this[popperElementSymbol].style.width = "";
2710
+ this[popperElementSymbol].style.removeProperty("minWidth");
2711
+ this[popperElementSymbol].style.maxHeight = `${Math.ceil(
2712
+ Math.min(geometry.availableHeight, SELECT_MAX_POPPER_HEIGHT),
2713
+ )}px`;
2714
+ container.style.overflowX = "hidden";
2715
+
2716
+ if (content instanceof HTMLElement) {
2717
+ content.style.overflow = "hidden";
2718
+ content.style.maxHeight =
2719
+ listDimension.maxHeight > 0 ? `${listDimension.maxHeight}px` : "";
2550
2720
  }
2721
+ }
2551
2722
 
2552
- const domRect = this[controlElementSymbol].getBoundingClientRect();
2723
+ function resolveSelectPopperPreferredWidth(controlWidth) {
2724
+ return Math.max(Math.ceil(controlWidth), SELECT_MIN_POPPER_WIDTH);
2725
+ }
2553
2726
 
2554
- this[popperElementSymbol].dataset.monsterPreferredWidth = `${Math.ceil(
2555
- domRect.width,
2556
- )}`;
2557
- this[popperElementSymbol].style.width = `${domRect.width}px`;
2558
- this[popperElementSymbol].style.minWidth = `${domRect.width}px`;
2559
- container.style.overflowX = "auto";
2727
+ function resolveSelectPopperWidthConstraints({
2728
+ controlWidth = 0,
2729
+ availableWidth = 0,
2730
+ }) {
2731
+ const preferredWidth = resolveSelectPopperPreferredWidth(controlWidth);
2732
+ const maxWidth = Math.max(0, availableWidth);
2560
2733
 
2561
- if (content instanceof HTMLElement) {
2562
- content.style.overflowX = "hidden";
2563
- content.style.overflowY = "hidden";
2734
+ return {
2735
+ preferredWidth,
2736
+ maxWidth: maxWidth > 0 ? maxWidth : Infinity,
2737
+ };
2738
+ }
2739
+
2740
+ function resolveSelectListDimension({
2741
+ visibleOptionHeights = [],
2742
+ maxVisibleOptions = 10,
2743
+ availableHeight,
2744
+ padding = 0,
2745
+ margin = 0,
2746
+ }) {
2747
+ const visibleHeights = visibleOptionHeights.filter((height) => {
2748
+ return Number.isFinite(height) && height > 0;
2749
+ });
2750
+ const naturalListHeight =
2751
+ visibleHeights
2752
+ .slice(0, Math.max(0, maxVisibleOptions))
2753
+ .reduce((sum, height) => {
2754
+ return sum + height;
2755
+ }, 0) +
2756
+ padding +
2757
+ margin;
2758
+ const fullListHeight =
2759
+ visibleHeights.reduce((sum, height) => {
2760
+ return sum + height;
2761
+ }, 0) +
2762
+ padding +
2763
+ margin;
2764
+ const maxHeight = resolveSelectListMaxHeight({
2765
+ availableHeight,
2766
+ });
2767
+ const desiredHeight = Math.min(
2768
+ maxHeight,
2769
+ fullListHeight > 0 ? naturalListHeight : 0,
2770
+ );
2771
+
2772
+ return {
2773
+ desiredHeight,
2774
+ fullHeight: fullListHeight,
2775
+ maxHeight,
2776
+ overflowY: fullListHeight > desiredHeight ? "auto" : "hidden",
2777
+ };
2778
+ }
2779
+
2780
+ function resolveSelectListMaxHeight(geometry) {
2781
+ if (!geometry || !Number.isFinite(geometry.availableHeight)) {
2782
+ return SELECT_MAX_POPPER_HEIGHT;
2564
2783
  }
2784
+
2785
+ return Math.max(
2786
+ 0,
2787
+ Math.min(geometry.availableHeight, SELECT_MAX_POPPER_HEIGHT),
2788
+ );
2565
2789
  }
2566
2790
 
2567
- /**
2568
- * @private
2569
- */
2570
- function getVisibleHeightLimit(startEl) {
2571
- let el = startEl;
2572
- const gcs = getGlobal().getComputedStyle;
2791
+ function getViewportMetrics() {
2792
+ const globalObject = getGlobal();
2793
+ const documentElement = globalObject.document?.documentElement;
2794
+ const viewport = globalObject.visualViewport;
2795
+ const metrics = resolveSelectViewportMetrics({
2796
+ layoutWidth: Math.max(
2797
+ documentElement?.clientWidth || 0,
2798
+ globalObject.innerWidth || 0,
2799
+ ),
2800
+ layoutHeight: Math.max(
2801
+ documentElement?.clientHeight || 0,
2802
+ globalObject.innerHeight || 0,
2803
+ ),
2804
+ visualWidth: viewport?.width || 0,
2805
+ visualHeight: viewport?.height || 0,
2806
+ offsetLeft: viewport?.offsetLeft || 0,
2807
+ offsetTop: viewport?.offsetTop || 0,
2808
+ padding: SELECT_VIEWPORT_PADDING,
2809
+ });
2573
2810
 
2574
- while (el) {
2575
- const style = gcs(el);
2576
- const overflowY = style.overflowY;
2811
+ return {
2812
+ width: metrics.width,
2813
+ height: metrics.height,
2814
+ left: metrics.left,
2815
+ top: metrics.top,
2816
+ padding: metrics.padding,
2817
+ };
2818
+ }
2577
2819
 
2578
- const isScrollable = ["auto", "scroll", "hidden"].includes(overflowY);
2820
+ function resolveSelectViewportMetrics({
2821
+ layoutWidth = 0,
2822
+ layoutHeight = 0,
2823
+ visualWidth = 0,
2824
+ visualHeight = 0,
2825
+ offsetLeft = 0,
2826
+ offsetTop = 0,
2827
+ padding = SELECT_VIEWPORT_PADDING,
2828
+ }) {
2829
+ return {
2830
+ width: Math.max(layoutWidth, visualWidth),
2831
+ height: Math.max(layoutHeight, visualHeight),
2832
+ left: offsetLeft,
2833
+ top: offsetTop,
2834
+ padding,
2835
+ };
2836
+ }
2579
2837
 
2580
- if (isScrollable && el.clientHeight > 0) {
2581
- return el.clientHeight;
2582
- }
2838
+ function resolveSelectVisibleRect({
2839
+ viewportMetrics,
2840
+ boundaryRect = null,
2841
+ }) {
2842
+ const viewportLeft = (viewportMetrics?.left || 0) + (viewportMetrics?.padding || 0);
2843
+ const viewportTop = (viewportMetrics?.top || 0) + (viewportMetrics?.padding || 0);
2844
+ const viewportRight =
2845
+ (viewportMetrics?.left || 0) +
2846
+ (viewportMetrics?.width || 0) -
2847
+ (viewportMetrics?.padding || 0);
2848
+ const viewportBottom =
2849
+ (viewportMetrics?.top || 0) +
2850
+ (viewportMetrics?.height || 0) -
2851
+ (viewportMetrics?.padding || 0);
2852
+
2853
+ const left = boundaryRect
2854
+ ? Math.max(viewportLeft, boundaryRect.left)
2855
+ : viewportLeft;
2856
+ const top = boundaryRect
2857
+ ? Math.max(viewportTop, boundaryRect.top)
2858
+ : viewportTop;
2859
+ const right = boundaryRect
2860
+ ? Math.min(viewportRight, boundaryRect.right)
2861
+ : viewportRight;
2862
+ const bottom = boundaryRect
2863
+ ? Math.min(viewportBottom, boundaryRect.bottom)
2864
+ : viewportBottom;
2583
2865
 
2584
- const root = el.getRootNode?.();
2585
- if (root instanceof ShadowRoot && root.host) {
2586
- el = root.host;
2587
- } else {
2588
- el = el.parentElement;
2589
- }
2866
+ return {
2867
+ left,
2868
+ top,
2869
+ right,
2870
+ bottom,
2871
+ width: Math.max(0, right - left),
2872
+ height: Math.max(0, bottom - top),
2873
+ };
2874
+ }
2875
+
2876
+ function getSelectPopperGeometry() {
2877
+ const viewport = getViewportMetrics();
2878
+ const boundaryElement = resolveClippingBoundaryElement(
2879
+ this[controlElementSymbol],
2880
+ this[popperElementSymbol],
2881
+ );
2882
+ const controlRect = this[controlElementSymbol].getBoundingClientRect();
2883
+ const boundaryRect =
2884
+ boundaryElement instanceof HTMLElement
2885
+ ? boundaryElement.getBoundingClientRect()
2886
+ : null;
2887
+ const visibleRect = resolveSelectVisibleRect({
2888
+ viewportMetrics: viewport,
2889
+ boundaryRect,
2890
+ });
2891
+ const spaceAbove = Math.max(
2892
+ 0,
2893
+ controlRect.top - visibleRect.top,
2894
+ );
2895
+ const spaceBelow = Math.max(
2896
+ 0,
2897
+ visibleRect.bottom - controlRect.bottom,
2898
+ );
2899
+ const availableHeight = Math.max(spaceAbove, spaceBelow, 0);
2900
+
2901
+ return {
2902
+ spaceAbove,
2903
+ spaceBelow,
2904
+ availableHeight,
2905
+ availableWidth: visibleRect.width,
2906
+ boundaryElement,
2907
+ };
2908
+ }
2909
+
2910
+ function getSelectPopperPositionOptions() {
2911
+ const popperOptions = Object.assign({}, this.getOption("popper", {}));
2912
+ const middleware = popperOptions.middleware;
2913
+ const usesLegacyDefaultMiddleware =
2914
+ isArray(middleware) &&
2915
+ middleware.length === 2 &&
2916
+ middleware[0] === "flip" &&
2917
+ middleware[1] === "offset:1";
2918
+
2919
+ if (
2920
+ !isArray(middleware) ||
2921
+ middleware.length === 0 ||
2922
+ usesLegacyDefaultMiddleware
2923
+ ) {
2924
+ popperOptions.middleware = getDefaultSelectPopperPositionProfile().middleware;
2925
+ }
2926
+
2927
+ if (
2928
+ !isString(popperOptions.placement) ||
2929
+ popperOptions.placement === "bottom"
2930
+ ) {
2931
+ popperOptions.placement =
2932
+ getDefaultSelectPopperPositionProfile().placement;
2590
2933
  }
2591
2934
 
2592
- return window.innerHeight;
2935
+ return popperOptions;
2936
+ }
2937
+
2938
+ function getDefaultSelectPopperPositionProfile() {
2939
+ return {
2940
+ placement: "bottom-start",
2941
+ middleware: ["flip", "offset:4", "shift:crossAxis", "size"],
2942
+ };
2943
+ }
2944
+
2945
+ function resetSelectPopperDimensionStyles() {
2946
+ if (!(this[popperElementSymbol] instanceof HTMLElement)) {
2947
+ return;
2948
+ }
2949
+
2950
+ delete this[popperElementSymbol].dataset.monsterPreferredWidth;
2951
+ delete this[popperElementSymbol].dataset.monsterPreferredMaxWidth;
2952
+ this[popperElementSymbol].style.removeProperty("width");
2953
+ this[popperElementSymbol].style.removeProperty("minWidth");
2954
+ this[popperElementSymbol].style.removeProperty("maxWidth");
2955
+ this[popperElementSymbol].style.removeProperty("maxHeight");
2956
+
2957
+ const content = this[popperElementSymbol].querySelector('[part="content"]');
2958
+ if (content instanceof HTMLElement) {
2959
+ content.style.removeProperty("maxHeight");
2960
+ }
2961
+
2962
+ if (this[optionsElementSymbol] instanceof HTMLElement) {
2963
+ this[optionsElementSymbol].style.removeProperty("height");
2964
+ this[optionsElementSymbol].style.removeProperty("maxHeight");
2965
+ }
2593
2966
  }
2594
2967
 
2595
2968
  /**
@@ -3751,6 +4124,7 @@ function fetchData(url) {
3751
4124
  * @private
3752
4125
  */
3753
4126
  function hide() {
4127
+ resetSelectPopperDimensionStyles.call(this);
3754
4128
  closePositionedPopper(this[popperElementSymbol]);
3755
4129
  setStatusOrRemoveBadges.call(this, "closed");
3756
4130
  removeAttributeToken(this[controlElementSymbol], "class", "open");
@@ -3819,11 +4193,12 @@ function show() {
3819
4193
  return;
3820
4194
  }
3821
4195
 
4196
+ resetSelectPopperDimensionStyles.call(this);
3822
4197
  this[popperElementSymbol].style.visibility = "hidden";
3823
4198
  openPositionedPopper(
3824
4199
  this[controlElementSymbol],
3825
4200
  this[popperElementSymbol],
3826
- this.getOption("popper", {}),
4201
+ getSelectPopperPositionOptions.call(this),
3827
4202
  );
3828
4203
  setStatusOrRemoveBadges.call(this, "open");
3829
4204
 
@@ -4493,7 +4868,7 @@ function updatePopper() {
4493
4868
  this,
4494
4869
  this[controlElementSymbol],
4495
4870
  this[popperElementSymbol],
4496
- this.getOption("popper", {}),
4871
+ getSelectPopperPositionOptions.call(this),
4497
4872
  );
4498
4873
  requestAnimationFrame(() => {
4499
4874
  refreshSelectPaginationLayout.call(this);
@@ -258,10 +258,14 @@ div[data-monster-role=selection] {
258
258
  box-sizing: border-box;
259
259
  display: flex;
260
260
  flex-direction: column;
261
+ width: 100%;
262
+ max-width: 100%;
263
+ min-width: 0;
261
264
  flex-grow: 1;
262
265
  scrollbar-color: var(--monster-color-primary-1) var(--monster-bg-color-primary-1);
263
266
  scrollbar-width: thin;
264
267
  transition: height 0.3s ease;
268
+ overflow-x: hidden;
265
269
  }
266
270
 
267
271
  [data-monster-role=option] {
@@ -269,6 +273,9 @@ div[data-monster-role=selection] {
269
273
  align-items: center;
270
274
  display: flex;
271
275
  box-sizing: border-box;
276
+ width: 100%;
277
+ max-width: 100%;
278
+ min-width: 0;
272
279
  }
273
280
 
274
281
  [data-monster-role=option] label {
@@ -277,6 +284,8 @@ div[data-monster-role=selection] {
277
284
  justify-content: flex-start;
278
285
  align-items: center;
279
286
  width: 100%;
287
+ max-width: 100%;
288
+ min-width: 0;
280
289
  }
281
290
 
282
291
 
@@ -286,9 +295,18 @@ div[data-monster-role=selection] {
286
295
  flex-direction: row;
287
296
  align-items: center;
288
297
  width: 100%;
298
+ max-width: 100%;
299
+ min-width: 0;
289
300
  outline: none;
290
301
  }
291
302
 
303
+ [part=option-label] {
304
+ max-width: 100%;
305
+ min-width: 0;
306
+ overflow-wrap: anywhere;
307
+ word-break: break-word;
308
+ }
309
+
292
310
  [data-monster-role="no-options"] {
293
311
  }
294
312
 
@@ -10,10 +10,10 @@
10
10
  * For more information about purchasing a commercial license, please contact Volker Schukai.
11
11
  */
12
12
 
13
- import {addAttributeToken} from "../../../dom/attributes.mjs";
14
- import {ATTRIBUTE_ERRORMESSAGE} from "../../../dom/constants.mjs";
13
+ import { addAttributeToken } from "../../../dom/attributes.mjs";
14
+ import { ATTRIBUTE_ERRORMESSAGE } from "../../../dom/constants.mjs";
15
15
 
16
- export {ContextErrorStyleSheet}
16
+ export { ContextErrorStyleSheet };
17
17
 
18
18
  /**
19
19
  * @private
@@ -22,10 +22,17 @@ export {ContextErrorStyleSheet}
22
22
  const ContextErrorStyleSheet = new CSSStyleSheet();
23
23
 
24
24
  try {
25
- ContextErrorStyleSheet.insertRule(`
25
+ ContextErrorStyleSheet.insertRule(
26
+ `
26
27
  @layer contexterror {
27
28
  [data-monster-role=control]{box-sizing:border-box;outline:none;width:100%}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:host{box-sizing:border-box;display:block}div[data-monster-role=popper]{align-content:center;background:var(--monster-bg-color-primary-1);border-color:var(--monster-bg-color-primary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-shadow:var(--monster-box-shadow-1);box-sizing:border-box;color:var(--monster-color-primary-1);display:none;justify-content:space-between;left:0;max-height:var(--monster-popper-max-height,calc(100vh - 2rem));max-width:var(--monster-popper-max-width,calc(100vw - 2rem));padding:1.1em;position:absolute;top:0;width:-moz-max-content;width:max-content;z-index:var(--monster-z-index-modal)}div[data-monster-role=popper]>[part=content]{max-height:var(--monster-popper-content-max-height,calc(100vh - 4.2rem));overflow:auto}div[data-monster-role=popper]>[part=content][data-monster-overflow-mode=horizontal]{clip-path:none;overflow:visible}div[data-monster-role=popper]>[part=content][data-monster-overflow-mode=visible]{clip-path:none;max-height:none;max-width:none;overflow:visible}div[data-monster-role=popper] div[data-monster-role=arrow]{background:var(--monster-bg-color-primary-1);height:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);pointer-events:none;position:absolute;width:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);z-index:-1}[data-monster-role=control]{line-height:1em;margin:0;padding:0;position:relative}[data-monster-role=control] [data-monster-role=button]{display:inline-block;position:relative}:is([data-monster-role=control] [data-monster-role=button]) svg{cursor:pointer}:is([data-monster-role=control] [data-monster-role=button]) svg.hidden{cursor:default;pointer-events:none;visibility:hidden}:host{display:inline-block;margin:0 .2em;padding:0;position:relative;vertical-align:bottom}div[data-monster-role=popper]{max-width:min(var(--monster-popper-max-width,calc(100vw - 2rem)),32rem)}div[data-monster-role=popper]>[part=content]{display:block;max-width:100%;overflow-wrap:anywhere;text-wrap:pretty;white-space:normal;word-break:break-word}:host([disabled]) [data-monster-role=button] svg{cursor:default;pointer-events:none}
28
- }`, 0);
29
+ }`,
30
+ 0,
31
+ );
29
32
  } catch (e) {
30
- addAttributeToken(document.getRootNode().querySelector('html'), ATTRIBUTE_ERRORMESSAGE, e + "");
33
+ addAttributeToken(
34
+ document.getRootNode().querySelector("html"),
35
+ ATTRIBUTE_ERRORMESSAGE,
36
+ e + "",
37
+ );
31
38
  }
@@ -10,10 +10,10 @@
10
10
  * For more information about purchasing a commercial license, please contact Volker Schukai.
11
11
  */
12
12
 
13
- import {addAttributeToken} from "../../../dom/attributes.mjs";
14
- import {ATTRIBUTE_ERRORMESSAGE} from "../../../dom/constants.mjs";
13
+ import { addAttributeToken } from "../../../dom/attributes.mjs";
14
+ import { ATTRIBUTE_ERRORMESSAGE } from "../../../dom/constants.mjs";
15
15
 
16
- export {ContextHelpStyleSheet}
16
+ export { ContextHelpStyleSheet };
17
17
 
18
18
  /**
19
19
  * @private
@@ -22,10 +22,17 @@ export {ContextHelpStyleSheet}
22
22
  const ContextHelpStyleSheet = new CSSStyleSheet();
23
23
 
24
24
  try {
25
- ContextHelpStyleSheet.insertRule(`
25
+ ContextHelpStyleSheet.insertRule(
26
+ `
26
27
  @layer contexthelp {
27
28
  [data-monster-role=control]{box-sizing:border-box;outline:none;width:100%}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:host{box-sizing:border-box;display:block}div[data-monster-role=popper]{align-content:center;background:var(--monster-bg-color-primary-1);border-color:var(--monster-bg-color-primary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-shadow:var(--monster-box-shadow-1);box-sizing:border-box;color:var(--monster-color-primary-1);display:none;justify-content:space-between;left:0;max-height:var(--monster-popper-max-height,calc(100vh - 2rem));max-width:var(--monster-popper-max-width,calc(100vw - 2rem));padding:1.1em;position:absolute;top:0;width:-moz-max-content;width:max-content;z-index:var(--monster-z-index-modal)}div[data-monster-role=popper]>[part=content]{max-height:var(--monster-popper-content-max-height,calc(100vh - 4.2rem));overflow:auto}div[data-monster-role=popper]>[part=content][data-monster-overflow-mode=horizontal]{clip-path:none;overflow:visible}div[data-monster-role=popper]>[part=content][data-monster-overflow-mode=visible]{clip-path:none;max-height:none;max-width:none;overflow:visible}div[data-monster-role=popper] div[data-monster-role=arrow]{background:var(--monster-bg-color-primary-1);height:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);pointer-events:none;position:absolute;width:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);z-index:-1}[data-monster-role=control]{line-height:1em;margin:0;padding:0;position:relative}[data-monster-role=control] [data-monster-role=button]{display:inline-block;position:relative}:is([data-monster-role=control] [data-monster-role=button]) svg{cursor:pointer}:is([data-monster-role=control] [data-monster-role=button]) svg.hidden{cursor:default;pointer-events:none;visibility:hidden}div[data-monster-role=popper]{max-width:min(var(--monster-popper-max-width,calc(100vw - 2rem)),32rem);z-index:var(--monster-z-index-tooltip-overlay)}div[data-monster-role=popper]>[part=content]{display:block;max-width:100%;overflow-wrap:anywhere;text-wrap:pretty;white-space:normal;word-break:break-word}:host{display:inline-block;margin:0 .2em;padding:0;position:relative;vertical-align:bottom}:host([disabled]) [data-monster-role=button] svg{cursor:default;pointer-events:none}
28
- }`, 0);
29
+ }`,
30
+ 0,
31
+ );
29
32
  } catch (e) {
30
- addAttributeToken(document.getRootNode().querySelector('html'), ATTRIBUTE_ERRORMESSAGE, e + "");
33
+ addAttributeToken(
34
+ document.getRootNode().querySelector("html"),
35
+ ATTRIBUTE_ERRORMESSAGE,
36
+ e + "",
37
+ );
31
38
  }
@@ -10,10 +10,10 @@
10
10
  * For more information about purchasing a commercial license, please contact Volker Schukai.
11
11
  */
12
12
 
13
- import { addAttributeToken } from "../../../dom/attributes.mjs";
14
- import { ATTRIBUTE_ERRORMESSAGE } from "../../../dom/constants.mjs";
13
+ import {addAttributeToken} from "../../../dom/attributes.mjs";
14
+ import {ATTRIBUTE_ERRORMESSAGE} from "../../../dom/constants.mjs";
15
15
 
16
- export { SelectStyleSheet };
16
+ export {SelectStyleSheet}
17
17
 
18
18
  /**
19
19
  * @private
@@ -22,17 +22,10 @@ export { SelectStyleSheet };
22
22
  const SelectStyleSheet = new CSSStyleSheet();
23
23
 
24
24
  try {
25
- SelectStyleSheet.insertRule(
26
- `
25
+ SelectStyleSheet.insertRule(`
27
26
  @layer select {
28
- .block{display:block}.inline{display:inline}.inline-block{display:inline-block}.grid{display:grid}.inline-grid{display:inline-grid}.flex{display:flex}.inline-flex{display:inline-flex}.hidden,.hide,.none{display:none}.visible{visibility:visible}.invisible{visibility:hidden}.monster-border-primary-1,.monster-border-primary-2,.monster-border-primary-3,.monster-border-primary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-0{border-radius:0;border-style:none;border-width:0}.monster-border-primary-1{border-color:var(--monster-bg-color-primary-1)}.monster-border-primary-2{border-color:var(--monster-bg-color-primary-2)}.monster-border-primary-3{border-color:var(--monster-bg-color-primary-3)}.monster-border-primary-4{border-color:var(--monster-bg-color-primary-4)}.monster-border-secondary-1,.monster-border-secondary-2,.monster-border-secondary-3,.monster-border-secondary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-secondary-1{border-color:var(--monster-bg-color-secondary-1)}.monster-border-secondary-2{border-color:var(--monster-bg-color-secondary-2)}.monster-border-secondary-3{border-color:var(--monster-bg-color-secondary-3)}.monster-border-secondary-4{border-color:var(--monster-bg-color-secondary-4)}.monster-border-tertiary-1,.monster-border-tertiary-2,.monster-border-tertiary-3,.monster-border-tertiary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-tertiary-1{border-color:var(--monster-bg-color-tertiary-1)}.monster-border-tertiary-2{border-color:var(--monster-bg-color-tertiary-2)}.monster-border-tertiary-3{border-color:var(--monster-bg-color-tertiary-3)}.monster-border-tertiary-4{border-color:var(--monster-bg-color-tertiary-4)}[data-monster-role=control]{width:100%}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:host{box-sizing:border-box;display:block}.monster-badge-primary{padding:.25em .4em}.monster-badge-primary,.monster-badge-primary-pill{background-color:var(--monster-bg-color-primary-4);border-radius:.25rem;color:var(--monster-color-primary-4);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-primary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-secondary{padding:.25em .4em}.monster-badge-secondary,.monster-badge-secondary-pill{background-color:var(--monster-bg-color-secondary-3);border-radius:.25rem;color:var(--monster-color-secondary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-secondary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-tertiary{padding:.25em .4em}.monster-badge-tertiary,.monster-badge-tertiary-pill{background-color:var(--monster-bg-color-tertiary-3);border-radius:.25rem;color:var(--monster-color-tertiary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-tertiary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-destructive{padding:.25em .4em}.monster-badge-destructive,.monster-badge-destructive-pill{background-color:var(--monster-bg-color-destructive-1);border-radius:.25rem;color:var(--monster-color-destructive-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-destructive-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-success{padding:.25em .4em}.monster-badge-success,.monster-badge-success-pill{background-color:var(--monster-bg-color-success-1);border-radius:.25rem;color:var(--monster-color-success-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-success-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-warning{padding:.25em .4em}.monster-badge-warning,.monster-badge-warning-pill{background-color:var(--monster-bg-color-warning-1);border-radius:.25rem;color:var(--monster-color-warning-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-warning-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-error{padding:.25em .4em}.monster-badge-error,.monster-badge-error-pill{background-color:var(--monster-bg-color-error-1);border-radius:.25rem;color:var(--monster-color-error-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-error-pill{border-radius:10rem;padding:.25em .6em}.monster-margin-0{margin:var(--monster-space-0)}.monster-margin-top-0{margin-top:var(--monster-space-0)}.monster-margin-end-0{margin-right:var(--monster-space-0)}.monster-margin-bottom-0{margin-bottom:var(--monster-space-0)}.monster-margin-start-0{margin-left:var(--monster-space-0)}.monster-padding-0{padding:var(--monster-space-0)}.monster-padding-top-0{padding-top:var(--monster-space-0)}.monster-padding-end-0{padding-right:var(--monster-space-0)}.monster-padding-bottom-0{padding-bottom:var(--monster-space-0)}.monster-padding-start-0{padding-left:var(--monster-space-0)}.monster-margin-1{margin:var(--monster-space-1)}.monster-margin-top-1{margin-top:var(--monster-space-1)}.monster-margin-end-1{margin-right:var(--monster-space-1)}.monster-margin-bottom-1{margin-bottom:var(--monster-space-1)}.monster-margin-start-1{margin-left:var(--monster-space-1)}.monster-padding-1{padding:var(--monster-space-1)}.monster-padding-top-1{padding-top:var(--monster-space-1)}.monster-padding-end-1{padding-right:var(--monster-space-1)}.monster-padding-bottom-1{padding-bottom:var(--monster-space-1)}.monster-padding-start-1{padding-left:var(--monster-space-1)}.monster-margin-2{margin:var(--monster-space-2)}.monster-margin-top-2{margin-top:var(--monster-space-2)}.monster-margin-end-2{margin-right:var(--monster-space-2)}.monster-margin-bottom-2{margin-bottom:var(--monster-space-2)}.monster-margin-start-2{margin-left:var(--monster-space-2)}.monster-padding-2{padding:var(--monster-space-2)}.monster-padding-top-2{padding-top:var(--monster-space-2)}.monster-padding-end-2{padding-right:var(--monster-space-2)}.monster-padding-bottom-2{padding-bottom:var(--monster-space-2)}.monster-padding-start-2{padding-left:var(--monster-space-2)}.monster-margin-3{margin:var(--monster-space-3)}.monster-margin-top-3{margin-top:var(--monster-space-3)}.monster-margin-end-3{margin-right:var(--monster-space-3)}.monster-margin-bottom-3{margin-bottom:var(--monster-space-3)}.monster-margin-start-3{margin-left:var(--monster-space-3)}.monster-padding-3{padding:var(--monster-space-3)}.monster-padding-top-3{padding-top:var(--monster-space-3)}.monster-padding-end-3{padding-right:var(--monster-space-3)}.monster-padding-bottom-3{padding-bottom:var(--monster-space-3)}.monster-padding-start-3{padding-left:var(--monster-space-3)}.monster-margin-4{margin:var(--monster-space-4)}.monster-margin-top-4{margin-top:var(--monster-space-4)}.monster-margin-end-4{margin-right:var(--monster-space-4)}.monster-margin-bottom-4{margin-bottom:var(--monster-space-4)}.monster-margin-start-4{margin-left:var(--monster-space-4)}.monster-padding-4{padding:var(--monster-space-4)}.monster-padding-top-4{padding-top:var(--monster-space-4)}.monster-padding-end-4{padding-right:var(--monster-space-4)}.monster-padding-bottom-4{padding-bottom:var(--monster-space-4)}.monster-padding-start-4{padding-left:var(--monster-space-4)}.monster-margin-5{margin:var(--monster-space-5)}.monster-margin-top-5{margin-top:var(--monster-space-5)}.monster-margin-end-5{margin-right:var(--monster-space-5)}.monster-margin-bottom-5{margin-bottom:var(--monster-space-5)}.monster-margin-start-5{margin-left:var(--monster-space-5)}.monster-padding-5{padding:var(--monster-space-5)}.monster-padding-top-5{padding-top:var(--monster-space-5)}.monster-padding-end-5{padding-right:var(--monster-space-5)}.monster-padding-bottom-5{padding-bottom:var(--monster-space-5)}.monster-padding-start-5{padding-left:var(--monster-space-5)}.monster-margin-6{margin:var(--monster-space-6)}.monster-margin-top-6{margin-top:var(--monster-space-6)}.monster-margin-end-6{margin-right:var(--monster-space-6)}.monster-margin-bottom-6{margin-bottom:var(--monster-space-6)}.monster-margin-start-6{margin-left:var(--monster-space-6)}.monster-padding-6{padding:var(--monster-space-6)}.monster-padding-top-6{padding-top:var(--monster-space-6)}.monster-padding-end-6{padding-right:var(--monster-space-6)}.monster-padding-bottom-6{padding-bottom:var(--monster-space-6)}.monster-padding-start-6{padding-left:var(--monster-space-6)}.monster-margin-7{margin:var(--monster-space-7)}.monster-margin-top-7{margin-top:var(--monster-space-7)}.monster-margin-end-7{margin-right:var(--monster-space-7)}.monster-margin-bottom-7{margin-bottom:var(--monster-space-7)}.monster-margin-start-7{margin-left:var(--monster-space-7)}.monster-padding-7{padding:var(--monster-space-7)}.monster-padding-top-7{padding-top:var(--monster-space-7)}.monster-padding-end-7{padding-right:var(--monster-space-7)}.monster-padding-bottom-7{padding-bottom:var(--monster-space-7)}.monster-padding-start-7{padding-left:var(--monster-space-7)}div[data-monster-role=popper]{align-content:center;background:var(--monster-bg-color-primary-1);border-color:var(--monster-bg-color-primary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-shadow:var(--monster-box-shadow-1);box-sizing:border-box;color:var(--monster-color-primary-1);display:none;justify-content:space-between;left:0;max-height:var(--monster-popper-max-height,calc(100vh - 2rem));max-width:var(--monster-popper-max-width,calc(100vw - 2rem));padding:1.1em;position:absolute;top:0;width:-moz-max-content;width:max-content;z-index:var(--monster-z-index-modal)}div[data-monster-role=popper]>[part=content]{max-height:var(--monster-popper-content-max-height,calc(100vh - 4.2rem));max-width:100%;overflow:auto}div[data-monster-role=popper]>[part=content][data-monster-overflow-mode=horizontal]{clip-path:none;overflow:visible}div[data-monster-role=popper]>[part=content][data-monster-overflow-mode=visible]{clip-path:none;max-height:none;max-width:none;overflow:visible}div[data-monster-role=popper] div[data-monster-role=arrow]{background:var(--monster-bg-color-primary-1);height:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);pointer-events:none;position:absolute;width:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);z-index:-1}[data-monster-role=container]{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:4 0 90%;min-height:1.4em;overflow:auto;scrollbar-color:var(--monster-color-primary-1) var(--monster-bg-color-primary-1);scrollbar-width:thin;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;width:100%}.d-none{display:none!important}div[data-monster-role=no-options] span,div[data-monster-role=remote-info] span{text-wrap:balance}div[data-monster-role=control]{display:flex;height:100%;position:relative}[data-monster-role=container].open{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\")}[data-monster-role=container].clear,[data-monster-role=container].open{background-color:var(--monster-bg-color-primary-2);-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:.8em;mask-size:.8em}[data-monster-role=container].clear{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\")}[data-monster-role=control]{accent-color:var(--monster-color-secondary-2);background-color:var(--monster-bg-color-primary-1);border-color:var(--monster-theme-control-border-color);-o-border-image:initial;border-image:initial;border-radius:var(--monster-theme-control-border-radius);border-style:var(--monster-theme-control-border-style);border-width:var(--monster-theme-control-border-width);box-sizing:border-box;color:var(--monster-color-primary-1);display:flex;font-family:inherit;font-size:100%;margin:0;outline:none;padding:.4rem .6rem;width:-webkit-fill-available;width:-moz-available;width:fill-available}@media (prefers-color-scheme:light){[data-monster-role=control]{background-color:var(--monster-bg-color-primary-1);border-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-1)}[data-monster-role=control]:focus{outline:1px dashed var(--monster-color-selection-4);outline-offset:2px}}[data-monster-role=control]:hover{box-shadow:var(--monster-box-shadow-2);transition:background .8s,color .25s .0833333333s}:host([disabled]) [data-monster-role=control]{cursor:not-allowed}:host([disabled]) [data-monster-role=status-or-remove-badges],[data-monster-role=control][disabled] [data-monster-role=status-or-remove-badges]{display:none}div[data-monster-role=selection]{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;gap:5px;justify-content:flex-start;margin:5px}[data-monster-role=option-control]{margin-right:8px}[data-monster-role=badge]{display:inline-flex}[data-monster-role=badge-label]{align-content:center;align-items:center;display:flex;flex-direction:row;gap:7px;justify-content:space-between}[data-monster-role=filter],[data-monster-role=popper-filter]{display:flex;flex-grow:200;order:99999999;visibility:hidden}[data-monster-role=filter].active{background-color:var(--monster-bg-color-primary-2);border:0;border-color:var(--monster-bg-color-primary-3);border-bottom:1px solid var(--monster-bg-color-primary-3);color:var(--monster-color-primary-2);min-width:40%;outline:none;visibility:visible}.active[data-monster-role=filter][name=popper-filter]{height:1.5em;margin:2.5em;padding:2px;width:calc(100% - var(--monster-border-width)*2)}.option-filter-control{align-items:center;background-color:var(--monster-bg-color-primary-2);display:flex;height:2.5em;margin:-1.1em -1.1em .3em}[data-monster-role=remove-badge]{background-color:var(--monster-bg-color-primary-2);height:16px;margin-left:5px;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");order:2}[data-monster-role=remove-badge],[data-monster-role=status-or-remove-badges]{-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:.8em;mask-size:.8em;min-height:16px;width:16px}[data-monster-role=status-or-remove-badges]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\")}.open[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\")}.empty[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-dash-circle' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-dash-circle' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8'/%3E%3C/svg%3E\")}.clear[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\")}.error[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-error-1);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\")}@media (prefers-color-scheme:dark){.error[data-monster-role=status-or-remove-badges]{background-color:var(--monster-color-error-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\")}}.loading[data-monster-role=status-or-remove-badges]{animation-duration:1s;animation-iteration-count:infinite;animation-name:activity;animation-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='activity' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='activity' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3C/svg%3E\")}@keyframes activity{0%{transform:scale(1)}50%{transform:scale(.1)}to{transform:scale(1)}}[data-monster-role=options]{box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;scrollbar-color:var(--monster-color-primary-1) var(--monster-bg-color-primary-1);scrollbar-width:thin;transition:height .3s ease}[data-monster-role=option]{align-items:center;box-sizing:border-box;display:flex;padding:6px 5px}[data-monster-role=option] label{align-items:center;display:flex;flex-direction:row;justify-content:flex-start;width:100%}[data-monster-role=option] label>div{align-items:center;display:flex;flex-direction:row;justify-content:space-between;outline:none;width:100%}.selected{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}[data-monster-role=option][data-monster-filtered=true],[data-monster-role=option][data-monster-visibility=hidden]{display:none}[data-monster-role=option][data-monster-focused=true]{outline:1px dashed var(--monster-color-selection-2);outline-offset:-2px}@media (prefers-color-scheme:dark){[data-monster-role=option][data-monster-focused=true]{outline:1px dashed var(--monster-color-selection-4)}}[data-monster-role=filter]::-moz-placeholder{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}[data-monster-role=filter]::placeholder{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}[data-monster-role=option]>input:focus,[data-monster-role=option]>label:focus{outline:none}[data-monster-role=selection-messages]:empty:before,[data-monster-role=summary-messages]:empty:before{content:\"\u00A0\"}.in-button-bar{border-color:var(--monster-bg-color-primary-4)!important;border-style:var(--monster-border-style)!important;border-width:var(--monster-border-width)!important}[data-monster-role=pagination]::part(nav){justify-content:flex-start}[data-monster-role=pagination]::part(list){margin-bottom:0;margin-top:0}
29
- }`,
30
- 0,
31
- );
27
+ .block{display:block}.inline{display:inline}.inline-block{display:inline-block}.grid{display:grid}.inline-grid{display:inline-grid}.flex{display:flex}.inline-flex{display:inline-flex}.hidden,.hide,.none{display:none}.visible{visibility:visible}.invisible{visibility:hidden}.monster-border-primary-1,.monster-border-primary-2,.monster-border-primary-3,.monster-border-primary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-0{border-radius:0;border-style:none;border-width:0}.monster-border-primary-1{border-color:var(--monster-bg-color-primary-1)}.monster-border-primary-2{border-color:var(--monster-bg-color-primary-2)}.monster-border-primary-3{border-color:var(--monster-bg-color-primary-3)}.monster-border-primary-4{border-color:var(--monster-bg-color-primary-4)}.monster-border-secondary-1,.monster-border-secondary-2,.monster-border-secondary-3,.monster-border-secondary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-secondary-1{border-color:var(--monster-bg-color-secondary-1)}.monster-border-secondary-2{border-color:var(--monster-bg-color-secondary-2)}.monster-border-secondary-3{border-color:var(--monster-bg-color-secondary-3)}.monster-border-secondary-4{border-color:var(--monster-bg-color-secondary-4)}.monster-border-tertiary-1,.monster-border-tertiary-2,.monster-border-tertiary-3,.monster-border-tertiary-4{border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width)}.monster-border-tertiary-1{border-color:var(--monster-bg-color-tertiary-1)}.monster-border-tertiary-2{border-color:var(--monster-bg-color-tertiary-2)}.monster-border-tertiary-3{border-color:var(--monster-bg-color-tertiary-3)}.monster-border-tertiary-4{border-color:var(--monster-bg-color-tertiary-4)}[data-monster-role=control]{width:100%}[data-monster-role=control].flex{align-items:center;display:flex;flex-direction:row}:host{box-sizing:border-box;display:block}.monster-badge-primary{padding:.25em .4em}.monster-badge-primary,.monster-badge-primary-pill{background-color:var(--monster-bg-color-primary-4);border-radius:.25rem;color:var(--monster-color-primary-4);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-primary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-secondary{padding:.25em .4em}.monster-badge-secondary,.monster-badge-secondary-pill{background-color:var(--monster-bg-color-secondary-3);border-radius:.25rem;color:var(--monster-color-secondary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-secondary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-tertiary{padding:.25em .4em}.monster-badge-tertiary,.monster-badge-tertiary-pill{background-color:var(--monster-bg-color-tertiary-3);border-radius:.25rem;color:var(--monster-color-tertiary-3);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-tertiary-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-destructive{padding:.25em .4em}.monster-badge-destructive,.monster-badge-destructive-pill{background-color:var(--monster-bg-color-destructive-1);border-radius:.25rem;color:var(--monster-color-destructive-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-destructive-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-success{padding:.25em .4em}.monster-badge-success,.monster-badge-success-pill{background-color:var(--monster-bg-color-success-1);border-radius:.25rem;color:var(--monster-color-success-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-success-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-warning{padding:.25em .4em}.monster-badge-warning,.monster-badge-warning-pill{background-color:var(--monster-bg-color-warning-1);border-radius:.25rem;color:var(--monster-color-warning-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-warning-pill{border-radius:10rem;padding:.25em .6em}.monster-badge-error{padding:.25em .4em}.monster-badge-error,.monster-badge-error-pill{background-color:var(--monster-bg-color-error-1);border-radius:.25rem;color:var(--monster-color-error-1);display:inline-block;font-size:75%;font-weight:700;line-height:1;text-align:center;text-decoration:none;vertical-align:baseline;white-space:nowrap}.monster-badge-error-pill{border-radius:10rem;padding:.25em .6em}.monster-margin-0{margin:var(--monster-space-0)}.monster-margin-top-0{margin-top:var(--monster-space-0)}.monster-margin-end-0{margin-right:var(--monster-space-0)}.monster-margin-bottom-0{margin-bottom:var(--monster-space-0)}.monster-margin-start-0{margin-left:var(--monster-space-0)}.monster-padding-0{padding:var(--monster-space-0)}.monster-padding-top-0{padding-top:var(--monster-space-0)}.monster-padding-end-0{padding-right:var(--monster-space-0)}.monster-padding-bottom-0{padding-bottom:var(--monster-space-0)}.monster-padding-start-0{padding-left:var(--monster-space-0)}.monster-margin-1{margin:var(--monster-space-1)}.monster-margin-top-1{margin-top:var(--monster-space-1)}.monster-margin-end-1{margin-right:var(--monster-space-1)}.monster-margin-bottom-1{margin-bottom:var(--monster-space-1)}.monster-margin-start-1{margin-left:var(--monster-space-1)}.monster-padding-1{padding:var(--monster-space-1)}.monster-padding-top-1{padding-top:var(--monster-space-1)}.monster-padding-end-1{padding-right:var(--monster-space-1)}.monster-padding-bottom-1{padding-bottom:var(--monster-space-1)}.monster-padding-start-1{padding-left:var(--monster-space-1)}.monster-margin-2{margin:var(--monster-space-2)}.monster-margin-top-2{margin-top:var(--monster-space-2)}.monster-margin-end-2{margin-right:var(--monster-space-2)}.monster-margin-bottom-2{margin-bottom:var(--monster-space-2)}.monster-margin-start-2{margin-left:var(--monster-space-2)}.monster-padding-2{padding:var(--monster-space-2)}.monster-padding-top-2{padding-top:var(--monster-space-2)}.monster-padding-end-2{padding-right:var(--monster-space-2)}.monster-padding-bottom-2{padding-bottom:var(--monster-space-2)}.monster-padding-start-2{padding-left:var(--monster-space-2)}.monster-margin-3{margin:var(--monster-space-3)}.monster-margin-top-3{margin-top:var(--monster-space-3)}.monster-margin-end-3{margin-right:var(--monster-space-3)}.monster-margin-bottom-3{margin-bottom:var(--monster-space-3)}.monster-margin-start-3{margin-left:var(--monster-space-3)}.monster-padding-3{padding:var(--monster-space-3)}.monster-padding-top-3{padding-top:var(--monster-space-3)}.monster-padding-end-3{padding-right:var(--monster-space-3)}.monster-padding-bottom-3{padding-bottom:var(--monster-space-3)}.monster-padding-start-3{padding-left:var(--monster-space-3)}.monster-margin-4{margin:var(--monster-space-4)}.monster-margin-top-4{margin-top:var(--monster-space-4)}.monster-margin-end-4{margin-right:var(--monster-space-4)}.monster-margin-bottom-4{margin-bottom:var(--monster-space-4)}.monster-margin-start-4{margin-left:var(--monster-space-4)}.monster-padding-4{padding:var(--monster-space-4)}.monster-padding-top-4{padding-top:var(--monster-space-4)}.monster-padding-end-4{padding-right:var(--monster-space-4)}.monster-padding-bottom-4{padding-bottom:var(--monster-space-4)}.monster-padding-start-4{padding-left:var(--monster-space-4)}.monster-margin-5{margin:var(--monster-space-5)}.monster-margin-top-5{margin-top:var(--monster-space-5)}.monster-margin-end-5{margin-right:var(--monster-space-5)}.monster-margin-bottom-5{margin-bottom:var(--monster-space-5)}.monster-margin-start-5{margin-left:var(--monster-space-5)}.monster-padding-5{padding:var(--monster-space-5)}.monster-padding-top-5{padding-top:var(--monster-space-5)}.monster-padding-end-5{padding-right:var(--monster-space-5)}.monster-padding-bottom-5{padding-bottom:var(--monster-space-5)}.monster-padding-start-5{padding-left:var(--monster-space-5)}.monster-margin-6{margin:var(--monster-space-6)}.monster-margin-top-6{margin-top:var(--monster-space-6)}.monster-margin-end-6{margin-right:var(--monster-space-6)}.monster-margin-bottom-6{margin-bottom:var(--monster-space-6)}.monster-margin-start-6{margin-left:var(--monster-space-6)}.monster-padding-6{padding:var(--monster-space-6)}.monster-padding-top-6{padding-top:var(--monster-space-6)}.monster-padding-end-6{padding-right:var(--monster-space-6)}.monster-padding-bottom-6{padding-bottom:var(--monster-space-6)}.monster-padding-start-6{padding-left:var(--monster-space-6)}.monster-margin-7{margin:var(--monster-space-7)}.monster-margin-top-7{margin-top:var(--monster-space-7)}.monster-margin-end-7{margin-right:var(--monster-space-7)}.monster-margin-bottom-7{margin-bottom:var(--monster-space-7)}.monster-margin-start-7{margin-left:var(--monster-space-7)}.monster-padding-7{padding:var(--monster-space-7)}.monster-padding-top-7{padding-top:var(--monster-space-7)}.monster-padding-end-7{padding-right:var(--monster-space-7)}.monster-padding-bottom-7{padding-bottom:var(--monster-space-7)}.monster-padding-start-7{padding-left:var(--monster-space-7)}div[data-monster-role=popper]{align-content:center;background:var(--monster-bg-color-primary-1);border-color:var(--monster-bg-color-primary-4);border-radius:var(--monster-border-radius);border-style:var(--monster-border-style);border-width:var(--monster-border-width);box-shadow:var(--monster-box-shadow-1);box-sizing:border-box;color:var(--monster-color-primary-1);display:none;justify-content:space-between;left:0;max-height:var(--monster-popper-max-height,calc(100vh - 2rem));max-width:var(--monster-popper-max-width,calc(100vw - 2rem));padding:1.1em;position:absolute;top:0;width:-moz-max-content;width:max-content;z-index:var(--monster-z-index-modal)}div[data-monster-role=popper]>[part=content]{max-height:var(--monster-popper-content-max-height,calc(100vh - 4.2rem));max-width:100%;overflow:auto}div[data-monster-role=popper]>[part=content][data-monster-overflow-mode=horizontal]{clip-path:none;overflow:visible}div[data-monster-role=popper]>[part=content][data-monster-overflow-mode=visible]{clip-path:none;max-height:none;max-width:none;overflow:visible}div[data-monster-role=popper] div[data-monster-role=arrow]{background:var(--monster-bg-color-primary-1);height:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);pointer-events:none;position:absolute;width:calc(max(var(--monster-popper-witharrrow-distance), -1 * var(--monster-popper-witharrrow-distance))*2);z-index:-1}[data-monster-role=container]{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:4 0 90%;min-height:1.4em;overflow:auto;scrollbar-color:var(--monster-color-primary-1) var(--monster-bg-color-primary-1);scrollbar-width:thin;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;width:100%}.d-none{display:none!important}div[data-monster-role=no-options] span,div[data-monster-role=remote-info] span{text-wrap:balance}div[data-monster-role=control]{display:flex;height:100%;position:relative}[data-monster-role=container].open{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\")}[data-monster-role=container].clear,[data-monster-role=container].open{background-color:var(--monster-bg-color-primary-2);-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:.8em;mask-size:.8em}[data-monster-role=container].clear{-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\")}[data-monster-role=control]{accent-color:var(--monster-color-secondary-2);background-color:var(--monster-bg-color-primary-1);border-color:var(--monster-theme-control-border-color);-o-border-image:initial;border-image:initial;border-radius:var(--monster-theme-control-border-radius);border-style:var(--monster-theme-control-border-style);border-width:var(--monster-theme-control-border-width);box-sizing:border-box;color:var(--monster-color-primary-1);display:flex;font-family:inherit;font-size:100%;margin:0;outline:none;padding:.4rem .6rem;width:-webkit-fill-available;width:-moz-available;width:fill-available}@media (prefers-color-scheme:light){[data-monster-role=control]{background-color:var(--monster-bg-color-primary-1);border-color:var(--monster-bg-color-primary-3);color:var(--monster-color-primary-1)}[data-monster-role=control]:focus{outline:1px dashed var(--monster-color-selection-4);outline-offset:2px}}[data-monster-role=control]:hover{box-shadow:var(--monster-box-shadow-2);transition:background .8s,color .25s .0833333333s}:host([disabled]) [data-monster-role=control]{cursor:not-allowed}:host([disabled]) [data-monster-role=status-or-remove-badges],[data-monster-role=control][disabled] [data-monster-role=status-or-remove-badges]{display:none}div[data-monster-role=selection]{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;gap:5px;justify-content:flex-start;margin:5px}[data-monster-role=option-control]{margin-right:8px}[data-monster-role=badge]{display:inline-flex}[data-monster-role=badge-label]{align-content:center;align-items:center;display:flex;flex-direction:row;gap:7px;justify-content:space-between}[data-monster-role=filter],[data-monster-role=popper-filter]{display:flex;flex-grow:200;order:99999999;visibility:hidden}[data-monster-role=filter].active{background-color:var(--monster-bg-color-primary-2);border:0;border-color:var(--monster-bg-color-primary-3);border-bottom:1px solid var(--monster-bg-color-primary-3);color:var(--monster-color-primary-2);min-width:40%;outline:none;visibility:visible}.active[data-monster-role=filter][name=popper-filter]{height:1.5em;margin:2.5em;padding:2px;width:calc(100% - var(--monster-border-width)*2)}.option-filter-control{align-items:center;background-color:var(--monster-bg-color-primary-2);display:flex;height:2.5em;margin:-1.1em -1.1em .3em}[data-monster-role=remove-badge]{background-color:var(--monster-bg-color-primary-2);height:16px;margin-left:5px;-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");order:2}[data-monster-role=remove-badge],[data-monster-role=status-or-remove-badges]{-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:.8em;mask-size:.8em;min-height:16px;width:16px}[data-monster-role=status-or-remove-badges]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\")}.open[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M7.646 4.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1-.708.708L8 5.707l-5.646 5.647a.5.5 0 0 1-.708-.708z'/%3E%3C/svg%3E\")}.empty[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-dash-circle' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-dash-circle' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M4 8a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 0 1h-7A.5.5 0 0 1 4 8'/%3E%3C/svg%3E\")}.clear[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708'/%3E%3C/svg%3E\")}.error[data-monster-role=status-or-remove-badges]{background-color:var(--monster-bg-color-error-1);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\")}@media (prefers-color-scheme:dark){.error[data-monster-role=status-or-remove-badges]{background-color:var(--monster-color-error-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' viewBox='0 0 16 16'%3E%3Cpath d='M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16'/%3E%3Cpath d='M7.002 11a1 1 0 1 1 2 0 1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z'/%3E%3C/svg%3E\")}}.loading[data-monster-role=status-or-remove-badges]{animation-duration:1s;animation-iteration-count:infinite;animation-name:activity;animation-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--monster-bg-color-primary-4);-webkit-mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='activity' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='activity' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8'/%3E%3C/svg%3E\")}@keyframes activity{0%{transform:scale(1)}50%{transform:scale(.1)}to{transform:scale(1)}}[data-monster-role=options]{flex-direction:column;flex-grow:1;overflow-x:hidden;scrollbar-color:var(--monster-color-primary-1) var(--monster-bg-color-primary-1);scrollbar-width:thin;transition:height .3s ease}[data-monster-role=option],[data-monster-role=options]{box-sizing:border-box;display:flex;max-width:100%;min-width:0;width:100%}[data-monster-role=option]{align-items:center;padding:6px 5px}[data-monster-role=option] label{justify-content:flex-start}[data-monster-role=option] label,[data-monster-role=option] label>div{align-items:center;display:flex;flex-direction:row;max-width:100%;min-width:0;width:100%}[data-monster-role=option] label>div{justify-content:space-between;outline:none}[part=option-label]{max-width:100%;min-width:0;overflow-wrap:anywhere;word-break:break-word}.selected{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}[data-monster-role=option][data-monster-filtered=true],[data-monster-role=option][data-monster-visibility=hidden]{display:none}[data-monster-role=option][data-monster-focused=true]{outline:1px dashed var(--monster-color-selection-2);outline-offset:-2px}@media (prefers-color-scheme:dark){[data-monster-role=option][data-monster-focused=true]{outline:1px dashed var(--monster-color-selection-4)}}[data-monster-role=filter]::-moz-placeholder{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}[data-monster-role=filter]::placeholder{background-color:var(--monster-bg-color-primary-2);color:var(--monster-color-primary-2)}[data-monster-role=option]>input:focus,[data-monster-role=option]>label:focus{outline:none}[data-monster-role=selection-messages]:empty:before,[data-monster-role=summary-messages]:empty:before{content:\"\u00A0\"}.in-button-bar{border-color:var(--monster-bg-color-primary-4)!important;border-style:var(--monster-border-style)!important;border-width:var(--monster-border-width)!important}[data-monster-role=pagination]::part(nav){justify-content:flex-start}[data-monster-role=pagination]::part(list){margin-bottom:0;margin-top:0}
28
+ }`, 0);
32
29
  } catch (e) {
33
- addAttributeToken(
34
- document.getRootNode().querySelector("html"),
35
- ATTRIBUTE_ERRORMESSAGE,
36
- e + "",
37
- );
30
+ addAttributeToken(document.getRootNode().querySelector('html'), ATTRIBUTE_ERRORMESSAGE, e + "");
38
31
  }
@@ -39,6 +39,7 @@ export {
39
39
  const autoUpdateCleanupMap = new WeakMap();
40
40
  const settlingFrameMap = new WeakMap();
41
41
  const floatingResizeObserverMap = new WeakMap();
42
+ const floatingSyncCycleMap = new WeakMap();
42
43
 
43
44
  /**
44
45
  * @private
@@ -87,7 +88,14 @@ function syncFloatingPopover(
87
88
  allowSettlingPass = true,
88
89
  ) {
89
90
  const arrowElement = popperElement.querySelector("[data-monster-role=arrow]");
90
- const floatingMiddleware = [...config.floatingMiddleware];
91
+ const syncCycleId = claimFloatingSyncCycle(popperElement);
92
+ const floatingMiddleware = buildFloatingMiddleware(
93
+ config.middleware,
94
+ config.placement,
95
+ config.detectOverflowOptions,
96
+ popperElement,
97
+ syncCycleId,
98
+ );
91
99
 
92
100
  resetAdaptiveFloatingElementSize(popperElement);
93
101
 
@@ -98,6 +106,16 @@ function syncFloatingPopover(
98
106
  floatingMiddleware.push(arrow({ element: arrowElement }));
99
107
  }
100
108
 
109
+ if (!config.middlewareTokens.includes("size")) {
110
+ floatingMiddleware.push(
111
+ createAdaptiveSizeMiddleware(
112
+ config.detectOverflowOptions,
113
+ popperElement,
114
+ syncCycleId,
115
+ ),
116
+ );
117
+ }
118
+
101
119
  computePosition(
102
120
  controlElement,
103
121
  popperElement,
@@ -105,6 +123,10 @@ function syncFloatingPopover(
105
123
  middleware: floatingMiddleware,
106
124
  }),
107
125
  ).then(({ x, y, placement, middlewareData }) => {
126
+ if (!isActiveFloatingSyncCycle(popperElement, syncCycleId)) {
127
+ return;
128
+ }
129
+
108
130
  Object.assign(popperElement.style, {
109
131
  top: "0",
110
132
  left: "0",
@@ -156,18 +178,6 @@ function normalizePopperConfig(options, controlElement, popperElement) {
156
178
  );
157
179
  config.middleware = normalizeMiddleware(config);
158
180
  config.middlewareTokens = config.middleware.filter((line) => isString(line));
159
- config.floatingMiddleware = buildFloatingMiddleware(
160
- config.middleware,
161
- config.placement,
162
- config.detectOverflowOptions,
163
- popperElement,
164
- );
165
-
166
- if (!config.middlewareTokens.includes("size")) {
167
- config.floatingMiddleware.push(
168
- createAdaptiveSizeMiddleware(config.detectOverflowOptions, popperElement),
169
- );
170
- }
171
181
 
172
182
  return config;
173
183
  }
@@ -190,6 +200,7 @@ function buildFloatingMiddleware(
190
200
  placement,
191
201
  detectOverflowOptions,
192
202
  popperElement,
203
+ syncCycleId = null,
193
204
  ) {
194
205
  const result = [...middleware];
195
206
 
@@ -208,13 +219,15 @@ function buildFloatingMiddleware(
208
219
  const kv = line.split(":");
209
220
  const fn = kv.shift();
210
221
 
211
- switch (fn) {
212
- case "flip":
213
- result[key] = flip(detectOverflowOptions);
214
- break;
215
- case "shift":
216
- result[key] = shift(detectOverflowOptions);
217
- break;
222
+ switch (fn) {
223
+ case "flip":
224
+ result[key] = flip(detectOverflowOptions);
225
+ break;
226
+ case "shift":
227
+ result[key] = shift(
228
+ normalizeShiftOptions(kv, detectOverflowOptions),
229
+ );
230
+ break;
218
231
  case "autoPlacement":
219
232
  let defaultAllowedPlacements = ["top", "bottom", "left", "right"];
220
233
 
@@ -248,6 +261,7 @@ function buildFloatingMiddleware(
248
261
  result[key] = createAdaptiveSizeMiddleware(
249
262
  detectOverflowOptions,
250
263
  popperElement,
264
+ syncCycleId,
251
265
  );
252
266
  break;
253
267
  case "offset":
@@ -264,7 +278,35 @@ function buildFloatingMiddleware(
264
278
  return result.filter(Boolean);
265
279
  }
266
280
 
267
- function createAdaptiveSizeMiddleware(detectOverflowOptions, popperElement) {
281
+ function normalizeShiftOptions(tokens, detectOverflowOptions) {
282
+ const options = Object.assign({}, detectOverflowOptions);
283
+ const normalizedTokens = tokens
284
+ .join(":")
285
+ .split(",")
286
+ .map((token) => token.trim())
287
+ .filter((token) => token.length > 0);
288
+
289
+ for (const token of normalizedTokens) {
290
+ switch (token) {
291
+ case "crossAxis":
292
+ options.crossAxis = true;
293
+ break;
294
+ case "mainAxis=false":
295
+ options.mainAxis = false;
296
+ break;
297
+ default:
298
+ throw new Error(`Unknown shift option: ${token}`);
299
+ }
300
+ }
301
+
302
+ return options;
303
+ }
304
+
305
+ function createAdaptiveSizeMiddleware(
306
+ detectOverflowOptions,
307
+ popperElement,
308
+ syncCycleId = null,
309
+ ) {
268
310
  return size(
269
311
  Object.assign({}, detectOverflowOptions, {
270
312
  apply({ availableWidth, availableHeight, elements }) {
@@ -272,6 +314,12 @@ function createAdaptiveSizeMiddleware(detectOverflowOptions, popperElement) {
272
314
  if (!(floatingElement instanceof HTMLElement)) {
273
315
  return;
274
316
  }
317
+ if (
318
+ syncCycleId !== null &&
319
+ !isActiveFloatingSyncCycle(floatingElement, syncCycleId)
320
+ ) {
321
+ return;
322
+ }
275
323
 
276
324
  applyAdaptiveFloatingElementSize(floatingElement, {
277
325
  availableWidth,
@@ -484,7 +532,10 @@ function resolveNestedScrollContainerHeight(
484
532
  nestedScrollableElement,
485
533
  contentMaxHeight,
486
534
  ) {
487
- const declaredHeight = readDeclaredDimension(nestedScrollableElement, "height");
535
+ const declaredHeight = readDeclaredDimension(
536
+ nestedScrollableElement,
537
+ "height",
538
+ );
488
539
  const declaredMaxHeight = readDeclaredDimension(
489
540
  nestedScrollableElement,
490
541
  "maxHeight",
@@ -850,6 +901,16 @@ function scheduleSettlingPass(controlElement, popperElement, config) {
850
901
  settlingFrameMap.set(popperElement, frameId);
851
902
  }
852
903
 
904
+ function claimFloatingSyncCycle(popperElement) {
905
+ const nextCycleId = (floatingSyncCycleMap.get(popperElement) || 0) + 1;
906
+ floatingSyncCycleMap.set(popperElement, nextCycleId);
907
+ return nextCycleId;
908
+ }
909
+
910
+ function isActiveFloatingSyncCycle(popperElement, syncCycleId) {
911
+ return floatingSyncCycleMap.get(popperElement) === syncCycleId;
912
+ }
913
+
853
914
  function cancelSettlingPass(popperElement) {
854
915
  const frameId = settlingFrameMap.get(popperElement);
855
916
  if (typeof frameId === "number") {
@@ -33,7 +33,13 @@ let html2 = `
33
33
  </div>
34
34
  `;
35
35
 
36
- let Select, fetchReference;
36
+ let Select,
37
+ getDefaultSelectPopperPositionProfile,
38
+ resolveSelectListDimension,
39
+ resolveSelectPopperWidthConstraints,
40
+ resolveSelectVisibleRect,
41
+ resolveSelectViewportMetrics,
42
+ fetchReference;
37
43
 
38
44
  describe('Select', function () {
39
45
 
@@ -50,6 +56,11 @@ describe('Select', function () {
50
56
 
51
57
  import("../../../../source/components/form/select.mjs").then((m) => {
52
58
  Select = m['Select'];
59
+ getDefaultSelectPopperPositionProfile = m['getDefaultSelectPopperPositionProfile'];
60
+ resolveSelectListDimension = m['resolveSelectListDimension'];
61
+ resolveSelectPopperWidthConstraints = m['resolveSelectPopperWidthConstraints'];
62
+ resolveSelectVisibleRect = m['resolveSelectVisibleRect'];
63
+ resolveSelectViewportMetrics = m['resolveSelectViewportMetrics'];
53
64
  done()
54
65
  }).catch(e => done(e))
55
66
 
@@ -185,6 +196,189 @@ describe('Select', function () {
185
196
 
186
197
  });
187
198
 
199
+ describe('Popper sizing', function () {
200
+ afterEach(() => {
201
+ let mocks = document.getElementById('mocks');
202
+ mocks.innerHTML = "";
203
+ });
204
+
205
+ it('should allow the popper to become wider than a narrow control', function (done) {
206
+ const mocks = document.getElementById('mocks');
207
+ const select = document.createElement('monster-select');
208
+
209
+ select.setOption('options', [
210
+ {label: 'Alpha', value: 'alpha'},
211
+ {label: 'Beta', value: 'beta'}
212
+ ]);
213
+
214
+ mocks.appendChild(select);
215
+
216
+ const shadowRoot = select.shadowRoot;
217
+ const control = shadowRoot.querySelector('[data-monster-role=control]');
218
+ const popper = shadowRoot.querySelector('[data-monster-role=popper]');
219
+
220
+ control.getBoundingClientRect = () => ({
221
+ width: 120,
222
+ height: 36,
223
+ top: 100,
224
+ left: 40,
225
+ right: 160,
226
+ bottom: 136,
227
+ x: 40,
228
+ y: 100
229
+ });
230
+
231
+ setTimeout(() => {
232
+ try {
233
+ shadowRoot.querySelector('[data-monster-role=container]').click();
234
+ setTimeout(() => {
235
+ try {
236
+ expect(popper.style.minWidth).to.equal('');
237
+ expect(popper.dataset.monsterPreferredWidth).to.equal('240');
238
+ done();
239
+ } catch (e) {
240
+ done(e);
241
+ }
242
+ }, 80);
243
+ } catch (e) {
244
+ done(e);
245
+ }
246
+ }, 20);
247
+ });
248
+
249
+ it('should keep the option list height tight for short lists', function () {
250
+ const result = resolveSelectListDimension({
251
+ visibleOptionHeights: [28, 28],
252
+ maxVisibleOptions: 20,
253
+ availableHeight: 500,
254
+ padding: 0,
255
+ margin: 0
256
+ });
257
+
258
+ expect(result.desiredHeight).to.equal(56);
259
+ expect(result.maxHeight).to.equal(500);
260
+ expect(result.overflowY).to.equal('hidden');
261
+ });
262
+
263
+ it('should refresh the content max height when the available popper height grows again', function (done) {
264
+ const mocks = document.getElementById('mocks');
265
+ const select = document.createElement('monster-select');
266
+
267
+ select.setOption('options', Array.from({length: 24}, (_, index) => ({
268
+ label: `Option ${index + 1}`,
269
+ value: `${index + 1}`
270
+ })));
271
+
272
+ mocks.appendChild(select);
273
+
274
+ const shadowRoot = select.shadowRoot;
275
+ const control = shadowRoot.querySelector('[data-monster-role=control]');
276
+ const popper = shadowRoot.querySelector('[data-monster-role=popper]');
277
+ const content = shadowRoot.querySelector('[part=content]');
278
+ const options = shadowRoot.querySelector('[data-monster-role=options]');
279
+
280
+ control.getBoundingClientRect = () => ({
281
+ width: 200,
282
+ height: 36,
283
+ top: 100,
284
+ left: 40,
285
+ right: 240,
286
+ bottom: 136,
287
+ x: 40,
288
+ y: 100
289
+ });
290
+
291
+ setTimeout(() => {
292
+ try {
293
+ shadowRoot.querySelector('[data-monster-role=container]').click();
294
+ setTimeout(() => {
295
+ try {
296
+ content.style.maxHeight = '20px';
297
+ options.style.height = '20px';
298
+ options.style.maxHeight = '20px';
299
+
300
+ select.calcAndSetOptionsDimension();
301
+
302
+ expect(parseFloat(content.style.maxHeight)).to.be.greaterThan(20);
303
+ expect(content.style.maxHeight).to.equal(options.style.maxHeight);
304
+ expect(parseFloat(popper.style.maxHeight)).to.be.at.least(parseFloat(content.style.maxHeight));
305
+ done();
306
+ } catch (e) {
307
+ done(e);
308
+ }
309
+ }, 80);
310
+ } catch (e) {
311
+ done(e);
312
+ }
313
+ }, 20);
314
+ });
315
+
316
+ it('should clamp preferred width to the visible viewport width', function () {
317
+ const result = resolveSelectPopperWidthConstraints({
318
+ controlWidth: 120,
319
+ availableWidth: 176
320
+ });
321
+
322
+ expect(result.preferredWidth).to.equal(240);
323
+ expect(result.maxWidth).to.equal(176);
324
+ });
325
+
326
+ it('should keep start placement while enabling cross-axis shifting', function () {
327
+ const result = getDefaultSelectPopperPositionProfile();
328
+
329
+ expect(result.placement).to.equal('bottom-start');
330
+ expect(result.middleware).to.deep.equal([
331
+ 'flip',
332
+ 'offset:4',
333
+ 'shift:crossAxis',
334
+ 'size'
335
+ ]);
336
+ });
337
+
338
+ it('should prefer the larger live viewport metrics after a resize', function () {
339
+ const result = resolveSelectViewportMetrics({
340
+ layoutWidth: 1400,
341
+ layoutHeight: 900,
342
+ visualWidth: 1024,
343
+ visualHeight: 700,
344
+ offsetLeft: 20,
345
+ offsetTop: 30,
346
+ padding: 12
347
+ });
348
+
349
+ expect(result.width).to.equal(1400);
350
+ expect(result.height).to.equal(900);
351
+ expect(result.left).to.equal(20);
352
+ expect(result.top).to.equal(30);
353
+ expect(result.padding).to.equal(12);
354
+ });
355
+
356
+ it('should intersect viewport and split container for the visible rect', function () {
357
+ const result = resolveSelectVisibleRect({
358
+ viewportMetrics: {
359
+ width: 1400,
360
+ height: 900,
361
+ left: 0,
362
+ top: 0,
363
+ padding: 12
364
+ },
365
+ boundaryRect: {
366
+ left: 100,
367
+ top: 80,
368
+ right: 620,
369
+ bottom: 700
370
+ }
371
+ });
372
+
373
+ expect(result.left).to.equal(100);
374
+ expect(result.top).to.equal(80);
375
+ expect(result.right).to.equal(620);
376
+ expect(result.bottom).to.equal(700);
377
+ expect(result.width).to.equal(520);
378
+ expect(result.height).to.equal(620);
379
+ });
380
+ });
381
+
188
382
  describe('Remote filter pagination', function () {
189
383
  let requestCount = 0;
190
384