@public-ui/hydrate 2.2.19-rc.1 → 2.2.20-3e68a967427d721cf5890286bc87047a988f4113.0

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.
Files changed (3) hide show
  1. package/dist/index.js +126 -589
  2. package/dist/index.mjs +126 -589
  3. package/package.json +3 -3
package/dist/index.mjs CHANGED
@@ -3835,7 +3835,7 @@ const validateAlignment = (component, propName, value) => {
3835
3835
  });
3836
3836
  };
3837
3837
 
3838
- const isObject$2 = (value) => typeof value === 'object' && value !== null;
3838
+ const isObject$1 = (value) => typeof value === 'object' && value !== null;
3839
3839
  const isString$2 = (value, minLength = 0) => typeof value === 'string' && value.length >= minLength;
3840
3840
  const isStyle = (style) => {
3841
3841
  if (typeof style === 'object' && style !== null) {
@@ -3888,7 +3888,7 @@ const validateTabIndex = (component, value) => {
3888
3888
  };
3889
3889
 
3890
3890
  const validateAccordionCallbacks = (component, value) => {
3891
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['AccordionCallbacksPropType {Events.onClick}']), value);
3891
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['AccordionCallbacksPropType {Events.onClick}']), value);
3892
3892
  };
3893
3893
 
3894
3894
  const validateActive = (component, value, options) => {
@@ -3949,7 +3949,7 @@ const validateBadgeText = (component, value) => {
3949
3949
  };
3950
3950
 
3951
3951
  const validateButtonCallbacks = (component, value) => {
3952
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['ButtonCallbacksPropType {Events.onClick, Events.onMouseDown}']), value);
3952
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['ButtonCallbacksPropType {Events.onClick, Events.onMouseDown}']), value);
3953
3953
  };
3954
3954
 
3955
3955
  const buttonTypePropTypeOptions = ['button', 'reset', 'submit'];
@@ -4077,7 +4077,7 @@ const validateCustomClass = (component, value) => {
4077
4077
  };
4078
4078
 
4079
4079
  const validateDetailsCallbacks = (component, value) => {
4080
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['DetailsCallbacksPropType {Events.onToggle}']), value);
4080
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['DetailsCallbacksPropType {Events.onToggle}']), value);
4081
4081
  };
4082
4082
 
4083
4083
  const validateDisabled = (component, value) => {
@@ -4134,7 +4134,7 @@ const validateHref = (component, value, options = {}) => {
4134
4134
  };
4135
4135
 
4136
4136
  const mapCustomIcon = (state, alignment, icon) => {
4137
- if (isObject$2(icon)) {
4137
+ if (isObject$1(icon)) {
4138
4138
  state[alignment] = icon;
4139
4139
  }
4140
4140
  else if (isString$2(icon, 1)) {
@@ -4152,7 +4152,7 @@ const mapIconProp2State = (icon) => {
4152
4152
  },
4153
4153
  };
4154
4154
  }
4155
- else if (isObject$2(icon)) {
4155
+ else if (isObject$1(icon)) {
4156
4156
  const icons = icon;
4157
4157
  mapCustomIcon(state, 'top', icons.top);
4158
4158
  mapCustomIcon(state, 'right', icons.right);
@@ -4168,7 +4168,7 @@ const beforePatchIcon = (component) => {
4168
4168
  (_c = component.nextState) === null || _c === void 0 ? void 0 : _c.set('_icons', mapIconProp2State(icons));
4169
4169
  }
4170
4170
  };
4171
- const isIcon = (value) => isObject$2(value) &&
4171
+ const isIcon = (value) => isObject$1(value) &&
4172
4172
  (typeof value.style === 'undefined' || isStyle(value.style)) &&
4173
4173
  (typeof value.label === 'undefined' || isString$2(value.label)) &&
4174
4174
  isString$2(value.icon, 1);
@@ -4181,11 +4181,11 @@ const validateIcons = (component, value, options = {}) => {
4181
4181
  catch (e) {
4182
4182
  }
4183
4183
  watchValidator(component, '_icons', (value) => {
4184
- const valueIsEmptyObject = isObject$2(value) && Object.keys(value).length === 0;
4184
+ const valueIsEmptyObject = isObject$1(value) && Object.keys(value).length === 0;
4185
4185
  return (value === null ||
4186
4186
  valueIsEmptyObject ||
4187
4187
  isString$2(value, 1) ||
4188
- (isObject$2(value) &&
4188
+ (isObject$1(value) &&
4189
4189
  (isString$2(value.left, 1) ||
4190
4190
  isIcon(value.left) ||
4191
4191
  isString$2(value.right, 1) ||
@@ -4287,7 +4287,7 @@ const validateMsg = (component, value) => {
4287
4287
  }
4288
4288
  catch (e) {
4289
4289
  }
4290
- watchValidator(component, `_msg`, (value) => isObject$2(value) && typeof (value === null || value === void 0 ? void 0 : value._description) === 'string', new Set(['MsgPropType']), value, {
4290
+ watchValidator(component, `_msg`, (value) => isObject$1(value) && typeof (value === null || value === void 0 ? void 0 : value._description) === 'string', new Set(['MsgPropType']), value, {
4291
4291
  defaultValue: {
4292
4292
  _description: '',
4293
4293
  _type: 'error',
@@ -4309,7 +4309,7 @@ const validateOpen = (component, value, options) => {
4309
4309
  };
4310
4310
 
4311
4311
  const validateOptions = (component, value, options = {}) => {
4312
- watchJsonArrayString(component, '_options', (item) => isObject$2(item) && typeof item.label === 'string' && item.label.length > 0, value, undefined, options);
4312
+ watchJsonArrayString(component, '_options', (item) => isObject$1(item) && typeof item.label === 'string' && item.label.length > 0, value, undefined, options);
4313
4313
  };
4314
4314
  const validateOptionsWithOptgroup = (component, value, options = {}) => {
4315
4315
  watchJsonArrayString(component, '_options', validateInputSelectOptions, value, undefined, options);
@@ -4327,7 +4327,7 @@ const validatePopoverAlign = (component, value) => {
4327
4327
  };
4328
4328
 
4329
4329
  const validatePopoverCallbacks = (component, value) => {
4330
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['PopoverCallbacksPropType {Events.onClose}']), value);
4330
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['PopoverCallbacksPropType {Events.onClose}']), value);
4331
4331
  };
4332
4332
 
4333
4333
  const validateReadOnly = (component, value) => {
@@ -4374,10 +4374,10 @@ const validateTabBehavior = (component, value) => {
4374
4374
  };
4375
4375
 
4376
4376
  const validateTableCallbacks = (component, value) => {
4377
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['TableCallbacksPropType {Events.onSort, Events.onSelectionChange}']), value);
4377
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['TableCallbacksPropType {Events.onSort, Events.onSelectionChange}']), value);
4378
4378
  };
4379
4379
  const validateTableStatefulCallbacks = (component, value) => {
4380
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['TableStatefulCallbacksPropType {Events.onSelectionChange}']), value);
4380
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['TableStatefulCallbacksPropType {Events.onSelectionChange}']), value);
4381
4381
  };
4382
4382
 
4383
4383
  const validateTableData = (component, value, setStateHooks) => {
@@ -4391,7 +4391,7 @@ const validateTableData = (component, value, setStateHooks) => {
4391
4391
  }
4392
4392
  catch (e) {
4393
4393
  }
4394
- if (Array.isArray(value) && value.every((data) => isObject$2(data))) {
4394
+ if (Array.isArray(value) && value.every((data) => isObject$1(data))) {
4395
4395
  setState(component, '_data', value, setStateHooks);
4396
4396
  }
4397
4397
  });
@@ -4409,7 +4409,7 @@ const validateTableDataFoot = (component, value, setStateHooks) => {
4409
4409
  }
4410
4410
  catch (e) {
4411
4411
  }
4412
- if (Array.isArray(value) && value.every((data) => isObject$2(data))) {
4412
+ if (Array.isArray(value) && value.every((data) => isObject$1(data))) {
4413
4413
  setState(component, '_dataFoot', value, setStateHooks);
4414
4414
  }
4415
4415
  });
@@ -4444,7 +4444,7 @@ const validateTableSelection = (component, value) => {
4444
4444
  }
4445
4445
  };
4446
4446
  const validateObject = (value) => {
4447
- return value && isObject$2(value) && typeof value.label === 'function' && (!value.selectedKeys || Array.isArray(value.selectedKeys));
4447
+ return value && isObject$1(value) && typeof value.label === 'function' && (!value.selectedKeys || Array.isArray(value.selectedKeys));
4448
4448
  };
4449
4449
  const objectValue = typeof value === 'string' ? parseSerializedValue() : value;
4450
4450
  if (validateObject(objectValue)) {
@@ -4463,7 +4463,7 @@ const validateToolbarItems = (component, value) => {
4463
4463
  }
4464
4464
  catch (e) {
4465
4465
  }
4466
- if (Array.isArray(value) && value.every((items) => isObject$2(items))) {
4466
+ if (Array.isArray(value) && value.every((items) => isObject$1(items))) {
4467
4467
  setState(component, '_items', value);
4468
4468
  }
4469
4469
  });
@@ -8251,7 +8251,7 @@ InputDateController.isoTimeRegex = /^[0-2]\d:[0-5]\d(:[0-5]\d(?:\.\d+)?)?/;
8251
8251
  InputDateController.isoWeekRegex = /^\d{4}-W(?:[0-4]\d|5[0-3])$/;
8252
8252
  InputDateController.DEFAULT_MAX_DATE = new Date(9999, 11, 31, 23, 59, 59);
8253
8253
 
8254
- const defaultStyleCss$w = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n }\n .kol-tooltip-wc .tooltip-floating {\n opacity: 0;\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width, unset);\n max-width: 90vw;\n max-height: 90vh;\n animation-direction: normal;\n /* Can be used to specify the animation duration from the outside. 250ms by default. */\n animation-duration: var(--kolibri-tooltip-animation-duration, 250ms);\n animation-fill-mode: forwards;\n animation-iteration-count: 1;\n animation-timing-function: ease-in;\n }\n .kol-tooltip-wc .tooltip-floating.hide {\n animation-name: hideTooltip;\n }\n .kol-tooltip-wc .tooltip-floating.show {\n animation-name: showTooltip;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes hideTooltip {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n }\n @keyframes showTooltip {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n .required label > span::after,\n .required legend > span::after {\n content: \"*\";\n }\n}\n@layer kol-component {\n input,\n textarea {\n cursor: text;\n }\n input[type=checkbox],\n input[type=color],\n input[type=file],\n input[type=radio],\n input[type=range],\n label,\n option,\n select {\n cursor: pointer;\n }\n /* input[type='checkbox'], */\n /* input[type='radio'], */\n /* input[type='range'], */\n input[type=color],\n input[type=date],\n input[type=datetime-local],\n input[type=email],\n input[type=file],\n input[type=month],\n input[type=number],\n input[type=password],\n input[type=search],\n input[type=tel],\n input[type=text],\n input[type=time],\n input[type=url],\n input[type=week],\n option,\n select,\n textarea {\n background-color: transparent;\n width: 100%;\n }\n /* needed hack for vertical alignment */\n input[type=file] {\n padding: calc((var(--a11y-min-size) - (16rem / var(--kolibri-root-font-size, 16))) / 10) 0.5em;\n }\n /* needed hack for vertical alignment */\n select[multiple] option {\n padding: calc((var(--a11y-min-size) - (16rem / var(--kolibri-root-font-size, 16))) / 2) 0.5em;\n }\n}\n@layer kol-component {\n .kol-alert-wc {\n display: grid;\n }\n .kol-alert-wc .heading {\n display: flex;\n place-items: center;\n }\n .kol-alert-wc .heading > div {\n flex-grow: 1;\n }\n .close {\n /* Visible with forced colors */\n outline: transparent solid calc(1rem / var(--kolibri-root-font-size, 16));\n }\n}\n@layer kol-component {\n .kol-input {\n display: grid;\n }\n .kol-input .input-slot {\n flex-grow: 1;\n }\n input:focus,\n option:focus,\n select:focus,\n textarea:focus {\n outline: 0;\n }\n .input {\n background-color: white;\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n button:not([role=link]) {\n min-height: auto;\n }\n .input > .kol-icon {\n display: grid;\n place-items: center;\n }\n .kol-input.required .input-tooltip .span-label::after {\n content: \"*\";\n }\n}\n@layer kol-component {\n /**\n * Workaround for detecting focus state of the native date input's calendar icon.\n * The `:focus-visible` pseudo class does not work on the icon itself, but only on the input element.\n * By using the `content` property we can detect whether the icon is focused by inspecting the computed style in JS.\n * This should be replaced once native focus detection for the icon is available.\n */\n :host input[type=date],\n :host input[type=datetime-local],\n :host input[type=month],\n :host input[type=time],\n :host input[type=week] {\n content: \"native-icon-focused\";\n }\n :host input[type=date]:focus-visible,\n :host input[type=datetime-local]:focus-visible,\n :host input[type=month]:focus-visible,\n :host input[type=time]:focus-visible,\n :host input[type=week]:focus-visible {\n content: \"native-icon-not-focused\";\n }\n}";
8254
+ const defaultStyleCss$w = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n color: black;\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n .visually-hidden {\n position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\n }\n}\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n width: 100%; /* 100% needed for custom width from outside */\n margin: 0;\n padding: 0;\n border: none;\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n .kol-span-wc {\n display: grid;\n place-items: center;\n }\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n .kol-span-wc > span {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n /* This is the text label. */\n .hide-label > .kol-span-wc > span > span {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span-wc,\n [disabled]:focus .kol-span-wc {\n outline: none !important;\n }\n .badge-text-hint {\n color: black;\n background-color: lightgray;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip-wc {\n display: contents;\n }\n .kol-tooltip-wc .tooltip-floating {\n opacity: 0;\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width, unset);\n max-width: 90vw;\n max-height: 90vh;\n animation-direction: normal;\n /* Can be used to specify the animation duration from the outside. 250ms by default. */\n animation-duration: var(--kolibri-tooltip-animation-duration, 250ms);\n animation-fill-mode: forwards;\n animation-iteration-count: 1;\n animation-timing-function: ease-in;\n }\n .kol-tooltip-wc .tooltip-floating.hide {\n animation-name: hideTooltip;\n }\n .kol-tooltip-wc .tooltip-floating.show {\n animation-name: showTooltip;\n }\n /* Shared between content and arrow */\n .kol-tooltip-wc .tooltip-area {\n color: #000;\n background-color: #fff;\n }\n .kol-tooltip-wc .tooltip-arrow {\n transform: rotate(45deg);\n position: absolute;\n z-index: 999;\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip-wc .tooltip-content {\n position: relative;\n z-index: 1000;\n }\n @keyframes hideTooltip {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n }\n @keyframes showTooltip {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n .required label > span::after,\n .required legend > span::after {\n content: \"*\";\n }\n}\n@layer kol-component {\n input,\n textarea {\n cursor: text;\n }\n input[type=checkbox],\n input[type=color],\n input[type=file],\n input[type=radio],\n input[type=range],\n label,\n option,\n select {\n cursor: pointer;\n }\n /* input[type='checkbox'], */\n /* input[type='radio'], */\n /* input[type='range'], */\n input[type=color],\n input[type=date],\n input[type=datetime-local],\n input[type=email],\n input[type=file],\n input[type=month],\n input[type=number],\n input[type=password],\n input[type=search],\n input[type=tel],\n input[type=text],\n input[type=time],\n input[type=url],\n input[type=week],\n option,\n select,\n textarea {\n background-color: transparent;\n width: 100%;\n }\n /* needed hack for vertical alignment */\n input[type=file] {\n padding: calc((var(--a11y-min-size) - (16rem / var(--kolibri-root-font-size, 16))) / 10) 0.5em;\n }\n /* needed hack for vertical alignment */\n select[multiple] option {\n padding: calc((var(--a11y-min-size) - (16rem / var(--kolibri-root-font-size, 16))) / 2) 0.5em;\n }\n}\n@layer kol-component {\n .kol-alert-wc {\n display: grid;\n }\n .kol-alert-wc .heading {\n display: flex;\n place-items: center;\n }\n .kol-alert-wc .heading > div {\n flex-grow: 1;\n }\n .close {\n /* Visible with forced colors */\n outline: transparent solid calc(1rem / var(--kolibri-root-font-size, 16));\n }\n}\n@layer kol-component {\n .kol-input {\n display: grid;\n }\n .kol-input .input-slot {\n flex-grow: 1;\n }\n input:focus,\n option:focus,\n select:focus,\n textarea:focus {\n outline: 0;\n }\n .input {\n background-color: white;\n display: flex;\n align-items: center;\n cursor: pointer;\n }\n button:not([role=link]) {\n min-height: auto;\n }\n .input > .kol-icon {\n display: grid;\n place-items: center;\n }\n .kol-input.required .input-tooltip .span-label::after {\n content: \"*\";\n }\n}\n@layer kol-component {\n /**\n * Workaround for detecting focus state of the native date input's calendar icon.\n * The `:focus-visible` pseudo class does not work on the icon itself, but only on the input element.\n * By using the `content` property we can detect whether the icon is focused by inspecting the computed style in JS.\n * This should be replaced once native focus detection for the icon is available.\n */\n :host input[type=date],\n :host input[type=datetime-local],\n :host input[type=month],\n :host input[type=time],\n :host input[type=week] {\n content: \"native-icon-focused\";\n }\n :host input[type=date]:focus-visible,\n :host input[type=datetime-local]:focus-visible,\n :host input[type=month]:focus-visible,\n :host input[type=time]:focus-visible,\n :host input[type=week]:focus-visible {\n content: \"native-icon-not-focused\";\n }\n .input {\n cursor: text;\n }\n .input input::-webkit-calendar-picker-indicator {\n cursor: pointer;\n }\n}";
8255
8255
  var KolInputDateDefaultStyle0 = defaultStyleCss$w;
8256
8256
 
8257
8257
  class KolInputDate {
@@ -8558,495 +8558,19 @@ const validatePasswordVariant = (component, value) => {
8558
8558
  watchValidator(component, '_variant', (value) => typeof value === 'string' && PasswordVariantPropTypeOptions.includes(value), new Set(PasswordVariantPropTypeOptions), value);
8559
8559
  };
8560
8560
 
8561
- /** Detect free variable `global` from Node.js. */
8562
- var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
8563
-
8564
- var freeGlobal$1 = freeGlobal;
8565
-
8566
- /** Detect free variable `self`. */
8567
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
8568
-
8569
- /** Used as a reference to the global object. */
8570
- var root = freeGlobal$1 || freeSelf || Function('return this')();
8571
-
8572
- var root$1 = root;
8573
-
8574
- /** Built-in value references. */
8575
- var Symbol = root$1.Symbol;
8576
-
8577
- var Symbol$1 = Symbol;
8578
-
8579
- /** Used for built-in method references. */
8580
- var objectProto$1 = Object.prototype;
8581
-
8582
- /** Used to check objects for own properties. */
8583
- var hasOwnProperty = objectProto$1.hasOwnProperty;
8584
-
8585
- /**
8586
- * Used to resolve the
8587
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
8588
- * of values.
8589
- */
8590
- var nativeObjectToString$1 = objectProto$1.toString;
8591
-
8592
- /** Built-in value references. */
8593
- var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined;
8594
-
8595
- /**
8596
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
8597
- *
8598
- * @private
8599
- * @param {*} value The value to query.
8600
- * @returns {string} Returns the raw `toStringTag`.
8601
- */
8602
- function getRawTag(value) {
8603
- var isOwn = hasOwnProperty.call(value, symToStringTag$1),
8604
- tag = value[symToStringTag$1];
8605
-
8606
- try {
8607
- value[symToStringTag$1] = undefined;
8608
- var unmasked = true;
8609
- } catch (e) {}
8610
-
8611
- var result = nativeObjectToString$1.call(value);
8612
- if (unmasked) {
8613
- if (isOwn) {
8614
- value[symToStringTag$1] = tag;
8615
- } else {
8616
- delete value[symToStringTag$1];
8617
- }
8618
- }
8619
- return result;
8620
- }
8621
-
8622
- /** Used for built-in method references. */
8623
- var objectProto = Object.prototype;
8624
-
8625
- /**
8626
- * Used to resolve the
8627
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
8628
- * of values.
8629
- */
8630
- var nativeObjectToString = objectProto.toString;
8631
-
8632
- /**
8633
- * Converts `value` to a string using `Object.prototype.toString`.
8634
- *
8635
- * @private
8636
- * @param {*} value The value to convert.
8637
- * @returns {string} Returns the converted string.
8638
- */
8639
- function objectToString(value) {
8640
- return nativeObjectToString.call(value);
8641
- }
8642
-
8643
- /** `Object#toString` result references. */
8644
- var nullTag = '[object Null]',
8645
- undefinedTag = '[object Undefined]';
8646
-
8647
- /** Built-in value references. */
8648
- var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined;
8649
-
8650
- /**
8651
- * The base implementation of `getTag` without fallbacks for buggy environments.
8652
- *
8653
- * @private
8654
- * @param {*} value The value to query.
8655
- * @returns {string} Returns the `toStringTag`.
8656
- */
8657
- function baseGetTag(value) {
8658
- if (value == null) {
8659
- return value === undefined ? undefinedTag : nullTag;
8660
- }
8661
- return (symToStringTag && symToStringTag in Object(value))
8662
- ? getRawTag(value)
8663
- : objectToString(value);
8664
- }
8665
-
8666
- /**
8667
- * Checks if `value` is object-like. A value is object-like if it's not `null`
8668
- * and has a `typeof` result of "object".
8669
- *
8670
- * @static
8671
- * @memberOf _
8672
- * @since 4.0.0
8673
- * @category Lang
8674
- * @param {*} value The value to check.
8675
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
8676
- * @example
8677
- *
8678
- * _.isObjectLike({});
8679
- * // => true
8680
- *
8681
- * _.isObjectLike([1, 2, 3]);
8682
- * // => true
8683
- *
8684
- * _.isObjectLike(_.noop);
8685
- * // => false
8686
- *
8687
- * _.isObjectLike(null);
8688
- * // => false
8689
- */
8690
- function isObjectLike(value) {
8691
- return value != null && typeof value == 'object';
8692
- }
8693
-
8694
- /** `Object#toString` result references. */
8695
- var symbolTag = '[object Symbol]';
8696
-
8697
- /**
8698
- * Checks if `value` is classified as a `Symbol` primitive or object.
8699
- *
8700
- * @static
8701
- * @memberOf _
8702
- * @since 4.0.0
8703
- * @category Lang
8704
- * @param {*} value The value to check.
8705
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
8706
- * @example
8707
- *
8708
- * _.isSymbol(Symbol.iterator);
8709
- * // => true
8710
- *
8711
- * _.isSymbol('abc');
8712
- * // => false
8713
- */
8714
- function isSymbol(value) {
8715
- return typeof value == 'symbol' ||
8716
- (isObjectLike(value) && baseGetTag(value) == symbolTag);
8717
- }
8718
-
8719
- /** Used to match a single whitespace character. */
8720
- var reWhitespace = /\s/;
8721
-
8722
- /**
8723
- * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
8724
- * character of `string`.
8725
- *
8726
- * @private
8727
- * @param {string} string The string to inspect.
8728
- * @returns {number} Returns the index of the last non-whitespace character.
8729
- */
8730
- function trimmedEndIndex(string) {
8731
- var index = string.length;
8732
-
8733
- while (index-- && reWhitespace.test(string.charAt(index))) {}
8734
- return index;
8735
- }
8736
-
8737
- /** Used to match leading whitespace. */
8738
- var reTrimStart = /^\s+/;
8739
-
8740
- /**
8741
- * The base implementation of `_.trim`.
8742
- *
8743
- * @private
8744
- * @param {string} string The string to trim.
8745
- * @returns {string} Returns the trimmed string.
8746
- */
8747
- function baseTrim(string) {
8748
- return string
8749
- ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
8750
- : string;
8751
- }
8752
-
8753
- /**
8754
- * Checks if `value` is the
8755
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
8756
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
8757
- *
8758
- * @static
8759
- * @memberOf _
8760
- * @since 0.1.0
8761
- * @category Lang
8762
- * @param {*} value The value to check.
8763
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
8764
- * @example
8765
- *
8766
- * _.isObject({});
8767
- * // => true
8768
- *
8769
- * _.isObject([1, 2, 3]);
8770
- * // => true
8771
- *
8772
- * _.isObject(_.noop);
8773
- * // => true
8774
- *
8775
- * _.isObject(null);
8776
- * // => false
8777
- */
8778
- function isObject$1(value) {
8779
- var type = typeof value;
8780
- return value != null && (type == 'object' || type == 'function');
8781
- }
8782
-
8783
- /** Used as references for various `Number` constants. */
8784
- var NAN = 0 / 0;
8785
-
8786
- /** Used to detect bad signed hexadecimal string values. */
8787
- var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
8788
-
8789
- /** Used to detect binary string values. */
8790
- var reIsBinary = /^0b[01]+$/i;
8791
-
8792
- /** Used to detect octal string values. */
8793
- var reIsOctal = /^0o[0-7]+$/i;
8794
-
8795
- /** Built-in method references without a dependency on `root`. */
8796
- var freeParseInt = parseInt;
8797
-
8798
- /**
8799
- * Converts `value` to a number.
8800
- *
8801
- * @static
8802
- * @memberOf _
8803
- * @since 4.0.0
8804
- * @category Lang
8805
- * @param {*} value The value to process.
8806
- * @returns {number} Returns the number.
8807
- * @example
8808
- *
8809
- * _.toNumber(3.2);
8810
- * // => 3.2
8811
- *
8812
- * _.toNumber(Number.MIN_VALUE);
8813
- * // => 5e-324
8814
- *
8815
- * _.toNumber(Infinity);
8816
- * // => Infinity
8817
- *
8818
- * _.toNumber('3.2');
8819
- * // => 3.2
8820
- */
8821
- function toNumber(value) {
8822
- if (typeof value == 'number') {
8823
- return value;
8824
- }
8825
- if (isSymbol(value)) {
8826
- return NAN;
8827
- }
8828
- if (isObject$1(value)) {
8829
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
8830
- value = isObject$1(other) ? (other + '') : other;
8831
- }
8832
- if (typeof value != 'string') {
8833
- return value === 0 ? value : +value;
8834
- }
8835
- value = baseTrim(value);
8836
- var isBinary = reIsBinary.test(value);
8837
- return (isBinary || reIsOctal.test(value))
8838
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
8839
- : (reIsBadHex.test(value) ? NAN : +value);
8840
- }
8841
-
8842
- /**
8843
- * Gets the timestamp of the number of milliseconds that have elapsed since
8844
- * the Unix epoch (1 January 1970 00:00:00 UTC).
8845
- *
8846
- * @static
8847
- * @memberOf _
8848
- * @since 2.4.0
8849
- * @category Date
8850
- * @returns {number} Returns the timestamp.
8851
- * @example
8852
- *
8853
- * _.defer(function(stamp) {
8854
- * console.log(_.now() - stamp);
8855
- * }, _.now());
8856
- * // => Logs the number of milliseconds it took for the deferred invocation.
8857
- */
8858
- var now = function() {
8859
- return root$1.Date.now();
8561
+ const debounce = (callback, wait = 0) => {
8562
+ let timeoutId;
8563
+ return (...args) => {
8564
+ if (timeoutId) {
8565
+ clearTimeout(timeoutId);
8566
+ }
8567
+ timeoutId = setTimeout(() => {
8568
+ timeoutId = undefined;
8569
+ callback(...args);
8570
+ }, wait);
8571
+ };
8860
8572
  };
8861
8573
 
8862
- var now$1 = now;
8863
-
8864
- /** Error message constants. */
8865
- var FUNC_ERROR_TEXT = 'Expected a function';
8866
-
8867
- /* Built-in method references for those with the same name as other `lodash` methods. */
8868
- var nativeMax = Math.max,
8869
- nativeMin = Math.min;
8870
-
8871
- /**
8872
- * Creates a debounced function that delays invoking `func` until after `wait`
8873
- * milliseconds have elapsed since the last time the debounced function was
8874
- * invoked. The debounced function comes with a `cancel` method to cancel
8875
- * delayed `func` invocations and a `flush` method to immediately invoke them.
8876
- * Provide `options` to indicate whether `func` should be invoked on the
8877
- * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
8878
- * with the last arguments provided to the debounced function. Subsequent
8879
- * calls to the debounced function return the result of the last `func`
8880
- * invocation.
8881
- *
8882
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
8883
- * invoked on the trailing edge of the timeout only if the debounced function
8884
- * is invoked more than once during the `wait` timeout.
8885
- *
8886
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
8887
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
8888
- *
8889
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
8890
- * for details over the differences between `_.debounce` and `_.throttle`.
8891
- *
8892
- * @static
8893
- * @memberOf _
8894
- * @since 0.1.0
8895
- * @category Function
8896
- * @param {Function} func The function to debounce.
8897
- * @param {number} [wait=0] The number of milliseconds to delay.
8898
- * @param {Object} [options={}] The options object.
8899
- * @param {boolean} [options.leading=false]
8900
- * Specify invoking on the leading edge of the timeout.
8901
- * @param {number} [options.maxWait]
8902
- * The maximum time `func` is allowed to be delayed before it's invoked.
8903
- * @param {boolean} [options.trailing=true]
8904
- * Specify invoking on the trailing edge of the timeout.
8905
- * @returns {Function} Returns the new debounced function.
8906
- * @example
8907
- *
8908
- * // Avoid costly calculations while the window size is in flux.
8909
- * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
8910
- *
8911
- * // Invoke `sendMail` when clicked, debouncing subsequent calls.
8912
- * jQuery(element).on('click', _.debounce(sendMail, 300, {
8913
- * 'leading': true,
8914
- * 'trailing': false
8915
- * }));
8916
- *
8917
- * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
8918
- * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
8919
- * var source = new EventSource('/stream');
8920
- * jQuery(source).on('message', debounced);
8921
- *
8922
- * // Cancel the trailing debounced invocation.
8923
- * jQuery(window).on('popstate', debounced.cancel);
8924
- */
8925
- function debounce(func, wait, options) {
8926
- var lastArgs,
8927
- lastThis,
8928
- maxWait,
8929
- result,
8930
- timerId,
8931
- lastCallTime,
8932
- lastInvokeTime = 0,
8933
- leading = false,
8934
- maxing = false,
8935
- trailing = true;
8936
-
8937
- if (typeof func != 'function') {
8938
- throw new TypeError(FUNC_ERROR_TEXT);
8939
- }
8940
- wait = toNumber(wait) || 0;
8941
- if (isObject$1(options)) {
8942
- leading = !!options.leading;
8943
- maxing = 'maxWait' in options;
8944
- maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
8945
- trailing = 'trailing' in options ? !!options.trailing : trailing;
8946
- }
8947
-
8948
- function invokeFunc(time) {
8949
- var args = lastArgs,
8950
- thisArg = lastThis;
8951
-
8952
- lastArgs = lastThis = undefined;
8953
- lastInvokeTime = time;
8954
- result = func.apply(thisArg, args);
8955
- return result;
8956
- }
8957
-
8958
- function leadingEdge(time) {
8959
- // Reset any `maxWait` timer.
8960
- lastInvokeTime = time;
8961
- // Start the timer for the trailing edge.
8962
- timerId = setTimeout(timerExpired, wait);
8963
- // Invoke the leading edge.
8964
- return leading ? invokeFunc(time) : result;
8965
- }
8966
-
8967
- function remainingWait(time) {
8968
- var timeSinceLastCall = time - lastCallTime,
8969
- timeSinceLastInvoke = time - lastInvokeTime,
8970
- timeWaiting = wait - timeSinceLastCall;
8971
-
8972
- return maxing
8973
- ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
8974
- : timeWaiting;
8975
- }
8976
-
8977
- function shouldInvoke(time) {
8978
- var timeSinceLastCall = time - lastCallTime,
8979
- timeSinceLastInvoke = time - lastInvokeTime;
8980
-
8981
- // Either this is the first call, activity has stopped and we're at the
8982
- // trailing edge, the system time has gone backwards and we're treating
8983
- // it as the trailing edge, or we've hit the `maxWait` limit.
8984
- return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
8985
- (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
8986
- }
8987
-
8988
- function timerExpired() {
8989
- var time = now$1();
8990
- if (shouldInvoke(time)) {
8991
- return trailingEdge(time);
8992
- }
8993
- // Restart the timer.
8994
- timerId = setTimeout(timerExpired, remainingWait(time));
8995
- }
8996
-
8997
- function trailingEdge(time) {
8998
- timerId = undefined;
8999
-
9000
- // Only invoke if we have `lastArgs` which means `func` has been
9001
- // debounced at least once.
9002
- if (trailing && lastArgs) {
9003
- return invokeFunc(time);
9004
- }
9005
- lastArgs = lastThis = undefined;
9006
- return result;
9007
- }
9008
-
9009
- function cancel() {
9010
- if (timerId !== undefined) {
9011
- clearTimeout(timerId);
9012
- }
9013
- lastInvokeTime = 0;
9014
- lastArgs = lastCallTime = lastThis = timerId = undefined;
9015
- }
9016
-
9017
- function flush() {
9018
- return timerId === undefined ? result : trailingEdge(now$1());
9019
- }
9020
-
9021
- function debounced() {
9022
- var time = now$1(),
9023
- isInvoking = shouldInvoke(time);
9024
-
9025
- lastArgs = arguments;
9026
- lastThis = this;
9027
- lastCallTime = time;
9028
-
9029
- if (isInvoking) {
9030
- if (timerId === undefined) {
9031
- return leadingEdge(lastCallTime);
9032
- }
9033
- if (maxing) {
9034
- // Handle invocations in a tight loop.
9035
- clearTimeout(timerId);
9036
- timerId = setTimeout(timerExpired, wait);
9037
- return invokeFunc(lastCallTime);
9038
- }
9039
- }
9040
- if (timerId === undefined) {
9041
- timerId = setTimeout(timerExpired, wait);
9042
- }
9043
- return result;
9044
- }
9045
- debounced.cancel = cancel;
9046
- debounced.flush = flush;
9047
- return debounced;
9048
- }
9049
-
9050
8574
  class InputPasswordController extends InputIconController {
9051
8575
  constructor(component, name, host) {
9052
8576
  super(component, name, host);
@@ -12874,6 +12398,71 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
12874
12398
  return coords;
12875
12399
  }
12876
12400
 
12401
+ /**
12402
+ * Resolves with an object of overflow side offsets that determine how much the
12403
+ * element is overflowing a given clipping boundary on each side.
12404
+ * - positive = overflowing the boundary by that number of pixels
12405
+ * - negative = how many pixels left before it will overflow
12406
+ * - 0 = lies flush with the boundary
12407
+ * @see https://floating-ui.com/docs/detectOverflow
12408
+ */
12409
+ async function detectOverflow(state, options) {
12410
+ var _await$platform$isEle;
12411
+ if (options === void 0) {
12412
+ options = {};
12413
+ }
12414
+ const {
12415
+ x,
12416
+ y,
12417
+ platform,
12418
+ rects,
12419
+ elements,
12420
+ strategy
12421
+ } = state;
12422
+ const {
12423
+ boundary = 'clippingAncestors',
12424
+ rootBoundary = 'viewport',
12425
+ elementContext = 'floating',
12426
+ altBoundary = false,
12427
+ padding = 0
12428
+ } = evaluate(options, state);
12429
+ const paddingObject = getPaddingObject(padding);
12430
+ const altContext = elementContext === 'floating' ? 'reference' : 'floating';
12431
+ const element = elements[altBoundary ? altContext : elementContext];
12432
+ const clippingClientRect = rectToClientRect(await platform.getClippingRect({
12433
+ element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
12434
+ boundary,
12435
+ rootBoundary,
12436
+ strategy
12437
+ }));
12438
+ const rect = elementContext === 'floating' ? {
12439
+ x,
12440
+ y,
12441
+ width: rects.floating.width,
12442
+ height: rects.floating.height
12443
+ } : rects.reference;
12444
+ const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
12445
+ const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
12446
+ x: 1,
12447
+ y: 1
12448
+ } : {
12449
+ x: 1,
12450
+ y: 1
12451
+ };
12452
+ const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
12453
+ elements,
12454
+ rect,
12455
+ offsetParent,
12456
+ strategy
12457
+ }) : rect);
12458
+ return {
12459
+ top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
12460
+ bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
12461
+ left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
12462
+ right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
12463
+ };
12464
+ }
12465
+
12877
12466
  /**
12878
12467
  * Computes the `x` and `y` coordinates that will place the floating element
12879
12468
  * next to a given reference element.
@@ -12903,6 +12492,7 @@ const computePosition$1 = async (reference, floating, config) => {
12903
12492
  let middlewareData = {};
12904
12493
  let resetCount = 0;
12905
12494
  for (let i = 0; i < validMiddleware.length; i++) {
12495
+ var _platform$detectOverf;
12906
12496
  const {
12907
12497
  name,
12908
12498
  fn
@@ -12920,7 +12510,10 @@ const computePosition$1 = async (reference, floating, config) => {
12920
12510
  strategy,
12921
12511
  middlewareData,
12922
12512
  rects,
12923
- platform,
12513
+ platform: {
12514
+ ...platform,
12515
+ detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow
12516
+ },
12924
12517
  elements: {
12925
12518
  reference,
12926
12519
  floating
@@ -12965,71 +12558,6 @@ const computePosition$1 = async (reference, floating, config) => {
12965
12558
  };
12966
12559
  };
12967
12560
 
12968
- /**
12969
- * Resolves with an object of overflow side offsets that determine how much the
12970
- * element is overflowing a given clipping boundary on each side.
12971
- * - positive = overflowing the boundary by that number of pixels
12972
- * - negative = how many pixels left before it will overflow
12973
- * - 0 = lies flush with the boundary
12974
- * @see https://floating-ui.com/docs/detectOverflow
12975
- */
12976
- async function detectOverflow(state, options) {
12977
- var _await$platform$isEle;
12978
- if (options === void 0) {
12979
- options = {};
12980
- }
12981
- const {
12982
- x,
12983
- y,
12984
- platform,
12985
- rects,
12986
- elements,
12987
- strategy
12988
- } = state;
12989
- const {
12990
- boundary = 'clippingAncestors',
12991
- rootBoundary = 'viewport',
12992
- elementContext = 'floating',
12993
- altBoundary = false,
12994
- padding = 0
12995
- } = evaluate(options, state);
12996
- const paddingObject = getPaddingObject(padding);
12997
- const altContext = elementContext === 'floating' ? 'reference' : 'floating';
12998
- const element = elements[altBoundary ? altContext : elementContext];
12999
- const clippingClientRect = rectToClientRect(await platform.getClippingRect({
13000
- element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),
13001
- boundary,
13002
- rootBoundary,
13003
- strategy
13004
- }));
13005
- const rect = elementContext === 'floating' ? {
13006
- x,
13007
- y,
13008
- width: rects.floating.width,
13009
- height: rects.floating.height
13010
- } : rects.reference;
13011
- const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
13012
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
13013
- x: 1,
13014
- y: 1
13015
- } : {
13016
- x: 1,
13017
- y: 1
13018
- };
13019
- const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
13020
- elements,
13021
- rect,
13022
- offsetParent,
13023
- strategy
13024
- }) : rect);
13025
- return {
13026
- top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
13027
- bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
13028
- left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
13029
- right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
13030
- };
13031
- }
13032
-
13033
12561
  /**
13034
12562
  * Provides data to position an inner element of the floating element so that it
13035
12563
  * appears centered to the reference element.
@@ -13151,7 +12679,7 @@ const autoPlacement = function (options) {
13151
12679
  ...detectOverflowOptions
13152
12680
  } = evaluate(options, state);
13153
12681
  const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
13154
- const overflow = await detectOverflow(state, detectOverflowOptions);
12682
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
13155
12683
  const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
13156
12684
  const currentPlacement = placements$1[currentIndex];
13157
12685
  if (currentPlacement == null) {
@@ -13265,7 +12793,7 @@ const flip$1 = function (options) {
13265
12793
  fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
13266
12794
  }
13267
12795
  const placements = [initialPlacement, ...fallbackPlacements];
13268
- const overflow = await detectOverflow(state, detectOverflowOptions);
12796
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
13269
12797
  const overflows = [];
13270
12798
  let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
13271
12799
  if (checkMainAxis) {
@@ -13372,7 +12900,8 @@ const hide = function (options) {
13372
12900
  options,
13373
12901
  async fn(state) {
13374
12902
  const {
13375
- rects
12903
+ rects,
12904
+ platform
13376
12905
  } = state;
13377
12906
  const {
13378
12907
  strategy = 'referenceHidden',
@@ -13381,7 +12910,7 @@ const hide = function (options) {
13381
12910
  switch (strategy) {
13382
12911
  case 'referenceHidden':
13383
12912
  {
13384
- const overflow = await detectOverflow(state, {
12913
+ const overflow = await platform.detectOverflow(state, {
13385
12914
  ...detectOverflowOptions,
13386
12915
  elementContext: 'reference'
13387
12916
  });
@@ -13395,7 +12924,7 @@ const hide = function (options) {
13395
12924
  }
13396
12925
  case 'escaped':
13397
12926
  {
13398
- const overflow = await detectOverflow(state, {
12927
+ const overflow = await platform.detectOverflow(state, {
13399
12928
  ...detectOverflowOptions,
13400
12929
  altBoundary: true
13401
12930
  });
@@ -13649,7 +13178,8 @@ const shift$1 = function (options) {
13649
13178
  const {
13650
13179
  x,
13651
13180
  y,
13652
- placement
13181
+ placement,
13182
+ platform
13653
13183
  } = state;
13654
13184
  const {
13655
13185
  mainAxis: checkMainAxis = true,
@@ -13672,7 +13202,7 @@ const shift$1 = function (options) {
13672
13202
  x,
13673
13203
  y
13674
13204
  };
13675
- const overflow = await detectOverflow(state, detectOverflowOptions);
13205
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
13676
13206
  const crossAxis = getSideAxis(getSide(placement));
13677
13207
  const mainAxis = getOppositeAxis(crossAxis);
13678
13208
  let mainAxisCoord = coords[mainAxis];
@@ -13804,7 +13334,7 @@ const size = function (options) {
13804
13334
  apply = () => {},
13805
13335
  ...detectOverflowOptions
13806
13336
  } = evaluate(options, state);
13807
- const overflow = await detectOverflow(state, detectOverflowOptions);
13337
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
13808
13338
  const side = getSide(placement);
13809
13339
  const alignment = getAlignment(placement);
13810
13340
  const isYAxis = getSideAxis(placement) === 'y';
@@ -26070,6 +25600,7 @@ class KolTabs {
26070
25600
  div.setAttribute('id', `tabpanel-${i}`);
26071
25601
  div.setAttribute('role', 'tabpanel');
26072
25602
  div.setAttribute('hidden', '');
25603
+ div.setAttribute('tabindex', '0');
26073
25604
  const slot = document.createElement('slot');
26074
25605
  slot.setAttribute('name', `tabpanel-slot-${i}`);
26075
25606
  div.appendChild(slot);
@@ -26893,13 +26424,19 @@ class KolTooltipWc {
26893
26424
  this.hideTooltip();
26894
26425
  }
26895
26426
  };
26896
- this.handleMouseEnter = () => {
26427
+ this.isInsideTriggerOrTooltip = (node) => {
26428
+ var _a, _b;
26429
+ return Boolean(node && (((_a = this.previousSibling) === null || _a === void 0 ? void 0 : _a.contains(node)) || ((_b = this.tooltipElement) === null || _b === void 0 ? void 0 : _b.contains(node))));
26430
+ };
26431
+ this.handleMouseOver = (event) => {
26432
+ if (this.isInsideTriggerOrTooltip(event.relatedTarget)) {
26433
+ return;
26434
+ }
26897
26435
  this.hasMouseIn = true;
26898
26436
  this.showOrHideTooltip();
26899
26437
  };
26900
- this.handleMouseleave = (event) => {
26901
- var _a, _b;
26902
- this.hasMouseIn = (_b = (_a = this.tooltipElement) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget)) !== null && _b !== void 0 ? _b : false;
26438
+ this.handleMouseOut = (event) => {
26439
+ this.hasMouseIn = this.isInsideTriggerOrTooltip(event.relatedTarget);
26903
26440
  this.showOrHideTooltip();
26904
26441
  };
26905
26442
  this.handleFocusIn = () => {
@@ -26911,14 +26448,14 @@ class KolTooltipWc {
26911
26448
  this.showOrHideTooltip();
26912
26449
  };
26913
26450
  this.addListeners = (el) => {
26914
- el.addEventListener('mouseenter', this.handleMouseEnter);
26915
- el.addEventListener('mouseleave', this.handleMouseleave);
26451
+ el.addEventListener('mouseover', this.handleMouseOver);
26452
+ el.addEventListener('mouseout', this.handleMouseOut);
26916
26453
  el.addEventListener('focusin', this.handleFocusIn);
26917
26454
  el.addEventListener('focusout', this.handleFocusout);
26918
26455
  };
26919
26456
  this.removeListeners = (el) => {
26920
- el.removeEventListener('mouseenter', this.handleMouseEnter);
26921
- el.removeEventListener('mouseleave', this.handleMouseleave);
26457
+ el.removeEventListener('mouseover', this.handleMouseOver);
26458
+ el.removeEventListener('mouseout', this.handleMouseOut);
26922
26459
  el.removeEventListener('focusin', this.handleFocusIn);
26923
26460
  el.removeEventListener('focusout', this.handleFocusout);
26924
26461
  };
@@ -26970,7 +26507,7 @@ class KolTooltipWc {
26970
26507
  }
26971
26508
  }
26972
26509
  render() {
26973
- return (hAsync(Host, { key: '9e4d556350fe633cbc4698acdab9af4137260144', class: "kol-tooltip-wc" }, this.state._label !== '' && (hAsync("div", { key: '80400a2fbb5da8e5e9318466fbdf1f63eb290320', class: "tooltip-floating", ref: this.catchTooltipElement }, hAsync("div", { key: '4c817d25203a649f778fa98c5c97e27a5259ad4f', class: "tooltip-area tooltip-arrow", ref: this.catchArrowElement }), hAsync(KolSpanWcTag, { key: '97dc74f5efc3841c338efe4ca61f9de9094195a3', class: "tooltip-area tooltip-content", id: this.state._id, _badgeText: this._badgeText, _label: this.state._label })))));
26510
+ return (hAsync(Host, { key: 'd4278e8c9307b1093a6f8e4d109c5b2b6cb1c769', class: "kol-tooltip-wc" }, this.state._label !== '' && (hAsync("div", { key: 'dc5aaea839ff71909abd425d128c87579d9c0c0d', class: "tooltip-floating", ref: this.catchTooltipElement }, hAsync("div", { key: '67317c8f02cd38102546f81ba057d6bf2d3e950e', class: "tooltip-area tooltip-arrow", ref: this.catchArrowElement }), hAsync(KolSpanWcTag, { key: 'db9627e640effd99584da3943c786ba0039f481f', class: "tooltip-area tooltip-content", id: this.state._id, _badgeText: this._badgeText, _label: this.state._label })))));
26974
26511
  }
26975
26512
  validateBadgeText(value) {
26976
26513
  validateBadgeText(this, value);