@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.js CHANGED
@@ -3839,7 +3839,7 @@ const validateAlignment = (component, propName, value) => {
3839
3839
  });
3840
3840
  };
3841
3841
 
3842
- const isObject$2 = (value) => typeof value === 'object' && value !== null;
3842
+ const isObject$1 = (value) => typeof value === 'object' && value !== null;
3843
3843
  const isString$2 = (value, minLength = 0) => typeof value === 'string' && value.length >= minLength;
3844
3844
  const isStyle = (style) => {
3845
3845
  if (typeof style === 'object' && style !== null) {
@@ -3892,7 +3892,7 @@ const validateTabIndex = (component, value) => {
3892
3892
  };
3893
3893
 
3894
3894
  const validateAccordionCallbacks = (component, value) => {
3895
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['AccordionCallbacksPropType {Events.onClick}']), value);
3895
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['AccordionCallbacksPropType {Events.onClick}']), value);
3896
3896
  };
3897
3897
 
3898
3898
  const validateActive = (component, value, options) => {
@@ -3953,7 +3953,7 @@ const validateBadgeText = (component, value) => {
3953
3953
  };
3954
3954
 
3955
3955
  const validateButtonCallbacks = (component, value) => {
3956
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['ButtonCallbacksPropType {Events.onClick, Events.onMouseDown}']), value);
3956
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['ButtonCallbacksPropType {Events.onClick, Events.onMouseDown}']), value);
3957
3957
  };
3958
3958
 
3959
3959
  const buttonTypePropTypeOptions = ['button', 'reset', 'submit'];
@@ -4081,7 +4081,7 @@ const validateCustomClass = (component, value) => {
4081
4081
  };
4082
4082
 
4083
4083
  const validateDetailsCallbacks = (component, value) => {
4084
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['DetailsCallbacksPropType {Events.onToggle}']), value);
4084
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['DetailsCallbacksPropType {Events.onToggle}']), value);
4085
4085
  };
4086
4086
 
4087
4087
  const validateDisabled = (component, value) => {
@@ -4138,7 +4138,7 @@ const validateHref = (component, value, options = {}) => {
4138
4138
  };
4139
4139
 
4140
4140
  const mapCustomIcon = (state, alignment, icon) => {
4141
- if (isObject$2(icon)) {
4141
+ if (isObject$1(icon)) {
4142
4142
  state[alignment] = icon;
4143
4143
  }
4144
4144
  else if (isString$2(icon, 1)) {
@@ -4156,7 +4156,7 @@ const mapIconProp2State = (icon) => {
4156
4156
  },
4157
4157
  };
4158
4158
  }
4159
- else if (isObject$2(icon)) {
4159
+ else if (isObject$1(icon)) {
4160
4160
  const icons = icon;
4161
4161
  mapCustomIcon(state, 'top', icons.top);
4162
4162
  mapCustomIcon(state, 'right', icons.right);
@@ -4172,7 +4172,7 @@ const beforePatchIcon = (component) => {
4172
4172
  (_c = component.nextState) === null || _c === void 0 ? void 0 : _c.set('_icons', mapIconProp2State(icons));
4173
4173
  }
4174
4174
  };
4175
- const isIcon = (value) => isObject$2(value) &&
4175
+ const isIcon = (value) => isObject$1(value) &&
4176
4176
  (typeof value.style === 'undefined' || isStyle(value.style)) &&
4177
4177
  (typeof value.label === 'undefined' || isString$2(value.label)) &&
4178
4178
  isString$2(value.icon, 1);
@@ -4185,11 +4185,11 @@ const validateIcons = (component, value, options = {}) => {
4185
4185
  catch (e) {
4186
4186
  }
4187
4187
  watchValidator(component, '_icons', (value) => {
4188
- const valueIsEmptyObject = isObject$2(value) && Object.keys(value).length === 0;
4188
+ const valueIsEmptyObject = isObject$1(value) && Object.keys(value).length === 0;
4189
4189
  return (value === null ||
4190
4190
  valueIsEmptyObject ||
4191
4191
  isString$2(value, 1) ||
4192
- (isObject$2(value) &&
4192
+ (isObject$1(value) &&
4193
4193
  (isString$2(value.left, 1) ||
4194
4194
  isIcon(value.left) ||
4195
4195
  isString$2(value.right, 1) ||
@@ -4291,7 +4291,7 @@ const validateMsg = (component, value) => {
4291
4291
  }
4292
4292
  catch (e) {
4293
4293
  }
4294
- watchValidator(component, `_msg`, (value) => isObject$2(value) && typeof (value === null || value === void 0 ? void 0 : value._description) === 'string', new Set(['MsgPropType']), value, {
4294
+ watchValidator(component, `_msg`, (value) => isObject$1(value) && typeof (value === null || value === void 0 ? void 0 : value._description) === 'string', new Set(['MsgPropType']), value, {
4295
4295
  defaultValue: {
4296
4296
  _description: '',
4297
4297
  _type: 'error',
@@ -4313,7 +4313,7 @@ const validateOpen = (component, value, options) => {
4313
4313
  };
4314
4314
 
4315
4315
  const validateOptions = (component, value, options = {}) => {
4316
- watchJsonArrayString(component, '_options', (item) => isObject$2(item) && typeof item.label === 'string' && item.label.length > 0, value, undefined, options);
4316
+ watchJsonArrayString(component, '_options', (item) => isObject$1(item) && typeof item.label === 'string' && item.label.length > 0, value, undefined, options);
4317
4317
  };
4318
4318
  const validateOptionsWithOptgroup = (component, value, options = {}) => {
4319
4319
  watchJsonArrayString(component, '_options', validateInputSelectOptions, value, undefined, options);
@@ -4331,7 +4331,7 @@ const validatePopoverAlign = (component, value) => {
4331
4331
  };
4332
4332
 
4333
4333
  const validatePopoverCallbacks = (component, value) => {
4334
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['PopoverCallbacksPropType {Events.onClose}']), value);
4334
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['PopoverCallbacksPropType {Events.onClose}']), value);
4335
4335
  };
4336
4336
 
4337
4337
  const validateReadOnly = (component, value) => {
@@ -4378,10 +4378,10 @@ const validateTabBehavior = (component, value) => {
4378
4378
  };
4379
4379
 
4380
4380
  const validateTableCallbacks = (component, value) => {
4381
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['TableCallbacksPropType {Events.onSort, Events.onSelectionChange}']), value);
4381
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['TableCallbacksPropType {Events.onSort, Events.onSelectionChange}']), value);
4382
4382
  };
4383
4383
  const validateTableStatefulCallbacks = (component, value) => {
4384
- watchValidator(component, `_on`, (value) => isObject$2(value), new Set(['TableStatefulCallbacksPropType {Events.onSelectionChange}']), value);
4384
+ watchValidator(component, `_on`, (value) => isObject$1(value), new Set(['TableStatefulCallbacksPropType {Events.onSelectionChange}']), value);
4385
4385
  };
4386
4386
 
4387
4387
  const validateTableData = (component, value, setStateHooks) => {
@@ -4395,7 +4395,7 @@ const validateTableData = (component, value, setStateHooks) => {
4395
4395
  }
4396
4396
  catch (e) {
4397
4397
  }
4398
- if (Array.isArray(value) && value.every((data) => isObject$2(data))) {
4398
+ if (Array.isArray(value) && value.every((data) => isObject$1(data))) {
4399
4399
  setState(component, '_data', value, setStateHooks);
4400
4400
  }
4401
4401
  });
@@ -4413,7 +4413,7 @@ const validateTableDataFoot = (component, value, setStateHooks) => {
4413
4413
  }
4414
4414
  catch (e) {
4415
4415
  }
4416
- if (Array.isArray(value) && value.every((data) => isObject$2(data))) {
4416
+ if (Array.isArray(value) && value.every((data) => isObject$1(data))) {
4417
4417
  setState(component, '_dataFoot', value, setStateHooks);
4418
4418
  }
4419
4419
  });
@@ -4448,7 +4448,7 @@ const validateTableSelection = (component, value) => {
4448
4448
  }
4449
4449
  };
4450
4450
  const validateObject = (value) => {
4451
- return value && isObject$2(value) && typeof value.label === 'function' && (!value.selectedKeys || Array.isArray(value.selectedKeys));
4451
+ return value && isObject$1(value) && typeof value.label === 'function' && (!value.selectedKeys || Array.isArray(value.selectedKeys));
4452
4452
  };
4453
4453
  const objectValue = typeof value === 'string' ? parseSerializedValue() : value;
4454
4454
  if (validateObject(objectValue)) {
@@ -4467,7 +4467,7 @@ const validateToolbarItems = (component, value) => {
4467
4467
  }
4468
4468
  catch (e) {
4469
4469
  }
4470
- if (Array.isArray(value) && value.every((items) => isObject$2(items))) {
4470
+ if (Array.isArray(value) && value.every((items) => isObject$1(items))) {
4471
4471
  setState(component, '_items', value);
4472
4472
  }
4473
4473
  });
@@ -8255,7 +8255,7 @@ InputDateController.isoTimeRegex = /^[0-2]\d:[0-5]\d(:[0-5]\d(?:\.\d+)?)?/;
8255
8255
  InputDateController.isoWeekRegex = /^\d{4}-W(?:[0-4]\d|5[0-3])$/;
8256
8256
  InputDateController.DEFAULT_MAX_DATE = new Date(9999, 11, 31, 23, 59, 59);
8257
8257
 
8258
- 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}";
8258
+ 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}";
8259
8259
  var KolInputDateDefaultStyle0 = defaultStyleCss$w;
8260
8260
 
8261
8261
  class KolInputDate {
@@ -8562,495 +8562,19 @@ const validatePasswordVariant = (component, value) => {
8562
8562
  watchValidator(component, '_variant', (value) => typeof value === 'string' && PasswordVariantPropTypeOptions.includes(value), new Set(PasswordVariantPropTypeOptions), value);
8563
8563
  };
8564
8564
 
8565
- /** Detect free variable `global` from Node.js. */
8566
- var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
8567
-
8568
- var freeGlobal$1 = freeGlobal;
8569
-
8570
- /** Detect free variable `self`. */
8571
- var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
8572
-
8573
- /** Used as a reference to the global object. */
8574
- var root = freeGlobal$1 || freeSelf || Function('return this')();
8575
-
8576
- var root$1 = root;
8577
-
8578
- /** Built-in value references. */
8579
- var Symbol = root$1.Symbol;
8580
-
8581
- var Symbol$1 = Symbol;
8582
-
8583
- /** Used for built-in method references. */
8584
- var objectProto$1 = Object.prototype;
8585
-
8586
- /** Used to check objects for own properties. */
8587
- var hasOwnProperty = objectProto$1.hasOwnProperty;
8588
-
8589
- /**
8590
- * Used to resolve the
8591
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
8592
- * of values.
8593
- */
8594
- var nativeObjectToString$1 = objectProto$1.toString;
8595
-
8596
- /** Built-in value references. */
8597
- var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : undefined;
8598
-
8599
- /**
8600
- * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
8601
- *
8602
- * @private
8603
- * @param {*} value The value to query.
8604
- * @returns {string} Returns the raw `toStringTag`.
8605
- */
8606
- function getRawTag(value) {
8607
- var isOwn = hasOwnProperty.call(value, symToStringTag$1),
8608
- tag = value[symToStringTag$1];
8609
-
8610
- try {
8611
- value[symToStringTag$1] = undefined;
8612
- var unmasked = true;
8613
- } catch (e) {}
8614
-
8615
- var result = nativeObjectToString$1.call(value);
8616
- if (unmasked) {
8617
- if (isOwn) {
8618
- value[symToStringTag$1] = tag;
8619
- } else {
8620
- delete value[symToStringTag$1];
8621
- }
8622
- }
8623
- return result;
8624
- }
8625
-
8626
- /** Used for built-in method references. */
8627
- var objectProto = Object.prototype;
8628
-
8629
- /**
8630
- * Used to resolve the
8631
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
8632
- * of values.
8633
- */
8634
- var nativeObjectToString = objectProto.toString;
8635
-
8636
- /**
8637
- * Converts `value` to a string using `Object.prototype.toString`.
8638
- *
8639
- * @private
8640
- * @param {*} value The value to convert.
8641
- * @returns {string} Returns the converted string.
8642
- */
8643
- function objectToString(value) {
8644
- return nativeObjectToString.call(value);
8645
- }
8646
-
8647
- /** `Object#toString` result references. */
8648
- var nullTag = '[object Null]',
8649
- undefinedTag = '[object Undefined]';
8650
-
8651
- /** Built-in value references. */
8652
- var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : undefined;
8653
-
8654
- /**
8655
- * The base implementation of `getTag` without fallbacks for buggy environments.
8656
- *
8657
- * @private
8658
- * @param {*} value The value to query.
8659
- * @returns {string} Returns the `toStringTag`.
8660
- */
8661
- function baseGetTag(value) {
8662
- if (value == null) {
8663
- return value === undefined ? undefinedTag : nullTag;
8664
- }
8665
- return (symToStringTag && symToStringTag in Object(value))
8666
- ? getRawTag(value)
8667
- : objectToString(value);
8668
- }
8669
-
8670
- /**
8671
- * Checks if `value` is object-like. A value is object-like if it's not `null`
8672
- * and has a `typeof` result of "object".
8673
- *
8674
- * @static
8675
- * @memberOf _
8676
- * @since 4.0.0
8677
- * @category Lang
8678
- * @param {*} value The value to check.
8679
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
8680
- * @example
8681
- *
8682
- * _.isObjectLike({});
8683
- * // => true
8684
- *
8685
- * _.isObjectLike([1, 2, 3]);
8686
- * // => true
8687
- *
8688
- * _.isObjectLike(_.noop);
8689
- * // => false
8690
- *
8691
- * _.isObjectLike(null);
8692
- * // => false
8693
- */
8694
- function isObjectLike(value) {
8695
- return value != null && typeof value == 'object';
8696
- }
8697
-
8698
- /** `Object#toString` result references. */
8699
- var symbolTag = '[object Symbol]';
8700
-
8701
- /**
8702
- * Checks if `value` is classified as a `Symbol` primitive or object.
8703
- *
8704
- * @static
8705
- * @memberOf _
8706
- * @since 4.0.0
8707
- * @category Lang
8708
- * @param {*} value The value to check.
8709
- * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
8710
- * @example
8711
- *
8712
- * _.isSymbol(Symbol.iterator);
8713
- * // => true
8714
- *
8715
- * _.isSymbol('abc');
8716
- * // => false
8717
- */
8718
- function isSymbol(value) {
8719
- return typeof value == 'symbol' ||
8720
- (isObjectLike(value) && baseGetTag(value) == symbolTag);
8721
- }
8722
-
8723
- /** Used to match a single whitespace character. */
8724
- var reWhitespace = /\s/;
8725
-
8726
- /**
8727
- * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
8728
- * character of `string`.
8729
- *
8730
- * @private
8731
- * @param {string} string The string to inspect.
8732
- * @returns {number} Returns the index of the last non-whitespace character.
8733
- */
8734
- function trimmedEndIndex(string) {
8735
- var index = string.length;
8736
-
8737
- while (index-- && reWhitespace.test(string.charAt(index))) {}
8738
- return index;
8739
- }
8740
-
8741
- /** Used to match leading whitespace. */
8742
- var reTrimStart = /^\s+/;
8743
-
8744
- /**
8745
- * The base implementation of `_.trim`.
8746
- *
8747
- * @private
8748
- * @param {string} string The string to trim.
8749
- * @returns {string} Returns the trimmed string.
8750
- */
8751
- function baseTrim(string) {
8752
- return string
8753
- ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')
8754
- : string;
8755
- }
8756
-
8757
- /**
8758
- * Checks if `value` is the
8759
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
8760
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
8761
- *
8762
- * @static
8763
- * @memberOf _
8764
- * @since 0.1.0
8765
- * @category Lang
8766
- * @param {*} value The value to check.
8767
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
8768
- * @example
8769
- *
8770
- * _.isObject({});
8771
- * // => true
8772
- *
8773
- * _.isObject([1, 2, 3]);
8774
- * // => true
8775
- *
8776
- * _.isObject(_.noop);
8777
- * // => true
8778
- *
8779
- * _.isObject(null);
8780
- * // => false
8781
- */
8782
- function isObject$1(value) {
8783
- var type = typeof value;
8784
- return value != null && (type == 'object' || type == 'function');
8785
- }
8786
-
8787
- /** Used as references for various `Number` constants. */
8788
- var NAN = 0 / 0;
8789
-
8790
- /** Used to detect bad signed hexadecimal string values. */
8791
- var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
8792
-
8793
- /** Used to detect binary string values. */
8794
- var reIsBinary = /^0b[01]+$/i;
8795
-
8796
- /** Used to detect octal string values. */
8797
- var reIsOctal = /^0o[0-7]+$/i;
8798
-
8799
- /** Built-in method references without a dependency on `root`. */
8800
- var freeParseInt = parseInt;
8801
-
8802
- /**
8803
- * Converts `value` to a number.
8804
- *
8805
- * @static
8806
- * @memberOf _
8807
- * @since 4.0.0
8808
- * @category Lang
8809
- * @param {*} value The value to process.
8810
- * @returns {number} Returns the number.
8811
- * @example
8812
- *
8813
- * _.toNumber(3.2);
8814
- * // => 3.2
8815
- *
8816
- * _.toNumber(Number.MIN_VALUE);
8817
- * // => 5e-324
8818
- *
8819
- * _.toNumber(Infinity);
8820
- * // => Infinity
8821
- *
8822
- * _.toNumber('3.2');
8823
- * // => 3.2
8824
- */
8825
- function toNumber(value) {
8826
- if (typeof value == 'number') {
8827
- return value;
8828
- }
8829
- if (isSymbol(value)) {
8830
- return NAN;
8831
- }
8832
- if (isObject$1(value)) {
8833
- var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
8834
- value = isObject$1(other) ? (other + '') : other;
8835
- }
8836
- if (typeof value != 'string') {
8837
- return value === 0 ? value : +value;
8838
- }
8839
- value = baseTrim(value);
8840
- var isBinary = reIsBinary.test(value);
8841
- return (isBinary || reIsOctal.test(value))
8842
- ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
8843
- : (reIsBadHex.test(value) ? NAN : +value);
8844
- }
8845
-
8846
- /**
8847
- * Gets the timestamp of the number of milliseconds that have elapsed since
8848
- * the Unix epoch (1 January 1970 00:00:00 UTC).
8849
- *
8850
- * @static
8851
- * @memberOf _
8852
- * @since 2.4.0
8853
- * @category Date
8854
- * @returns {number} Returns the timestamp.
8855
- * @example
8856
- *
8857
- * _.defer(function(stamp) {
8858
- * console.log(_.now() - stamp);
8859
- * }, _.now());
8860
- * // => Logs the number of milliseconds it took for the deferred invocation.
8861
- */
8862
- var now = function() {
8863
- return root$1.Date.now();
8565
+ const debounce = (callback, wait = 0) => {
8566
+ let timeoutId;
8567
+ return (...args) => {
8568
+ if (timeoutId) {
8569
+ clearTimeout(timeoutId);
8570
+ }
8571
+ timeoutId = setTimeout(() => {
8572
+ timeoutId = undefined;
8573
+ callback(...args);
8574
+ }, wait);
8575
+ };
8864
8576
  };
8865
8577
 
8866
- var now$1 = now;
8867
-
8868
- /** Error message constants. */
8869
- var FUNC_ERROR_TEXT = 'Expected a function';
8870
-
8871
- /* Built-in method references for those with the same name as other `lodash` methods. */
8872
- var nativeMax = Math.max,
8873
- nativeMin = Math.min;
8874
-
8875
- /**
8876
- * Creates a debounced function that delays invoking `func` until after `wait`
8877
- * milliseconds have elapsed since the last time the debounced function was
8878
- * invoked. The debounced function comes with a `cancel` method to cancel
8879
- * delayed `func` invocations and a `flush` method to immediately invoke them.
8880
- * Provide `options` to indicate whether `func` should be invoked on the
8881
- * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
8882
- * with the last arguments provided to the debounced function. Subsequent
8883
- * calls to the debounced function return the result of the last `func`
8884
- * invocation.
8885
- *
8886
- * **Note:** If `leading` and `trailing` options are `true`, `func` is
8887
- * invoked on the trailing edge of the timeout only if the debounced function
8888
- * is invoked more than once during the `wait` timeout.
8889
- *
8890
- * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
8891
- * until to the next tick, similar to `setTimeout` with a timeout of `0`.
8892
- *
8893
- * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
8894
- * for details over the differences between `_.debounce` and `_.throttle`.
8895
- *
8896
- * @static
8897
- * @memberOf _
8898
- * @since 0.1.0
8899
- * @category Function
8900
- * @param {Function} func The function to debounce.
8901
- * @param {number} [wait=0] The number of milliseconds to delay.
8902
- * @param {Object} [options={}] The options object.
8903
- * @param {boolean} [options.leading=false]
8904
- * Specify invoking on the leading edge of the timeout.
8905
- * @param {number} [options.maxWait]
8906
- * The maximum time `func` is allowed to be delayed before it's invoked.
8907
- * @param {boolean} [options.trailing=true]
8908
- * Specify invoking on the trailing edge of the timeout.
8909
- * @returns {Function} Returns the new debounced function.
8910
- * @example
8911
- *
8912
- * // Avoid costly calculations while the window size is in flux.
8913
- * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
8914
- *
8915
- * // Invoke `sendMail` when clicked, debouncing subsequent calls.
8916
- * jQuery(element).on('click', _.debounce(sendMail, 300, {
8917
- * 'leading': true,
8918
- * 'trailing': false
8919
- * }));
8920
- *
8921
- * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
8922
- * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
8923
- * var source = new EventSource('/stream');
8924
- * jQuery(source).on('message', debounced);
8925
- *
8926
- * // Cancel the trailing debounced invocation.
8927
- * jQuery(window).on('popstate', debounced.cancel);
8928
- */
8929
- function debounce(func, wait, options) {
8930
- var lastArgs,
8931
- lastThis,
8932
- maxWait,
8933
- result,
8934
- timerId,
8935
- lastCallTime,
8936
- lastInvokeTime = 0,
8937
- leading = false,
8938
- maxing = false,
8939
- trailing = true;
8940
-
8941
- if (typeof func != 'function') {
8942
- throw new TypeError(FUNC_ERROR_TEXT);
8943
- }
8944
- wait = toNumber(wait) || 0;
8945
- if (isObject$1(options)) {
8946
- leading = !!options.leading;
8947
- maxing = 'maxWait' in options;
8948
- maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
8949
- trailing = 'trailing' in options ? !!options.trailing : trailing;
8950
- }
8951
-
8952
- function invokeFunc(time) {
8953
- var args = lastArgs,
8954
- thisArg = lastThis;
8955
-
8956
- lastArgs = lastThis = undefined;
8957
- lastInvokeTime = time;
8958
- result = func.apply(thisArg, args);
8959
- return result;
8960
- }
8961
-
8962
- function leadingEdge(time) {
8963
- // Reset any `maxWait` timer.
8964
- lastInvokeTime = time;
8965
- // Start the timer for the trailing edge.
8966
- timerId = setTimeout(timerExpired, wait);
8967
- // Invoke the leading edge.
8968
- return leading ? invokeFunc(time) : result;
8969
- }
8970
-
8971
- function remainingWait(time) {
8972
- var timeSinceLastCall = time - lastCallTime,
8973
- timeSinceLastInvoke = time - lastInvokeTime,
8974
- timeWaiting = wait - timeSinceLastCall;
8975
-
8976
- return maxing
8977
- ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
8978
- : timeWaiting;
8979
- }
8980
-
8981
- function shouldInvoke(time) {
8982
- var timeSinceLastCall = time - lastCallTime,
8983
- timeSinceLastInvoke = time - lastInvokeTime;
8984
-
8985
- // Either this is the first call, activity has stopped and we're at the
8986
- // trailing edge, the system time has gone backwards and we're treating
8987
- // it as the trailing edge, or we've hit the `maxWait` limit.
8988
- return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
8989
- (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
8990
- }
8991
-
8992
- function timerExpired() {
8993
- var time = now$1();
8994
- if (shouldInvoke(time)) {
8995
- return trailingEdge(time);
8996
- }
8997
- // Restart the timer.
8998
- timerId = setTimeout(timerExpired, remainingWait(time));
8999
- }
9000
-
9001
- function trailingEdge(time) {
9002
- timerId = undefined;
9003
-
9004
- // Only invoke if we have `lastArgs` which means `func` has been
9005
- // debounced at least once.
9006
- if (trailing && lastArgs) {
9007
- return invokeFunc(time);
9008
- }
9009
- lastArgs = lastThis = undefined;
9010
- return result;
9011
- }
9012
-
9013
- function cancel() {
9014
- if (timerId !== undefined) {
9015
- clearTimeout(timerId);
9016
- }
9017
- lastInvokeTime = 0;
9018
- lastArgs = lastCallTime = lastThis = timerId = undefined;
9019
- }
9020
-
9021
- function flush() {
9022
- return timerId === undefined ? result : trailingEdge(now$1());
9023
- }
9024
-
9025
- function debounced() {
9026
- var time = now$1(),
9027
- isInvoking = shouldInvoke(time);
9028
-
9029
- lastArgs = arguments;
9030
- lastThis = this;
9031
- lastCallTime = time;
9032
-
9033
- if (isInvoking) {
9034
- if (timerId === undefined) {
9035
- return leadingEdge(lastCallTime);
9036
- }
9037
- if (maxing) {
9038
- // Handle invocations in a tight loop.
9039
- clearTimeout(timerId);
9040
- timerId = setTimeout(timerExpired, wait);
9041
- return invokeFunc(lastCallTime);
9042
- }
9043
- }
9044
- if (timerId === undefined) {
9045
- timerId = setTimeout(timerExpired, wait);
9046
- }
9047
- return result;
9048
- }
9049
- debounced.cancel = cancel;
9050
- debounced.flush = flush;
9051
- return debounced;
9052
- }
9053
-
9054
8578
  class InputPasswordController extends InputIconController {
9055
8579
  constructor(component, name, host) {
9056
8580
  super(component, name, host);
@@ -12878,6 +12402,71 @@ function computeCoordsFromPlacement(_ref, placement, rtl) {
12878
12402
  return coords;
12879
12403
  }
12880
12404
 
12405
+ /**
12406
+ * Resolves with an object of overflow side offsets that determine how much the
12407
+ * element is overflowing a given clipping boundary on each side.
12408
+ * - positive = overflowing the boundary by that number of pixels
12409
+ * - negative = how many pixels left before it will overflow
12410
+ * - 0 = lies flush with the boundary
12411
+ * @see https://floating-ui.com/docs/detectOverflow
12412
+ */
12413
+ async function detectOverflow(state, options) {
12414
+ var _await$platform$isEle;
12415
+ if (options === void 0) {
12416
+ options = {};
12417
+ }
12418
+ const {
12419
+ x,
12420
+ y,
12421
+ platform,
12422
+ rects,
12423
+ elements,
12424
+ strategy
12425
+ } = state;
12426
+ const {
12427
+ boundary = 'clippingAncestors',
12428
+ rootBoundary = 'viewport',
12429
+ elementContext = 'floating',
12430
+ altBoundary = false,
12431
+ padding = 0
12432
+ } = evaluate(options, state);
12433
+ const paddingObject = getPaddingObject(padding);
12434
+ const altContext = elementContext === 'floating' ? 'reference' : 'floating';
12435
+ const element = elements[altBoundary ? altContext : elementContext];
12436
+ const clippingClientRect = rectToClientRect(await platform.getClippingRect({
12437
+ 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))),
12438
+ boundary,
12439
+ rootBoundary,
12440
+ strategy
12441
+ }));
12442
+ const rect = elementContext === 'floating' ? {
12443
+ x,
12444
+ y,
12445
+ width: rects.floating.width,
12446
+ height: rects.floating.height
12447
+ } : rects.reference;
12448
+ const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
12449
+ const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
12450
+ x: 1,
12451
+ y: 1
12452
+ } : {
12453
+ x: 1,
12454
+ y: 1
12455
+ };
12456
+ const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
12457
+ elements,
12458
+ rect,
12459
+ offsetParent,
12460
+ strategy
12461
+ }) : rect);
12462
+ return {
12463
+ top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
12464
+ bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
12465
+ left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
12466
+ right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
12467
+ };
12468
+ }
12469
+
12881
12470
  /**
12882
12471
  * Computes the `x` and `y` coordinates that will place the floating element
12883
12472
  * next to a given reference element.
@@ -12907,6 +12496,7 @@ const computePosition$1 = async (reference, floating, config) => {
12907
12496
  let middlewareData = {};
12908
12497
  let resetCount = 0;
12909
12498
  for (let i = 0; i < validMiddleware.length; i++) {
12499
+ var _platform$detectOverf;
12910
12500
  const {
12911
12501
  name,
12912
12502
  fn
@@ -12924,7 +12514,10 @@ const computePosition$1 = async (reference, floating, config) => {
12924
12514
  strategy,
12925
12515
  middlewareData,
12926
12516
  rects,
12927
- platform,
12517
+ platform: {
12518
+ ...platform,
12519
+ detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow
12520
+ },
12928
12521
  elements: {
12929
12522
  reference,
12930
12523
  floating
@@ -12969,71 +12562,6 @@ const computePosition$1 = async (reference, floating, config) => {
12969
12562
  };
12970
12563
  };
12971
12564
 
12972
- /**
12973
- * Resolves with an object of overflow side offsets that determine how much the
12974
- * element is overflowing a given clipping boundary on each side.
12975
- * - positive = overflowing the boundary by that number of pixels
12976
- * - negative = how many pixels left before it will overflow
12977
- * - 0 = lies flush with the boundary
12978
- * @see https://floating-ui.com/docs/detectOverflow
12979
- */
12980
- async function detectOverflow(state, options) {
12981
- var _await$platform$isEle;
12982
- if (options === void 0) {
12983
- options = {};
12984
- }
12985
- const {
12986
- x,
12987
- y,
12988
- platform,
12989
- rects,
12990
- elements,
12991
- strategy
12992
- } = state;
12993
- const {
12994
- boundary = 'clippingAncestors',
12995
- rootBoundary = 'viewport',
12996
- elementContext = 'floating',
12997
- altBoundary = false,
12998
- padding = 0
12999
- } = evaluate(options, state);
13000
- const paddingObject = getPaddingObject(padding);
13001
- const altContext = elementContext === 'floating' ? 'reference' : 'floating';
13002
- const element = elements[altBoundary ? altContext : elementContext];
13003
- const clippingClientRect = rectToClientRect(await platform.getClippingRect({
13004
- 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))),
13005
- boundary,
13006
- rootBoundary,
13007
- strategy
13008
- }));
13009
- const rect = elementContext === 'floating' ? {
13010
- x,
13011
- y,
13012
- width: rects.floating.width,
13013
- height: rects.floating.height
13014
- } : rects.reference;
13015
- const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));
13016
- const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {
13017
- x: 1,
13018
- y: 1
13019
- } : {
13020
- x: 1,
13021
- y: 1
13022
- };
13023
- const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
13024
- elements,
13025
- rect,
13026
- offsetParent,
13027
- strategy
13028
- }) : rect);
13029
- return {
13030
- top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
13031
- bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
13032
- left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
13033
- right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
13034
- };
13035
- }
13036
-
13037
12565
  /**
13038
12566
  * Provides data to position an inner element of the floating element so that it
13039
12567
  * appears centered to the reference element.
@@ -13155,7 +12683,7 @@ const autoPlacement = function (options) {
13155
12683
  ...detectOverflowOptions
13156
12684
  } = evaluate(options, state);
13157
12685
  const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;
13158
- const overflow = await detectOverflow(state, detectOverflowOptions);
12686
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
13159
12687
  const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;
13160
12688
  const currentPlacement = placements$1[currentIndex];
13161
12689
  if (currentPlacement == null) {
@@ -13269,7 +12797,7 @@ const flip$1 = function (options) {
13269
12797
  fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
13270
12798
  }
13271
12799
  const placements = [initialPlacement, ...fallbackPlacements];
13272
- const overflow = await detectOverflow(state, detectOverflowOptions);
12800
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
13273
12801
  const overflows = [];
13274
12802
  let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
13275
12803
  if (checkMainAxis) {
@@ -13376,7 +12904,8 @@ const hide = function (options) {
13376
12904
  options,
13377
12905
  async fn(state) {
13378
12906
  const {
13379
- rects
12907
+ rects,
12908
+ platform
13380
12909
  } = state;
13381
12910
  const {
13382
12911
  strategy = 'referenceHidden',
@@ -13385,7 +12914,7 @@ const hide = function (options) {
13385
12914
  switch (strategy) {
13386
12915
  case 'referenceHidden':
13387
12916
  {
13388
- const overflow = await detectOverflow(state, {
12917
+ const overflow = await platform.detectOverflow(state, {
13389
12918
  ...detectOverflowOptions,
13390
12919
  elementContext: 'reference'
13391
12920
  });
@@ -13399,7 +12928,7 @@ const hide = function (options) {
13399
12928
  }
13400
12929
  case 'escaped':
13401
12930
  {
13402
- const overflow = await detectOverflow(state, {
12931
+ const overflow = await platform.detectOverflow(state, {
13403
12932
  ...detectOverflowOptions,
13404
12933
  altBoundary: true
13405
12934
  });
@@ -13653,7 +13182,8 @@ const shift$1 = function (options) {
13653
13182
  const {
13654
13183
  x,
13655
13184
  y,
13656
- placement
13185
+ placement,
13186
+ platform
13657
13187
  } = state;
13658
13188
  const {
13659
13189
  mainAxis: checkMainAxis = true,
@@ -13676,7 +13206,7 @@ const shift$1 = function (options) {
13676
13206
  x,
13677
13207
  y
13678
13208
  };
13679
- const overflow = await detectOverflow(state, detectOverflowOptions);
13209
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
13680
13210
  const crossAxis = getSideAxis(getSide(placement));
13681
13211
  const mainAxis = getOppositeAxis(crossAxis);
13682
13212
  let mainAxisCoord = coords[mainAxis];
@@ -13808,7 +13338,7 @@ const size = function (options) {
13808
13338
  apply = () => {},
13809
13339
  ...detectOverflowOptions
13810
13340
  } = evaluate(options, state);
13811
- const overflow = await detectOverflow(state, detectOverflowOptions);
13341
+ const overflow = await platform.detectOverflow(state, detectOverflowOptions);
13812
13342
  const side = getSide(placement);
13813
13343
  const alignment = getAlignment(placement);
13814
13344
  const isYAxis = getSideAxis(placement) === 'y';
@@ -26074,6 +25604,7 @@ class KolTabs {
26074
25604
  div.setAttribute('id', `tabpanel-${i}`);
26075
25605
  div.setAttribute('role', 'tabpanel');
26076
25606
  div.setAttribute('hidden', '');
25607
+ div.setAttribute('tabindex', '0');
26077
25608
  const slot = document.createElement('slot');
26078
25609
  slot.setAttribute('name', `tabpanel-slot-${i}`);
26079
25610
  div.appendChild(slot);
@@ -26897,13 +26428,19 @@ class KolTooltipWc {
26897
26428
  this.hideTooltip();
26898
26429
  }
26899
26430
  };
26900
- this.handleMouseEnter = () => {
26431
+ this.isInsideTriggerOrTooltip = (node) => {
26432
+ var _a, _b;
26433
+ 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))));
26434
+ };
26435
+ this.handleMouseOver = (event) => {
26436
+ if (this.isInsideTriggerOrTooltip(event.relatedTarget)) {
26437
+ return;
26438
+ }
26901
26439
  this.hasMouseIn = true;
26902
26440
  this.showOrHideTooltip();
26903
26441
  };
26904
- this.handleMouseleave = (event) => {
26905
- var _a, _b;
26906
- this.hasMouseIn = (_b = (_a = this.tooltipElement) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget)) !== null && _b !== void 0 ? _b : false;
26442
+ this.handleMouseOut = (event) => {
26443
+ this.hasMouseIn = this.isInsideTriggerOrTooltip(event.relatedTarget);
26907
26444
  this.showOrHideTooltip();
26908
26445
  };
26909
26446
  this.handleFocusIn = () => {
@@ -26915,14 +26452,14 @@ class KolTooltipWc {
26915
26452
  this.showOrHideTooltip();
26916
26453
  };
26917
26454
  this.addListeners = (el) => {
26918
- el.addEventListener('mouseenter', this.handleMouseEnter);
26919
- el.addEventListener('mouseleave', this.handleMouseleave);
26455
+ el.addEventListener('mouseover', this.handleMouseOver);
26456
+ el.addEventListener('mouseout', this.handleMouseOut);
26920
26457
  el.addEventListener('focusin', this.handleFocusIn);
26921
26458
  el.addEventListener('focusout', this.handleFocusout);
26922
26459
  };
26923
26460
  this.removeListeners = (el) => {
26924
- el.removeEventListener('mouseenter', this.handleMouseEnter);
26925
- el.removeEventListener('mouseleave', this.handleMouseleave);
26461
+ el.removeEventListener('mouseover', this.handleMouseOver);
26462
+ el.removeEventListener('mouseout', this.handleMouseOut);
26926
26463
  el.removeEventListener('focusin', this.handleFocusIn);
26927
26464
  el.removeEventListener('focusout', this.handleFocusout);
26928
26465
  };
@@ -26974,7 +26511,7 @@ class KolTooltipWc {
26974
26511
  }
26975
26512
  }
26976
26513
  render() {
26977
- 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 })))));
26514
+ 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 })))));
26978
26515
  }
26979
26516
  validateBadgeText(value) {
26980
26517
  validateBadgeText(this, value);