@svar-ui/react-core 2.6.1 → 2.6.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/context.js","../src/components/helpers/getInputId.js","../src/components/TextArea.jsx","../src/components/Button.jsx","../src/components/Checkbox.jsx","../src/components/CheckboxGroup.jsx","../src/components/Portal.jsx","../src/components/Popup.jsx","../src/components/helpers/InlineDropdown.jsx","../src/components/Dropdown.jsx","../src/components/ColorSelect.jsx","../src/components/helpers/sliderMove.js","../src/components/helpers/colorTransformator.js","../src/components/helpers/colorValidation.js","../src/components/helpers/locale.js","../src/components/ColorBoard.jsx","../src/components/ColorPicker.jsx","../src/components/helpers/listnav.js","../src/components/helpers/SuggestDropdown.jsx","../src/components/Combo.jsx","../src/components/Text.jsx","../src/components/calendar/Header.jsx","../src/components/calendar/Button.jsx","../src/components/calendar/Month.jsx","../src/components/calendar/Year.jsx","../src/components/calendar/Duodecade.jsx","../src/components/calendar/helpers.js","../src/components/calendar/Panel.jsx","../src/Locale.jsx","../src/components/Calendar.jsx","../src/components/helpers/dropdown.js","../src/components/DatePicker.jsx","../src/components/RangeCalendar.jsx","../src/components/DateRangePicker.jsx","../src/components/Fullscreen.jsx","../src/components/Icon.jsx","../src/components/MultiCombo.jsx","../src/components/Pager.jsx","../src/components/RadioButton.jsx","../src/components/RadioButtonGroup.jsx","../src/components/RichSelect.jsx","../src/components/Segmented.jsx","../src/components/Select.jsx","../src/components/Slider.jsx","../src/components/Switch.jsx","../src/components/Tabs.jsx","../src/components/Counter.jsx","../src/components/Notice.jsx","../src/components/Notices.jsx","../src/components/Modal.jsx","../src/components/Globals.jsx","../src/Globals.jsx","../src/components/Field.jsx","../src/components/TwoState.jsx","../src/components/TimePicker.jsx","../src/components/Tooltip.jsx","../src/components/ModalArea.jsx","../src/components/SideArea.jsx","../src/components/Avatar.jsx","../src/themes/FontRoboto.jsx","../src/themes/Material.jsx","../src/themes/FontOpenSans.jsx","../src/themes/Willow.jsx","../src/themes/WillowDark.jsx","../src/components/helpers/popup.js","../src/index.js"],"sourcesContent":["import { createContext } from 'react';\n\nexport const theme = createContext('');\nexport const helpers = createContext({});\nexport const i18n = createContext(null);\nexport const fieldId = createContext(null);\n","import { useContext, useState } from 'react';\nimport { fieldId } from '../../context';\nimport { uid } from '@svar-ui/lib-dom';\n\nexport function useInputId(id) {\n const contextId = useContext(fieldId);\n\n const [inputId] = useState(() => id || contextId || uid());\n\n return inputId;\n}\n","import { useCallback, useEffect, useRef } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\n\nimport './TextArea.css';\n\nexport default function TextArea({\n value: propValue = '',\n id,\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n readonly = false,\n css = '',\n onChange,\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(propValue);\n\n const handleInput = useCallback(\n (e) => {\n const newValue = e.target.value;\n setValue(newValue);\n if (onChange) {\n onChange({ value: newValue, input: true });\n }\n },\n [onChange],\n );\n\n const ontextchange = useCallback(\n (e) => {\n const newValue = e.target.value;\n setValue(newValue);\n if (onChange) {\n onChange({ value: newValue });\n }\n },\n [onChange],\n );\n\n const inputRef = useRef(null);\n useEffect(() => {\n const handler = ontextchange;\n const node = inputRef.current;\n node.addEventListener('change', handler);\n return () => {\n if (node) {\n node.removeEventListener('change', handler);\n }\n };\n }, [ontextchange]);\n\n return (\n <textarea\n className={'wx-3yFVAC' + ` wx-textarea ${css} ${error ? 'wx-error' : ''}`}\n id={inputId}\n disabled={disabled}\n placeholder={placeholder}\n readOnly={readonly}\n title={title}\n value={value}\n onInput={handleInput}\n ref={inputRef}\n data-tooltip-text={tooltip}\n />\n );\n}\n","import { useMemo } from 'react';\nimport './Button.css';\n\nexport default function Button({\n type = '',\n css = '',\n icon = '',\n disabled = false,\n title = '',\n tooltip,\n text = '',\n children,\n onClick,\n}) {\n const buttonCss = useMemo(() => {\n let cssType = type\n ? type\n .split(' ')\n .filter((a) => a !== '')\n .map((x) => 'wx-' + x)\n .join(' ')\n : '';\n return css + (css ? ' ' : '') + cssType;\n }, [type, css]);\n\n const handleClick = (ev) => {\n onClick && onClick(ev);\n };\n\n return (\n <button\n title={title}\n className={`wx-2ZWgb4 wx-button ${buttonCss} ${icon && !children ? 'wx-icon' : ''}`}\n disabled={disabled}\n onClick={handleClick}\n data-tooltip-text={tooltip}\n >\n {icon && <i className={'wx-2ZWgb4 ' + icon}></i>}\n {children ? children : text || ' '}\n </button>\n );\n}\n","import { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Checkbox.css';\n\nexport default function Checkbox({\n id,\n label = '',\n inputValue = '',\n value: valueProp = false,\n onChange,\n disabled = false,\n css = ''\n}) {\n\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(valueProp);\n\n const handlerChange = ({ target }) => {\n const newValue = target.checked;\n setValue(newValue);\n onChange && onChange({ value: newValue, inputValue });\n };\n\n return (\n <div className={`wx-2IvefP wx-checkbox ${css}`}>\n <input\n type=\"checkbox\"\n id={inputId}\n disabled={disabled}\n className=\"wx-2IvefP wx-check\"\n checked={value}\n value={inputValue}\n onChange={handlerChange}\n />\n <label htmlFor={inputId} className=\"wx-2IvefP wx-label\">\n <span className=\"wx-2IvefP wx-before\"></span>\n {label && <span className=\"wx-2IvefP wx-after\">{label}</span>}\n </label>\n </div>\n );\n}\n","import { useCallback } from 'react';\nimport Checkbox from './Checkbox.jsx';\nimport './CheckboxGroup.css';\nimport { fieldId } from \"../context\";\n\nexport default function CheckboxGroup({\n options = [],\n value = [],\n type = '',\n css = '',\n onChange,\n}) {\n // Handle both onchange and onChange props for compatibility\n const handleChange = useCallback(\n (obj) => {\n let newValue;\n if (obj.value) newValue = [...value, obj.inputValue];\n else newValue = value.filter((a) => a !== obj.inputValue);\n\n if (onChange) onChange({ value: newValue });\n },\n [value, onChange],\n );\n\n return (\n <fieldId.Provider value={null}>\n <div className={`wx-q8xwRD wx-checkboxgroup ${type && `wx-${type}`} ${css}`}>\n {options.map((option) => (\n <div key={option.id} className=\"wx-q8xwRD wx-item\">\n <Checkbox\n label={option.label}\n inputValue={option.id}\n value={value.includes(option.id)}\n onChange={handleChange}\n />\n </div>\n ))}\n </div>\n </fieldId.Provider>\n );\n}\n","import { useContext, useRef, useEffect, useState } from 'react';\nimport { theme as themeContext } from '../context.js';\nimport { env } from '@svar-ui/lib-dom';\nimport { createPortal } from 'react-dom';\n\nfunction Portal({ theme: initialTheme = '', target, children }) {\n const portalRef = useRef(null);\n const componentRef = useRef(null);\n const [targetRef, setTargetRef] = useState(null);\n\n if (!portalRef.current) {\n portalRef.current = document.createElement('div');\n }\n\n const contextTheme = useContext(themeContext);\n\n useEffect(() => {\n setTargetRef(\n target ||\n getParentRoot(componentRef.current) ||\n env.getTopNode(componentRef.current),\n );\n }, [componentRef.current]);\n\n return (\n <>\n <span ref={componentRef} style={{ display: 'none' }} />\n {componentRef.current && targetRef\n ? createPortal(\n <div\n className={`wx-3ZWsT0 wx-${initialTheme || contextTheme}-theme`}\n >\n {children}\n </div>,\n targetRef,\n )\n : null}\n </>\n );\n}\n\nexport default Portal;\n\nfunction getParentRoot(p) {\n const root = env.getTopNode(p);\n while (p && p !== root && !p.getAttribute('data-wx-portal-root')) {\n p = p.parentNode;\n }\n return p;\n}\n","import { useState, useEffect, useRef, useCallback, useLayoutEffect } from 'react';\nimport { clickOutside, calculatePosition, getAbsParent } from '@svar-ui/lib-dom';\nimport './Popup.css';\n\nexport function Popup({\n left = 0,\n top = 0,\n at = 'bottom',\n parent = null,\n width = 'auto',\n css = '',\n onCancel,\n children,\n trackScroll = false,\n}) {\n const [x, setX] = useState(0);\n const [y, setY] = useState(0);\n const [w, setW] = useState('auto');\n const [visible, setVisible] = useState(false);\n\n const self = useRef(null);\n const portalRef = useRef(null);\n const onCancelRef = useRef(onCancel);\n\n useEffect(() => {\n onCancelRef.current = onCancel;\n }, [onCancel]);\n\n function getWidth(calcWidth) {\n if (parent && (width + '').indexOf('%') > -1) {\n return width.replace(/(\\d+)%/, (match, value) => {\n value = (value * parent.offsetWidth) / 100 + 'px';\n return width.replace(match, value);\n });\n }\n return width && width !== 'auto' ? width : calcWidth;\n }\n\n const updatePosition = useCallback(() => {\n if (!self.current) return;\n\n const result = calculatePosition(self.current, parent, at, left, top);\n if (result) {\n setX(result.x);\n setY(result.y);\n setW(getWidth(result.width));\n }\n }, [self, parent, at, left, top, width]);\n\n useLayoutEffect(() => {\n const onScroll = (e) => {\n if (onCancelRef.current && e.target !== portalRef.current && self.current && !self.current.contains(e.target))\n onCancelRef.current(e);\n };\n\n let resizeObserver;\n requestAnimationFrame(() => {\n updatePosition();\n setVisible(true);\n if (trackScroll && self.current) {\n portalRef.current = getAbsParent(self.current);\n if (portalRef.current)\n portalRef.current.addEventListener('scroll', onScroll, true);\n }\n if (parent) {\n resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(parent);\n }\n });\n\n return () => {\n if (trackScroll && portalRef.current)\n portalRef.current.removeEventListener('scroll', onScroll, true);\n resizeObserver?.disconnect();\n };\n }, []);\n\n useLayoutEffect(() => {\n updatePosition();\n }, [parent, at, left, top]);\n\n useEffect(() => {\n const down = (e) => {\n if (onCancelRef.current) {\n onCancelRef.current(e);\n }\n };\n if (self.current) {\n return clickOutside(self.current, { callback: down, parent: () => parent }).destroy;\n }\n }, [parent]);\n\n return (\n <div\n ref={self}\n className={['wx-37M6Fj', 'wx-popup', css].filter(Boolean).join(' ')}\n style={{\n position: 'absolute',\n visibility: visible ? 'visible' : 'hidden',\n top: y + 'px',\n left: x + 'px',\n width: w,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport default Popup;\n","import { useState, useEffect, useRef } from 'react';\nimport { clickOutside } from '@svar-ui/lib-dom';\nimport './InlineDropdown.css';\n\nfunction InlineDropdown({\n position: positionProp = 'bottom',\n align: alignProp = 'start',\n autoFit = true,\n onCancel = null,\n width = '100%',\n css = '',\n children,\n}) {\n const nodeRef = useRef(null);\n const [position, setPosition] = useState(positionProp);\n const [align, setAlign] = useState(alignProp);\n const onCancelRef = useRef(onCancel);\n\n useEffect(() => {\n onCancelRef.current = onCancel;\n }, [onCancel]);\n\n useEffect(() => {\n if (autoFit) {\n const node = nodeRef.current;\n if (node) {\n const nodeCoords = node.getBoundingClientRect();\n const bodyCoords = document.body.getBoundingClientRect();\n\n if (nodeCoords.right >= bodyCoords.right) {\n setAlign('end');\n }\n\n if (nodeCoords.bottom >= bodyCoords.bottom) {\n setPosition('top');\n }\n }\n }\n }, []);\n\n useEffect(() => {\n if (nodeRef.current) {\n const down = (e) => {\n onCancelRef.current && onCancelRef.current(e);\n };\n return clickOutside(nodeRef.current, down).destroy;\n }\n }, []);\n\n return (\n <div\n ref={nodeRef}\n className={[\n 'wx-dropdown',\n `wx-${position}-${align}`,\n css || '',\n 'wx-aaaVytZW',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ width: width }}\n >\n {children}\n </div>\n );\n}\n\nexport default InlineDropdown;\n","import { useState, useRef, useMemo, useLayoutEffect } from 'react';\nimport Portal from './Portal.jsx';\nimport Popup from './Popup.jsx';\nimport InlineDropdown from './helpers/InlineDropdown.jsx';\nimport './Dropdown.css';\n\nfunction Dropdown({\n position = 'bottom',\n align = 'start',\n autoFit = true,\n inline = false,\n onCancel,\n width = '100%',\n children,\n ...props\n}) {\n const [target, setTarget] = useState(undefined);\n const nodeRef = useRef(null);\n\n const at = useMemo(() => `${position}-${align}`, [position, align]);\n\n useLayoutEffect(() => {\n if (nodeRef.current) {\n setTarget(nodeRef.current.parentNode);\n }\n }, []);\n\n return (\n <>\n {target && (inline ? (\n <InlineDropdown\n onCancel={onCancel}\n position={position}\n align={align}\n autoFit={autoFit}\n width={width}\n {...props}\n >\n {children}\n </InlineDropdown>\n ) : (\n <Portal>\n <Popup parent={target} at={at} onCancel={onCancel} width={width} {...props}>\n {children}\n </Popup>\n </Portal>\n ))}\n <span ref={nodeRef} className=\"wx-portal-node wx-32GZ52\" />\n </>\n );\n}\n\nexport default Dropdown;\n","import { useState, useCallback } from 'react';\nimport { useInputId } from './helpers/getInputId.js';\nimport Dropdown from './Dropdown.jsx';\nimport './ColorSelect.css';\n\nconst defaultColors = [\n '#00a037',\n '#37a9ef',\n '#f5a623',\n '#ff4c3b',\n '#a0a0a0',\n '#000000',\n '#ffffff',\n];\n\nexport default function ColorSelect({\n colors = defaultColors,\n value = '',\n onChange,\n id,\n clear = false,\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n css = '',\n dropdown = {},\n}) {\n const inputId = useInputId(id);\n const [currentValue, setCurrentValue] = useState(value);\n const [popup, setPopup] = useState(false);\n\n const selectColor = useCallback(\n (ev, color) => {\n ev.stopPropagation();\n setCurrentValue(color);\n setPopup(false);\n onChange && onChange({ value: color });\n },\n [onChange],\n );\n\n const unselectColor = useCallback(\n (ev) => {\n ev.stopPropagation();\n setCurrentValue('');\n onChange && onChange({ value: '' });\n },\n [onChange],\n );\n\n const handlePopup = useCallback(() => {\n if (disabled) return false;\n setPopup(true);\n }, [disabled]);\n\n return (\n <div\n className={'wx-121TgJ wx-colorselect ' + css}\n onClick={handlePopup}\n data-tooltip-text={tooltip}\n >\n <input\n className={\n 'wx-121TgJ wx-input' +\n (error ? ' wx-error' : '') +\n (popup ? ' wx-focus' : '')\n }\n title={title}\n value={currentValue}\n readOnly\n id={inputId}\n placeholder={placeholder}\n disabled={disabled}\n />\n\n {clear && currentValue && !disabled && (\n <i className=\"wx-121TgJ wx-clear wxi-close\" onClick={unselectColor}></i>\n )}\n\n {currentValue ? (\n <div\n className=\"wx-121TgJ wx-color wx-selected\"\n style={{ backgroundColor: currentValue || '#00a037' }}\n ></div>\n ) : (\n <div className=\"wx-121TgJ wx-empty wx-selected\"></div>\n )}\n\n {popup && (\n <Dropdown onCancel={() => setPopup(false)} {...dropdown}>\n <div className=\"wx-121TgJ wx-colors\">\n <div\n className=\"wx-121TgJ wx-empty\"\n onClick={(ev) => selectColor(ev, '')}\n ></div>\n {colors.map((color, index) => (\n <div\n key={index}\n className=\"wx-121TgJ wx-color\"\n style={{ backgroundColor: color }}\n onClick={(ev) => selectColor(ev, color)}\n ></div>\n ))}\n </div>\n </Dropdown>\n )}\n </div>\n );\n}\n","export function sliderMove(node, config) {\n const slider = node.firstChild;\n const { moveBlockSlider, moveLineSlider } = config || {};\n\n function down(ev) {\n move(ev);\n\n slider.focus();\n\n window.addEventListener('mousemove', move);\n window.addEventListener('mouseup', up);\n }\n\n function move(ev) {\n let x, y, dx, dy;\n\n const coords = node.getBoundingClientRect();\n x = coords.left;\n y = coords.top;\n\n dx = ev.clientX - x;\n dy = ev.clientY - y;\n\n if (moveBlockSlider) config.moveBlockSlider(dx, dy);\n if (moveLineSlider) config.moveLineSlider(dx);\n }\n\n function up() {\n slider.blur();\n\n window.removeEventListener('mousemove', move);\n window.removeEventListener('mouseup', up);\n }\n\n node.addEventListener('mousedown', down);\n\n return {\n destroy() {\n node.removeEventListener('mousedown', down);\n },\n };\n}\n","const colorTransformator = {\n _toHex: [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n ],\n toHex(number, length) {\n number = parseInt(number, 10);\n let str = '';\n while (number > 0) {\n str = this._toHex[number % 16] + str;\n number = Math.floor(number / 16);\n }\n while (str.length < length) str = `0${str}`;\n return str;\n },\n rgbToHex(rgb) {\n let arr = [];\n if (typeof rgb === 'string')\n rgb.replace(/[\\d+.]+/g, (v) => arr.push(parseFloat(v)));\n else if (Array.isArray(rgb)) arr = rgb;\n\n //transparent\n if (arr[3] === 0) return '';\n\n return arr\n .slice(0, 3)\n .map((n) => {\n return this.toHex(Math.floor(n), 2);\n })\n .join('');\n },\n hexToDec(hex) {\n return parseInt(hex, 16);\n },\n // only handles the six-digit hex color format\n hexToRgb(hex) {\n hex = hex.charAt(0) === '#' ? hex.slice(1) : hex;\n const rgbPairs = hex.match(/.{1,2}/g);\n\n let [r, g, b] = rgbPairs;\n\n r = this.hexToDec(r);\n g = this.hexToDec(g);\n b = this.hexToDec(b);\n\n return [r, g, b];\n },\n hsvToRgb(h, s, v) {\n let hi, f, p, q, t, r, g, b;\n hi = Math.floor(h / 60) % 6;\n f = h / 60 - hi;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n r = 0;\n g = 0;\n b = 0;\n switch (hi) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n default:\n break;\n }\n r = Math.floor(r * 255);\n g = Math.floor(g * 255);\n b = Math.floor(b * 255);\n\n return [r, g, b];\n },\n rgbToHsv(r, g, b) {\n let s, h, v;\n r /= 255;\n g /= 255;\n b /= 255;\n let min = Math.min(r, g, b);\n let max = Math.max(r, g, b);\n h = 0;\n s = max === 0 ? 0 : 1 - min / max;\n v = max;\n if (max === min) {\n h = 0;\n } else if (max === r && g >= b) {\n h = (60 * (g - b)) / (max - min) + 0;\n } else if (max === r && g < b) {\n h = (60 * (g - b)) / (max - min) + 360;\n } else if (max === g) {\n h = (60 * (b - r)) / (max - min) + 120;\n } else if (max === b) {\n h = (60 * (r - g)) / (max - min) + 240;\n }\n\n return [h, s, v];\n },\n hexToHvs(hex) {\n const rgb = this.hexToRgb(hex);\n return this.rgbToHsv(...rgb);\n },\n hvsToHex(h, v, s) {\n const rgb = this.hsvToRgb(h, v, s);\n return '#' + this.rgbToHex(rgb).toUpperCase();\n },\n};\n\nexport default colorTransformator;\n","const hexValidation = (str) => /^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(str);\n\nexport function parseColor(value) {\n if (!value) return null;\n\n value = value.toString(16);\n\n if (value.charAt(0) === '#') value = value.slice(1);\n\n if (hexValidation(value)) {\n if (value.length === 3) {\n value = value\n .slice(0, 3)\n .split('')\n .reduce((a, b) => a + b + b, '');\n }\n return `#${value.toUpperCase()}`;\n }\n\n return null;\n}\n","import { locale } from '@svar-ui/lib-dom';\nimport { en } from '@svar-ui/core-locales';\n\nexport function defaultLocale() {\n return locale(en);\n}\n","import {\n useState,\n useEffect,\n useRef,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport Button from './Button.jsx';\nimport { sliderMove } from './helpers/sliderMove.js';\nimport colorTransformator from './helpers/colorTransformator.js';\nimport { parseColor } from './helpers/colorValidation.js';\nimport { i18n } from '../context.js';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport './ColorBoard.css';\nimport { defaultLocale } from './helpers/locale.js';\n\nconst BLOCK = 'Block';\nconst LINE = 'Line';\n\nfunction ColorBoard({\n value: valueProp = '#65D3B3',\n button = false,\n css = '',\n onChange,\n}) {\n const _ = (useContext(i18n) || defaultLocale()).getGroup('core');\n\n const blockRef = useRef(null);\n const colorLineRef = useRef(null);\n\n const [blockTop, setBlockTop] = useState();\n const [blockLeft, setBlockLeft] = useState();\n const [hueColor, setHueColor] = useState();\n const [lineLeft, setLineLeft] = useState();\n\n const [value, setValue] = useWritableProp(valueProp);\n const [inputValue, setInputValue] = useState(valueProp); \n\n const moveBlockSliderRef = useRef(null);\n const moveLineSliderRef = useRef(null);\n\n const color = useMemo(() => parseColor(value) || '#65D3B3', [value]);\n const blockColor = useMemo(\n () => colorTransformator.hvsToHex(hueColor || 0, 1, 1),\n [hueColor],\n );\n\n const moveBlockSlider = useCallback(\n (dx, dy) => {\n const { width, height } = blockRef.current.getBoundingClientRect();\n\n if (dy < 0) dy = 0;\n else if (dy > height) dy = height;\n\n if (dx < 0) dx = 0;\n else if (dx > width) dx = width;\n\n setBlockTop(dy);\n setBlockLeft(dx);\n\n // Call setCurrentColor\n let _sValue, _vValue;\n\n const pxX = width / 100;\n const pxY = height / 100;\n\n _sValue = Math.ceil(dx / pxX) / 100;\n _vValue = Math.ceil(Math.abs(dy / pxY - 100)) / 100;\n\n const newValue = colorTransformator.hvsToHex(\n hueColor,\n _sValue,\n _vValue,\n );\n setValue(newValue);\n setInputValue(newValue);\n onChange && onChange({ value: newValue, input: true });\n },\n [color, hueColor, onChange],\n );\n\n const moveLineSlider = useCallback(\n (dx) => {\n const width = colorLineRef.current.getBoundingClientRect().width;\n\n if (dx < 0) dx = 0;\n else if (dx > width) dx = width;\n\n const h = Math.round((dx * 359) / width);\n const newHue = Math.max(Math.min(h, 359), 0);\n setHueColor(newHue);\n setLineLeft(dx);\n\n // Call setCurrentColor with lineSliderMove=true\n let _sValue, _vValue;\n [, _sValue, _vValue] = colorTransformator.hexToHvs(color);\n const newValue = colorTransformator.hvsToHex(newHue, _sValue, _vValue);\n setValue(newValue);\n setInputValue(newValue);\n onChange && onChange({ value: newValue, input: true });\n },\n [color, onChange],\n );\n\n moveBlockSliderRef.current = moveBlockSlider;\n moveLineSliderRef.current = moveLineSlider;\n\n const setSlidersPosition = useCallback((newColor) => {\n const [h, s, v] = colorTransformator.hexToHvs(newColor || color);\n setHueColor(h);\n\n if (blockRef.current) {\n const { width, height } = blockRef.current.getBoundingClientRect();\n\n if (colorLineRef.current) {\n setLineLeft(\n (h * colorLineRef.current.getBoundingClientRect().width) / 359,\n );\n }\n setBlockLeft(s * width);\n setBlockTop(Math.abs(height * (v - 1)));\n }\n }, [color]);\n\n const handleChange = useCallback(\n ({ target }) => {\n const newColor = parseColor(target.value);\n setInputValue(target.value);\n if (newColor) {\n setValue(newColor);\n onChange && onChange({ value: newColor, input: true });\n setSlidersPosition(newColor);\n }\n },\n [onChange, setSlidersPosition],\n );\n\n const handleSelect = useCallback(\n (ev) => {\n ev.stopPropagation();\n onChange && onChange({ value: color });\n },\n [color, onChange],\n );\n\n const keydown = useCallback(\n (ev) => {\n const slider = ev.target;\n const isSliderBlock = slider.getAttribute('data-slider') === BLOCK;\n const isSliderLine = slider.getAttribute('data-slider') === LINE;\n\n let css = window.getComputedStyle(slider);\n let left = parseFloat(css.left);\n let top = parseFloat(css.top);\n const code = ev.code;\n\n if (isSliderBlock) {\n switch (code) {\n case 'ArrowLeft': {\n left--;\n break;\n }\n case 'ArrowRight': {\n left++;\n break;\n }\n case 'ArrowDown': {\n top++;\n break;\n }\n case 'ArrowUp': {\n top--;\n break;\n }\n default:\n return;\n }\n\n moveBlockSlider(left, top);\n }\n\n if (isSliderLine) {\n if (code === 'ArrowLeft' || code === 'ArrowDown') left--;\n else if (code === 'ArrowRight' || code === 'ArrowUp') left++;\n else return;\n moveLineSlider(left);\n }\n\n ev.preventDefault();\n },\n [moveBlockSlider, moveLineSlider],\n );\n \n useEffect(() => {\n const destroy = [];\n if (blockRef.current) {\n destroy.push(\n sliderMove(blockRef.current, {\n moveBlockSlider: (dx, dy) => {\n moveBlockSliderRef.current?.(dx, dy);\n },\n }).destroy,\n );\n }\n if (colorLineRef.current) {\n destroy.push(\n sliderMove(colorLineRef.current, {\n moveLineSlider: (dx) => {\n moveLineSliderRef.current?.(dx);\n },\n }).destroy,\n );\n }\n requestAnimationFrame(()=> setSlidersPosition());\n return () => {\n destroy.forEach((d) => d());\n };\n }, []);\n const cssScope = 'wx-1yoKzq';\n\n return (\n <div className={cssScope + ' wx-colorboard ' + css}>\n <div\n className={cssScope + ' wx-color-block'}\n style={{ background: blockColor }}\n ref={blockRef}\n >\n <div\n className={cssScope + ' wx-color-block-slider wx-slider'}\n style={{\n background: color,\n top: blockTop + 'px',\n left: blockLeft + 'px',\n }}\n tabIndex={0}\n data-slider={BLOCK}\n onKeyDown={keydown}\n ></div>\n </div>\n <div className={cssScope + ' wx-color-line'} ref={colorLineRef}>\n <div\n className={cssScope + ' wx-color-line-slider wx-slider'}\n style={{ background: blockColor, left: lineLeft + 'px' }}\n tabIndex={0}\n data-slider={LINE}\n onKeyDown={keydown}\n ></div>\n </div>\n <div className={cssScope + ' wx-color-controls'}>\n <div\n className={cssScope + ' wx-color'}\n style={{ background: color }}\n ></div>\n <input\n type=\"text\"\n className={cssScope + ' wx-text'}\n value={inputValue}\n onChange={handleChange}\n />\n </div>\n {button && (\n <Button onClick={handleSelect} type=\"secondary\">\n {_('select')}\n </Button>\n )}\n </div>\n );\n}\n\nexport default ColorBoard;\n","import { useState } from 'react';\nimport Dropdown from './Dropdown.jsx';\nimport ColorBoard from './ColorBoard.jsx';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\n\nimport './ColorPicker.css';\n\nexport default function ColorPicker({\n value: propertyValue = '',\n id,\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n clear = false,\n css = '',\n onChange,\n dropdown = {},\n}) {\n const inputId = useInputId(id);\n let [value, setValue] = useWritableProp(propertyValue);\n const [popup, setPopup] = useState(false);\n\n function handlePopup() {\n if (disabled) return false;\n setPopup(true);\n }\n\n function selectColor(ev) {\n if (ev.input) return;\n\n setPopup(false);\n const newValue = ev.value;\n setValue(newValue);\n if (onChange) onChange({ value: newValue });\n }\n\n function unselectColor(ev) {\n ev.stopPropagation();\n setValue('');\n if (onChange) onChange({ value: '' });\n }\n\n return (\n <div\n className={'wx-mmT8WH wx-colorpicker ' + css}\n onClick={handlePopup}\n data-tooltip-text={tooltip}\n >\n <input\n className={\n 'wx-mmT8WH wx-input' +\n (error ? ' wx-error' : '') +\n (popup ? ' wx-focus' : '')\n }\n title={title}\n value={value}\n readOnly\n id={inputId}\n placeholder={placeholder}\n disabled={disabled}\n />\n <div className=\"wx-mmT8WH wx-color\" style={{ background: value }}></div>\n\n {clear && !disabled && value && (\n <i className=\"wx-mmT8WH wxi-close\" onClick={unselectColor}></i>\n )}\n\n {popup && (\n <Dropdown onCancel={() => setPopup(false)} {...dropdown}>\n <ColorBoard value={value} button=\"true\" onChange={selectColor} />\n </Dropdown>\n )}\n </div>\n );\n}\n","import { locateID } from '@svar-ui/lib-dom';\n\nexport function getListHandlers() {\n let navIndex = null;\n let isVisible = false;\n\n let virtualized = false;\n\n let list, options, navCallback, selectCallback;\n const init = (l, o, n, c, v) => {\n list = l;\n options = o;\n navCallback = n;\n selectCallback = c;\n virtualized = v;\n };\n\n const setNav = (index) => {\n navIndex = index;\n isVisible = navIndex !== null;\n navCallback(navIndex);\n };\n\n const scrollTo = (navIndex, ev) => {\n if (!virtualized && navIndex !== null && list) {\n const next = list.querySelectorAll(`.wx-list > .wx-item`)[navIndex];\n if (next) {\n next.scrollIntoView({ block: 'nearest' });\n if (ev) ev.preventDefault();\n }\n }\n };\n\n const navigate = (dir, ev) => {\n const index =\n dir === null\n ? null\n : Math.max(0, Math.min(navIndex + dir, options.length - 1));\n if (index === navIndex) return;\n setNav(index);\n\n if (list) scrollTo(index, ev);\n else requestAnimationFrame(() => scrollTo(index, ev));\n };\n\n const move = (ev) => {\n const id = locateID(ev);\n const index = options.findIndex((a) => a.id === id);\n\n if (index !== navIndex) {\n setNav(index);\n }\n };\n\n const keydown = (ev, position) => {\n switch (ev.code) {\n case 'Enter':\n if (isVisible) selectCallback();\n else setNav(0);\n break;\n\n case 'Space':\n if (!isVisible) setNav(0);\n break;\n\n case 'Escape':\n navCallback((navIndex = null));\n break;\n\n case 'Tab':\n navCallback((navIndex = null));\n break;\n\n case 'ArrowDown':\n navigate(isVisible ? 1 : position || 0, ev);\n break;\n\n case 'ArrowUp':\n navigate(isVisible ? -1 : position || 0, ev);\n break;\n\n default:\n break;\n }\n };\n\n return { move, keydown, init, navigate };\n}\n","import { useEffect, useState, useRef, useCallback, useMemo, memo } from 'react';\nimport { useContext } from 'react';\nimport { snippet } from '@svar-ui/lib-react';\nimport { getListHandlers } from './listnav';\nimport Dropdown from '../Dropdown.jsx';\nimport Checkbox from '../Checkbox.jsx';\nimport { i18n } from '../../context.js';\nimport './SuggestDropdown.css';\nimport { defaultLocale } from './locale.js';\n\nconst overscan = 10;\n\nconst ItemContent = memo(function ItemContent({ data, checkboxes, itemTemplate, value }) {\n return (\n <>\n {checkboxes && (\n <Checkbox\n id={data.id}\n css=\"wx-list-checkbox\"\n value={value && value.includes(data.id)}\n />\n )}\n {itemTemplate ? snippet(itemTemplate, { option: data }) : data.label}\n </>\n );\n});\n\nfunction ListContent({\n visibleItems,\n visibleRange,\n navIndex,\n checkboxes,\n itemTemplate,\n value,\n measureRefCallback,\n}) {\n return visibleItems.map((data, visibleIndex) => {\n const index = visibleRange.start + visibleIndex;\n return <div\n key={data.id}\n ref={visibleIndex === 0 ? measureRefCallback : undefined}\n className={`wx-233fr7 wx-item ${(index) === navIndex ? 'wx-focus' : ''}`}\n data-id={data.id}\n >\n <ItemContent\n data={data}\n checkboxes={checkboxes}\n itemTemplate={itemTemplate}\n value={value}\n />\n </div>\n\n });\n}\n\nexport default function SuggestDropdown({\n items = [],\n children,\n onSelect,\n onReady,\n virtualized = false,\n checkboxes,\n multiselect,\n value,\n ...rest\n}) {\n const list = useRef();\n const initialScrolled = useRef(false);\n const helpers = useRef(getListHandlers());\n\n const [navIndex, setNavIndex] = useState(null);\n const navIndexRef = useRef(navIndex);\n\n const [scrollTop, setScrollTop] = useState(0);\n const [itemHeight, setItemHeight] = useState(24);\n const isItemHeightInitialized = useRef(false);\n\n const _ = (useContext(i18n) || defaultLocale()).getGroup('core');\n\n // Keep refs current for use inside callbacks\n const itemsRef = useRef(items);\n useEffect(() => {\n itemsRef.current = items;\n }, [items]);\n\n const valueRef = useRef(value);\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n const itemHeightRef = useRef(0);\n useEffect(() => {\n itemHeightRef.current = itemHeight;\n }, [itemHeight]);\n\n const selectItem = useCallback((ev) => {\n if (ev) ev.stopPropagation();\n const currentItems = itemsRef.current;\n const currentValue = valueRef.current;\n const currentNavIndex = navIndexRef.current;\n let nextValue;\n const nextId = currentItems[currentNavIndex]?.id;\n if (multiselect) {\n if (currentValue && currentValue.includes(nextId)) {\n nextValue = currentValue.filter(i => i !== nextId);\n } else {\n nextValue = [...(currentValue || []), nextId];\n }\n } else {\n nextValue = nextId;\n }\n onSelect && onSelect({ id: nextValue });\n }, [multiselect, onSelect]);\n\n const selectItemRef = useRef(selectItem);\n useEffect(() => {\n selectItemRef.current = selectItem;\n }, [selectItem]);\n\n const scrollToVirtualized = useCallback((idx) => {\n if (list.current) {\n let newScrollTop = idx * itemHeightRef.current - list.current.clientHeight + itemHeightRef.current;\n setScrollTop(newScrollTop);\n list.current.scrollTop = newScrollTop;\n }\n }, [itemHeightRef.current]);\n\n const listRefCallback = useCallback(\n (el) => {\n list.current = el;\n if (virtualized) {\n if (el && !initialScrolled.current && navIndexRef.current !== null) {\n requestAnimationFrame(() => {\n if (list.current) {\n scrollToVirtualized(navIndexRef.current);\n initialScrolled.current = true;\n }\n });\n }\n if (!el) {\n initialScrolled.current = false;\n }\n }\n },\n [scrollToVirtualized]\n );\n\n const measureRefCallback = useCallback((node) => {\n if (!node) return;\n if (isItemHeightInitialized.current) return;\n \n const height = node.getBoundingClientRect().height;\n \n if (height) {\n setItemHeight(height);\n itemHeightRef.current = height;\n isItemHeightInitialized.current = true;\n }\n }, []);\n \n useEffect(() => {\n helpers.current.init(\n list.current,\n items,\n (i) => {\n setNavIndex(i);\n navIndexRef.current = i;\n },\n (ev) => selectItemRef.current(ev),\n virtualized,\n );\n }, [items, list.current, virtualized]);\n\n useEffect(() => {\n const navigateVirtualized = (dir, ev) => {\n helpers.current.navigate(dir, ev);\n scrollToVirtualized(navIndexRef.current);\n };\n\n const keydownVirtualized = (ev, dir) => {\n const currentNavIndex = navIndexRef.current;\n const currentItems = itemsRef.current;\n if (\n currentNavIndex !== 0 &&\n currentNavIndex !== currentItems.length - 1 &&\n (ev.key === 'ArrowDown' || ev.key === 'ArrowUp')\n )\n ev.preventDefault();\n helpers.current.keydown(ev, dir);\n\n if (list.current) {\n const isTargetVisibleTop = list.current.scrollTop <= navIndexRef.current * itemHeightRef.current;\n const isTargetVisibleBottom =\n list.current.scrollTop + list.current.clientHeight >=\n navIndexRef.current * itemHeightRef.current + itemHeightRef.current;\n\n if (!isTargetVisibleTop) {\n list.current.scrollTop = navIndexRef.current * itemHeightRef.current;\n setScrollTop(list.current.scrollTop);\n } else if (!isTargetVisibleBottom) {\n scrollToVirtualized(navIndexRef.current);\n }\n }\n };\n\n onReady &&\n onReady({\n navigate: virtualized ? navigateVirtualized : helpers.current.navigate,\n keydown: virtualized ? keydownVirtualized : helpers.current.keydown,\n move: helpers.current.move,\n });\n }, []);\n\n const dropdownKey = useRef(0);\n const prevItemsRef = useRef(items);\n if (prevItemsRef.current !== items) {\n prevItemsRef.current = items;\n dropdownKey.current += 1;\n }\n\n const onCancel = useCallback(() => {\n helpers.current.navigate(null);\n }, [helpers]);\n\n const handleScroll = useCallback((ev) => {\n if (virtualized) {\n setScrollTop(ev.target.scrollTop);\n }\n }, [virtualized]);\n\n const displayedItemsCount = useMemo(\n () => Math.ceil((list.current?.clientHeight || 0) / itemHeight),\n [itemHeight, scrollTop],\n );\n\n const visibleRange = useMemo(() => {\n if (!virtualized) return { start: 0, end: items.length };\n if (!items.length) return { start: 0, end: 0 };\n\n const start = Math.floor(scrollTop / itemHeight);\n const end = start + displayedItemsCount;\n\n return {\n start: Math.max(0, start - overscan),\n end: Math.min(items.length, end + overscan),\n };\n }, [virtualized, items, scrollTop, itemHeight, displayedItemsCount]);\n\n const visibleItems = useMemo(() => {\n if (!virtualized) return items;\n const { start, end } = visibleRange;\n return items.slice(start, end).map((item) => ({\n ...item,\n }));\n }, [virtualized, items, visibleRange]);\n\n const offsetTop = visibleRange.start * itemHeight;\n const totalHeight = items.length * itemHeight;\n\n useEffect(() => {\n if (virtualized) setScrollTop(0);\n }, [items, virtualized]);\n\n useEffect(() => {\n if (navIndex === null) {\n initialScrolled.current = false;\n }\n }, [navIndex]);\n\n if (navIndex === null) return null;\n\n return (\n <Dropdown key={dropdownKey.current} onCancel={onCancel} {...rest}>\n <div\n className=\"wx-233fr7 wx-list\"\n ref={listRefCallback}\n onClick={selectItem}\n onMouseMove={helpers.current.move}\n onScroll={handleScroll}\n >\n {items.length ? (\n virtualized ? (\n <div\n className=\"wx-233fr7 wx-list-wrapper\"\n style={{ height: `${totalHeight}px` }}\n >\n <div\n className=\"wx-233fr7 wx-list-content\"\n style={{ transform: `translateY(${offsetTop}px)` }}\n >\n <ListContent\n visibleRange={visibleRange}\n visibleItems={visibleItems}\n navIndex={navIndex}\n measureRefCallback={measureRefCallback}\n checkboxes={checkboxes}\n itemTemplate={children}\n value={value}\n />\n </div>\n </div>\n ) : (\n <ListContent\n visibleRange={visibleRange}\n visibleItems={visibleItems}\n navIndex={navIndex}\n measureRefCallback={measureRefCallback}\n checkboxes={checkboxes}\n itemTemplate={children}\n value={value}\n />\n )\n ) : (\n <div className=\"wx-233fr7 wx-no-data\">{_('No data')}</div>\n )}\n </div>\n </Dropdown>\n );\n}\n\n","import { useState, useRef, useMemo, useCallback } from 'react';\nimport List from './helpers/SuggestDropdown.jsx';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Combo.css';\n\nexport default function Combo({\n value: valueProp = '',\n id,\n options = [],\n textOptions = null,\n textField = 'label',\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n clear = false,\n css = '',\n children: kids,\n onChange,\n dropdown = {},\n}) {\n const inputId = useInputId(id);\n const navigate = useRef(null);\n const keydown = useRef(null);\n\n const [value, setValue] = useWritableProp(valueProp);\n const [filterActive, setFilterActive] = useState(false);\n const [textInput, setTextInput] = useState('');\n\n const inputElement = useRef(null);\n const hasFocus = useRef(false);\n\n // calculate the derived values\n const text = useMemo(() => {\n if (filterActive) return textInput;\n if (value || value === 0) {\n const option = (textOptions || options).find((a) => a.id === value);\n if (option) return option[textField];\n }\n return '';\n }, [filterActive, textInput, value, textOptions, options, textField]);\n\n const filteredOptions = useMemo(() => {\n if (!text || !filterActive) return options;\n\n return options.filter((i) =>\n i[textField].toLowerCase().includes(text.toLowerCase()),\n );\n }, [text, filterActive, options, textField]);\n\n const index = useCallback(\n () => filteredOptions.findIndex((a) => a.id === value),\n [filteredOptions, value],\n );\n\n const ready = useCallback((ev) => {\n navigate.current = ev.navigate;\n keydown.current = ev.keydown;\n }, []);\n\n const doSelect = useCallback(\n (id, effects) => {\n if (id || id === 0) {\n let selected = options.find((a) => a.id === id);\n setFilterActive(false);\n\n if (effects) navigate.current(null);\n\n if (selected && value !== selected.id) {\n const newValue = selected.id;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n }\n }\n\n if (!hasFocus.current && effects) inputElement.current.focus();\n },\n [options, value, onChange],\n );\n\n const selectByEvent = useCallback(\n ({ id }) => {\n doSelect(id, true);\n },\n [doSelect],\n );\n\n const doUnselect = useCallback(\n (ev) => {\n if (ev) ev.stopPropagation();\n\n setValue('');\n setFilterActive(false);\n onChange && onChange({ value: '' });\n },\n [onChange],\n );\n\n const selectByText = useCallback(\n (chunk) => {\n if (!options.length) return;\n if (chunk === '' && clear) {\n doUnselect();\n return;\n }\n\n let res = options.find((i) => i[textField] === chunk);\n if (!res) {\n res = options.find((i) =>\n i[textField].toLowerCase().includes(chunk.toLowerCase()),\n );\n }\n\n const id = res ? res.id : value || options[0].id;\n doSelect(id, false);\n },\n [options, textField, clear, value, doSelect, doUnselect],\n );\n\n const handleInput = useCallback(() => {\n setTextInput(inputElement.current.value);\n setFilterActive(true);\n\n if (filteredOptions.length) navigate.current(0);\n }, [filteredOptions.length, navigate]);\n\n const handleFocus = useCallback(() => {\n hasFocus.current = true;\n }, []);\n\n const handleBlur = useCallback(() => {\n hasFocus.current = false;\n setTimeout(() => {\n if (!hasFocus.current) selectByText(text);\n }, 200);\n }, [selectByText, text]);\n\n return (\n <div\n className={'wx-1j11Jk wx-combo ' + css}\n onClick={() => navigate.current(index())}\n onKeyDown={(ev) => keydown.current(ev, index())}\n title={title}\n data-tooltip-text={tooltip}\n >\n <input\n className={'wx-1j11Jk wx-input ' + (error ? 'wx-error' : '')}\n id={inputId}\n ref={inputElement}\n value={text}\n disabled={disabled}\n placeholder={placeholder}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n />\n\n {clear && !disabled && value ? (\n <i className=\"wx-1j11Jk wx-icon wxi-close\" onClick={doUnselect}></i>\n ) : (\n <i className=\"wx-1j11Jk wx-icon wxi-angle-down\"></i>\n )}\n\n {!disabled && (\n <List items={filteredOptions} onReady={ready} onSelect={selectByEvent} {...dropdown}>\n {({ option }) => <>{kids ? kids({ option }) : option[textField]}</>}\n </List>\n )}\n </div>\n );\n}\n","import { useCallback, useEffect, useRef, useMemo } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Text.css';\n\nexport default function Text({\n value: propsValue = '',\n id,\n readonly = false,\n focus = false,\n select = false,\n type = 'text',\n placeholder = '',\n disabled = false,\n error = false,\n title = '',\n tooltip,\n css = '',\n icon = '',\n clear = false,\n onChange,\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(propsValue);\n const inputRef = useRef(null);\n\n const cssString = useMemo(\n () =>\n icon && css.indexOf('wx-icon-left') === -1 ? 'wx-icon-right ' + css : css,\n [icon, css],\n );\n\n const hasLeftIcon = useMemo(\n () => icon && css.indexOf('wx-icon-left') !== -1,\n [icon, css],\n );\n\n useEffect(() => {\n const timer = setTimeout(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n if (select && inputRef.current) inputRef.current.select();\n }, 1);\n\n return () => clearTimeout(timer);\n }, [focus, select]);\n\n const oninput = useCallback(\n (e) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange && onChange({ value: newValue, input: true });\n },\n [onChange],\n );\n\n const ontextchange = useCallback(\n (ev) => onChange && onChange({ value: ev.target.value }),\n [onChange],\n );\n\n function clearValue(ev) {\n ev.stopPropagation();\n setValue('');\n onChange && onChange({ value: '' });\n }\n\n let inputType = type;\n if (type !== 'password' && type !== 'number') {\n inputType = 'text';\n }\n\n // MK :: EXTRACT\n useEffect(() => {\n const handler = ontextchange;\n const node = inputRef.current;\n node.addEventListener('change', handler);\n return () => {\n if (node) {\n node.removeEventListener('change', handler);\n }\n };\n }, [ontextchange]);\n\n return (\n <div\n className={`wx-hQ64J4 wx-text ${cssString} ${error ? 'wx-error' : ''} ${\n disabled ? 'wx-disabled' : ''\n } ${clear ? 'wx-clear' : ''}`}\n data-tooltip-text={tooltip}\n >\n <input\n className=\"wx-hQ64J4 wx-input\"\n ref={inputRef}\n id={inputId}\n readOnly={readonly}\n disabled={disabled}\n placeholder={placeholder}\n type={inputType}\n title={title}\n value={value}\n onInput={oninput}\n />\n\n {clear && !disabled && value ? (\n <>\n <i className=\"wx-hQ64J4 wx-icon wxi-close\" onClick={clearValue}></i>\n {hasLeftIcon && <i className={`wx-hQ64J4 wx-icon ${icon}`}></i>}\n </>\n ) : icon ? (\n <i className={`wx-hQ64J4 wx-icon ${icon}`}></i>\n ) : null}\n </div>\n );\n}\n","import { useContext, useMemo } from 'react';\nimport { dateToString, getDuodecade } from '@svar-ui/lib-dom';\nimport { i18n } from '../../context.js';\n\nfunction Header({ date, type, part, onShift }) {\n const { calendar, formats } = useContext(i18n).getRaw();\n\n const year = date.getFullYear();\n\n const label = useMemo(() => {\n switch (type) {\n case 'month':\n return dateToString(formats.monthYearFormat, calendar)(date);\n case 'year':\n return dateToString(formats.yearFormat, calendar)(date);\n case 'duodecade': {\n const { start, end } = getDuodecade(year);\n const yearFormat = dateToString(formats.yearFormat, calendar);\n return `${yearFormat(new Date(start, 0, 1))} - ${yearFormat(new Date(end, 11, 31))}`;\n }\n default:\n return '';\n }\n }, [date, type, year, calendar, formats]);\n\n function changeType() {\n onShift && onShift({ diff: 0, type });\n }\n\n return (\n <div className=\"wx-8HQVQV wx-header\">\n {part !== 'right' ? (\n <i\n className=\"wx-8HQVQV wx-pager wxi-angle-left\"\n onClick={() => onShift && onShift({ diff: -1, type })}\n />\n ) : (\n <span className=\"wx-8HQVQV wx-spacer\" />\n )}\n\n <span className=\"wx-8HQVQV wx-label\" onClick={changeType}>\n {label}\n </span>\n\n {part !== 'left' ? (\n <i\n className=\"wx-8HQVQV wx-pager wxi-angle-right\"\n onClick={() => onShift && onShift({ diff: 1, type })}\n />\n ) : (\n <span className=\"wx-8HQVQV wx-spacer\" />\n )}\n </div>\n );\n}\n\nimport './Header.css';\n\nexport default Header;\n","import './Button.css';\n\nexport default function Button({ onClick, children }) {\n return (\n <button className=\"wx-3s8W4d wx-button\" onClick={onClick}>\n {children}\n </button>\n );\n}\n","import { useContext, useMemo, useEffect, useRef } from 'react';\nimport { delegateClick } from '@svar-ui/lib-dom';\nimport { i18n } from '../../context.js';\nimport './Month.css';\nimport { defaultLocale } from '../helpers/locale.js';\n\nexport default function Month({\n value,\n current,\n part = '',\n markers = null,\n css = '',\n onCancel,\n onChange,\n}) {\n const locale = (useContext(i18n) || defaultLocale()).getRaw().calendar;\n const weekStart = (locale.weekStart || 7) % 7;\n const weekdays = locale.dayShort\n .slice(weekStart)\n .concat(locale.dayShort.slice(0, weekStart));\n\n const dv = (d, dm, dd) =>\n new Date(\n d.getFullYear(),\n d.getMonth() + (dm || 0),\n d.getDate() + (dd || 0),\n );\n let ranges = part !== 'normal';\n\n function isWeekEnd(date) {\n const d = date.getDay();\n return d === 0 || d === 6;\n }\n\n function getStart() {\n const start = dv(current, 0, 1 - current.getDate());\n start.setDate(start.getDate() - ((start.getDay() - (weekStart - 7)) % 7));\n return start;\n }\n function getEnd() {\n const end = dv(current, 1, -current.getDate());\n end.setDate(end.getDate() + ((6 - end.getDay() + weekStart) % 7));\n return end;\n }\n\n //MK : HACK\n const lastTime = useRef(0);\n function selectDate(date, e) {\n if (e.timeStamp === lastTime.current) return;\n lastTime.current = e.timeStamp;\n\n e.stopPropagation();\n if (onChange) onChange(new Date(date));\n if (onCancel) onCancel();\n }\n\n const date = useMemo(() => {\n if (part == 'normal') return [value ? dv(value).valueOf() : 0];\n return value\n ? [\n value.start ? dv(value.start).valueOf() : 0,\n value.end ? dv(value.end).valueOf() : 0,\n ]\n : [0, 0];\n }, [part, value]);\n\n const days = useMemo(() => {\n const start = getStart();\n const end = getEnd();\n const curMonth = current.getMonth();\n\n let days = [];\n for (let d = start; d <= end; d.setDate(d.getDate() + 1)) {\n const day = {\n day: d.getDate(),\n in: d.getMonth() === curMonth,\n date: d.valueOf(),\n };\n\n let css = '';\n css += !day.in ? ' wx-inactive' : '';\n css += date.indexOf(day.date) > -1 ? ' wx-selected' : '';\n\n if (ranges) {\n const s = day.date == date[0];\n const e = day.date == date[1];\n if (s && !e) css += ' wx-left';\n else if (e && !s) css += ' wx-right';\n\n if (day.date > date[0] && day.date < date[1]) css += ' wx-inrange';\n }\n\n css += isWeekEnd(d) ? ' wx-weekend' : '';\n if (markers) {\n const mark = markers(d);\n if (mark) css += ' ' + mark;\n }\n\n days.push({ ...day, css });\n }\n return days;\n }, [current, date, ranges, markers]);\n\n const delegateRef = useRef(null);\n let delegateHandler = useRef({});\n delegateHandler.current.click = selectDate;\n\n useEffect(() => {\n delegateClick(delegateRef.current, delegateHandler.current);\n }, []);\n\n return (\n <div className={`wx-398RBS wx-month ${css}`}>\n <div className=\"wx-398RBS wx-weekdays\">\n {weekdays.map((day) => (\n <div key={day} className=\"wx-398RBS wx-weekday\">\n {day}\n </div>\n ))}\n </div>\n <div className=\"wx-398RBS wx-days\" ref={delegateRef}>\n {days.map((day) => (\n <div\n key={day.date}\n className={`wx-398RBS wx-day ${day.css} ${!day.in ? 'wx-out' : ''}`}\n data-id={day.date}\n >\n {day.day}\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { useContext, useMemo, useCallback, useRef } from 'react';\nimport Button from './Button.jsx';\nimport { getPartValue } from './helpers';\nimport { i18n } from '../../context.js';\nimport './Year.css';\nimport { useWritableProp } from '@svar-ui/lib-react';\n\nexport default function Year({\n value: valueProp,\n current: currentProp,\n part,\n onCancel,\n onChange,\n onShift,\n}) {\n const defaultDate = useRef(new Date());\n const [value, setValue] = useWritableProp(valueProp || defaultDate.current);\n const [current, setCurrent] = useWritableProp(currentProp || defaultDate.current);\n\n const locale = useContext(i18n).getRaw().calendar;\n const months = locale.monthShort || [];\n\n const monthNum = useMemo(() => {\n return current.getMonth();\n }, [current]);\n\n const selectMonth = useCallback(\n (month, e) => {\n if (month !== null && month !== undefined) {\n e.stopPropagation();\n const newCurrent = new Date(current);\n newCurrent.setMonth(month);\n setCurrent(newCurrent);\n\n onShift && onShift({ current: newCurrent });\n }\n\n if (part === 'normal') setValue(new Date(current));\n\n onCancel && onCancel();\n },\n [current, part, onShift, onCancel],\n );\n\n const done = useCallback(() => {\n const date = new Date(getPartValue(value, part) || current);\n\n date.setMonth(current.getMonth());\n date.setFullYear(current.getFullYear());\n\n onChange && onChange(date);\n }, [value, current, part, onChange]);\n\n const handleMonthClick = useCallback(\n (e) => {\n const target = e.target.closest('[data-id]');\n if (target) {\n const month = parseInt(target.getAttribute('data-id'), 10);\n selectMonth(month, e);\n }\n },\n [selectMonth],\n );\n\n return (\n <>\n <div className={'wx-34U8T8 wx-months'} onClick={handleMonthClick}>\n {months.map((month, i) => (\n <div\n key={i}\n className={\n 'wx-34U8T8 wx-month' + (monthNum === i ? ' wx-current' : '')\n }\n data-id={i}\n >\n {month}\n </div>\n ))}\n </div>\n <div className={'wx-34U8T8 wx-buttons'}>\n <Button onClick={done}>{locale.done}</Button>\n </div>\n </>\n );\n}\n","import { useContext, useMemo, useRef, useEffect } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { delegateClick, getDuodecade } from '@svar-ui/lib-dom';\nimport Button from './Button.jsx';\nimport { getPartValue } from './helpers';\nimport { i18n } from '../../context.js';\nimport './Duodecade.css';\n\nconst cssScope = 'wx-1XEF33';\n\nconst Duodecade = ({ value, current, onCancel, onChange, onShift, part }) => {\n const _ = useContext(i18n).getRaw().calendar;\n\n const [currentState, setCurrent] = useWritableProp(current);\n const [valueState, setValue] = useWritableProp(value);\n\n const year = useMemo(() => currentState.getFullYear(), [currentState]);\n\n const years = useMemo(() => {\n const { start, end } = getDuodecade(year);\n const years = [];\n for (let y = start; y <= end; ++y) {\n years.push(y);\n }\n return years;\n }, [year]);\n\n const selectYears = {\n click: selectYear,\n };\n\n function selectYear(yearVal, e) {\n if (yearVal) {\n e.stopPropagation();\n const newCurrent = new Date(currentState);\n newCurrent.setFullYear(yearVal);\n setCurrent(newCurrent);\n\n onShift && onShift({ current: newCurrent });\n }\n\n if (part === 'normal') {\n setValue(new Date(currentState));\n }\n\n onCancel && onCancel();\n }\n\n function done() {\n const date = new Date(getPartValue(valueState, part) || currentState);\n\n date.setFullYear(currentState.getFullYear());\n\n onChange && onChange(date);\n }\n\n const containerRef = useRef(null);\n\n useEffect(() => {\n if (containerRef.current) {\n delegateClick(containerRef.current, selectYears);\n }\n }, []);\n\n return (\n <>\n <div className={cssScope + ' wx-years'} ref={containerRef}>\n {years.map((y, i) => (\n <div\n key={i}\n className={\n cssScope +\n ` wx-year ${year == y ? 'wx-current' : ''} ${i === 0 ? 'wx-prev-decade' : ''} ${i === 11 ? 'wx-next-decade' : ''}`\n }\n data-id={y}\n >\n {y}\n </div>\n ))}\n </div>\n <div className={cssScope + ' wx-buttons'}>\n <Button onClick={done}>{_.done}</Button>\n </div>\n </>\n );\n};\n\nexport default Duodecade;\n","import Month from './Month.jsx';\nimport Year from './Year.jsx';\nimport Duodecade from './Duodecade.jsx';\n\nexport const configs = {\n month: {\n component: Month,\n next: nextMonth,\n prev: prevMonth,\n },\n year: {\n component: Year,\n next: nextYear,\n prev: prevYear,\n },\n duodecade: {\n component: Duodecade,\n next: nextDuodecade,\n prev: prevDuodecade,\n },\n};\n\nfunction prevMonth(current) {\n current = new Date(current);\n current.setMonth(current.getMonth() - 1);\n return current;\n}\nfunction nextMonth(current) {\n current = new Date(current);\n current.setMonth(current.getMonth() + 1);\n return current;\n}\nfunction prevYear(current) {\n current = new Date(current);\n current.setFullYear(current.getFullYear() - 1);\n return current;\n}\nfunction nextYear(current) {\n current = new Date(current);\n current.setFullYear(current.getFullYear() + 1);\n return current;\n}\nfunction prevDuodecade(current) {\n current = new Date(current);\n current.setFullYear(current.getFullYear() - 10);\n return current;\n}\nfunction nextDuodecade(current) {\n current = new Date(current);\n current.setFullYear(current.getFullYear() + 10);\n return current;\n}\n\nexport function getPartValue(value, part) {\n let date;\n if (part === 'normal') date = value;\n else {\n const { start, end } = value;\n if (part === 'left') date = start;\n else if (part == 'right') date = end;\n else date = start ? end : start;\n }\n\n return date;\n}\n","import { useContext, useState, useMemo } from 'react';\nimport Header from './Header.jsx';\nimport Button from './Button.jsx';\nimport { configs } from './helpers';\nimport { i18n } from '../../context.js';\nimport './Panel.css';\n\nconst defaultButtons = ['clear', 'today'];\n\nfunction getButtonValue(btn) {\n if (btn === 'done') return -1;\n if (btn === 'clear') return null;\n if (btn === 'today') return new Date();\n}\n\nfunction Panel({\n value,\n current,\n onCurrentChange,\n part = 'normal',\n markers = null,\n buttons,\n css = '',\n onShift,\n onChange,\n}) {\n const _ = useContext(i18n).getGroup('calendar');\n\n const [type, setType] = useState('month');\n\n const buttonsList = Array.isArray(buttons)\n ? buttons\n : buttons\n ? defaultButtons\n : [];\n\n const selectDate = (ev, date) => {\n ev.preventDefault();\n onChange && onChange({ value: date });\n };\n\n const oncancel = () => {\n if (type === 'duodecade') setType('year');\n else if (type === 'year') setType('month');\n };\n\n const onShiftLocal = (ev) => {\n const { diff, current: newCurrent } = ev;\n\n if (diff === 0) {\n if (type === 'month') setType('year');\n else if (type === 'year') setType('duodecade');\n return;\n }\n if (diff) {\n const obj = configs[type];\n onCurrentChange(diff > 0 ? obj.next(current) : obj.prev(current));\n } else if (newCurrent) {\n onCurrentChange(newCurrent);\n }\n\n onShift && onShift();\n };\n\n const onChangeLocal = (value) => {\n setType('month');\n onChange && onChange({ select: true, value });\n };\n\n const CalendarView = useMemo(() => configs[type].component, [type]);\n\n return (\n <div\n className={`wx-2Gr4AS wx-calendar ${part !== 'normal' && part !== 'both' ? 'wx-part' : ''} ${css}`}\n >\n <div className=\"wx-2Gr4AS wx-wrap\">\n <Header date={current} part={part} type={type} onShift={onShiftLocal} />\n <div>\n <CalendarView\n value={value}\n current={current}\n onCurrentChange={onCurrentChange}\n part={part}\n markers={markers}\n onCancel={oncancel}\n onChange={onChangeLocal}\n onShift={onShiftLocal}\n />\n {type === 'month' && buttonsList.length > 0 && (\n <div className=\"wx-2Gr4AS wx-buttons\">\n {buttonsList.map((button) => (\n <div key={button} className=\"wx-2Gr4AS wx-button-item\">\n <Button\n onClick={(e) => selectDate(e, getButtonValue(button))}\n >\n {_(button)}\n </Button>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport default Panel;\n","import { useContext, useMemo } from 'react';\nimport { i18n } from './context';\nimport { locale } from '@svar-ui/lib-dom';\nimport { en } from '@svar-ui/core-locales';\n\nexport default function Component(props) {\n let { words = null, optional = false, children } = props;\n\n let l = useContext(i18n);\n const v = useMemo(() => {\n let t = l;\n if (!t || !t.extend) t = locale(en);\n if (words !== null) t = t.extend(words, optional);\n return t;\n }, [words, optional, l]);\n\n return <i18n.Provider value={v}>{children}</i18n.Provider>;\n}\n","import { useEffect, useCallback } from 'react';\nimport Panel from './calendar/Panel.jsx';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport Locale from '../Locale.jsx';\n\nfunction fixCurrent(current, value, setCurrent, force) {\n if (!current || force) {\n const newCurrent = value ? new Date(value) : new Date();\n newCurrent.setDate(1);\n setCurrent(newCurrent);\n } else {\n if (current.getDate() !== 1) {\n const newCurrent = new Date(current);\n newCurrent.setDate(1);\n setCurrent(newCurrent);\n }\n }\n}\n\nconst defaultButtons = ['clear', 'today'];\n\nexport default function Calendar({\n value: valueProp,\n current: currentProp,\n markers = null,\n buttons = defaultButtons,\n css = '',\n onChange,\n}) {\n const [value, setValue] = useWritableProp(valueProp);\n const [current, setCurrent] = useWritableProp(currentProp);\n\n useEffect(() => {\n fixCurrent(current, value, setCurrent, false);\n }, [value, current]);\n\n const onChangeLocal = useCallback(\n (v) => {\n const x = v.value;\n if (x) {\n setValue(new Date(x));\n fixCurrent(current, new Date(x), setCurrent, true);\n } else {\n setValue(null);\n }\n\n onChange && onChange({ value: x ? new Date(x) : null });\n },\n [onChange, current],\n );\n\n const onCurrentChangeLocal = useCallback(\n (v) => {\n setCurrent(v);\n },\n [setCurrent],\n );\n\n if (!current) return null;\n\n return (\n <Locale>\n <Panel\n value={value}\n current={current}\n markers={markers}\n buttons={buttons}\n css={css}\n onChange={onChangeLocal}\n onCurrentChange={onCurrentChangeLocal}\n />\n </Locale>\n );\n}\n","export function toDateDropdown(dropdown) {\n if (!dropdown) dropdown = {};\n if (!dropdown.width) dropdown.width = 'unset';\n return dropdown;\n}\n","import { useState, useEffect, useMemo, useContext } from 'react';\nimport { dateToString } from '@svar-ui/lib-dom';\nimport { i18n } from '../context.js';\n\nimport Text from './Text.jsx';\nimport Dropdown from './Dropdown.jsx';\nimport Calendar from './Calendar.jsx';\nimport './DatePicker.css';\nimport { defaultLocale } from './helpers/locale.js';\nimport { toDateDropdown } from './helpers/dropdown.js';\n\nconst defaultButtons = ['clear', 'today'];\n\nexport default function DatePicker({\n value: propValue,\n id,\n disabled = false,\n error = false,\n placeholder = '',\n format = '',\n buttons = defaultButtons,\n css = '',\n title = '',\n tooltip,\n editable = false,\n clear = false,\n onChange,\n dropdown = {},\n}) {\n const { calendar: calendarLocale, formats } = (\n useContext(i18n) || defaultLocale()\n ).getRaw();\n const f = format || formats?.dateFormat;\n let dateFormat =\n typeof f === 'function' ? f : dateToString(f, calendarLocale);\n\n const [value, setValue] = useState(propValue);\n const [popup, setPopup] = useState(false);\n\n // Update local value when prop value changes\n useEffect(() => {\n setValue(propValue);\n }, [propValue]);\n\n function oncancel() {\n setPopup(false);\n }\n\n function doChange(v) {\n // skip \"select\" event if the same value\n // or different objects with the same value\n const skipEvent =\n v === value ||\n (v && value && v.valueOf() === value.valueOf()) ||\n (!v && !value);\n\n setValue(v);\n if (!skipEvent) {\n onChange && onChange({ value: v });\n }\n\n // fire after on-click finished\n setTimeout(oncancel, 1);\n }\n\n const formattedValue = useMemo(\n () => (value ? dateFormat(value) : ''),\n [value, dateFormat],\n );\n\n function onchangeHandler({ value: v, input }) {\n if (!editable && !clear) return;\n if (input) return;\n\n // convert to date, but ignore empty string input\n let date =\n typeof editable === 'function' ? editable(v) : v ? new Date(v) : null;\n\n // if date is invalid ( incorrect text input ) then use old value\n // else use the entered date\n // in any case fallback to null, to prevent undefined as value\n date = isNaN(date) ? value || null : date || null;\n doChange(date);\n }\n\n // Handle scroll event on window\n useEffect(() => {\n const handleScroll = oncancel;\n window.addEventListener('scroll', handleScroll);\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n return (\n <div className=\"wx-1lKOFG wx-datepicker\" onClick={() => setPopup(true)}>\n <Text\n css={`wx-date-input ${css}`}\n title={title}\n tooltip={tooltip}\n value={formattedValue}\n id={id}\n readonly={!editable}\n disabled={disabled}\n error={error}\n placeholder={placeholder}\n onInput={oncancel}\n onChange={onchangeHandler}\n icon=\"wxi-calendar\"\n clear={clear}\n />\n\n {popup && !disabled && (\n <Dropdown\n onCancel={oncancel}\n {...toDateDropdown(dropdown)}\n >\n <Calendar\n buttons={buttons}\n value={value}\n onChange={(e) => doChange(e.value)}\n />\n </Dropdown>\n )}\n </div>\n );\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport Panel from './calendar/Panel';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport './RangeCalendar.css';\nimport Locale from '../Locale.jsx';\n\nconst defaultButtons = ['clear', 'today'];\n\nconst addMonth = (l, diff, rPrev) => {\n const r = new Date(l);\n r.setMonth(r.getMonth() + diff);\n if (rPrev && r.valueOf() === rPrev.valueOf()) return rPrev;\n return r;\n};\n\nconst initLeft = (startVal, currentVal) => {\n const v = new Date(startVal || currentVal || new Date());\n v.setDate(1);\n return v;\n};\n\nconst RangeCalendar = ({\n start: startProp,\n end: endProp,\n current,\n months = 2,\n markers = null,\n buttons = defaultButtons,\n css = '',\n onChange,\n}) => {\n const [start, setStart] = useWritableProp(startProp);\n const [end, setEnd] = useWritableProp(endProp);\n const [leftCurrent, setLeftCurrent] = useState(() => initLeft(start, current));\n const [rightCurrent, setRightCurrent] = useState(() =>\n addMonth(initLeft(start, current), 1),\n );\n\n const onLeft = useCallback((v) => {\n setLeftCurrent(() => {\n const newLeft = new Date(v);\n newLeft.setDate(1);\n setRightCurrent(addMonth(newLeft, 1));\n return newLeft;\n });\n }, []);\n\n const onRight = useCallback((v) => {\n setRightCurrent(() => {\n const newRight = new Date(v);\n newRight.setDate(1);\n setLeftCurrent(addMonth(newRight, -1));\n return newRight;\n });\n }, []);\n\n // Recompute left panel whenever start/current change\n useEffect(() => {\n onLeft(start ? new Date(start) : current || new Date());\n }, [start, current, onLeft]);\n\n const selectChange = useCallback(\n (ev) => {\n const v = ev.value;\n let s = start,\n e = end;\n const final = v === -1;\n if (!final) {\n if (ev.select) {\n if (!start || end) {\n setStart((s = v));\n setEnd((e = null));\n } else {\n if (start > v) {\n setEnd((e = start));\n setStart((s = v));\n } else {\n setEnd((e = v));\n }\n }\n } else {\n if (!v) {\n setStart((s = null));\n setEnd((e = null));\n } else {\n setStart((s = new Date(v)));\n setEnd((e = new Date(v)));\n }\n }\n }\n\n if (final || !buttons.includes('done'))\n onChange && onChange({ start: s, end: e });\n return [s, e];\n },\n [start, end, buttons, onChange],\n );\n\n const doChangeStart = useCallback(\n (v) => {\n const [s] = selectChange(v);\n if (s) onLeft(new Date(s));\n },\n [onLeft, start, end],\n );\n\n const doChangeEnd = useCallback(\n (v) => {\n const [, e] = selectChange(v);\n if (e) onRight(new Date(e));\n },\n [onRight, start, end],\n );\n\n if (months === 1) {\n return (\n <Locale>\n <Panel\n value={{ start, end }}\n current={leftCurrent}\n markers={markers}\n buttons={buttons}\n css={css}\n part=\"both\"\n onChange={doChangeStart}\n onCurrentChange={onLeft}\n />\n </Locale>\n );\n } else {\n return (\n <Locale>\n <div className={`wx-p2jCaW wx-rangecalendar ${css}`}>\n <div className=\"wx-p2jCaW wx-half\">\n <Panel\n value={{ start, end }}\n current={leftCurrent}\n markers={markers}\n buttons={false}\n part=\"left\"\n onChange={doChangeStart}\n onCurrentChange={onLeft}\n />\n </div>\n <div className=\"wx-p2jCaW wx-half\">\n <Panel\n value={{ start, end }}\n current={rightCurrent}\n markers={markers}\n buttons={buttons}\n part=\"right\"\n onChange={doChangeEnd}\n onCurrentChange={onRight}\n />\n </div>\n </div>\n </Locale>\n );\n }\n};\n\nexport default RangeCalendar;\n","import { useState, useEffect, useMemo, useContext, useCallback } from 'react';\nimport { dateToString } from '@svar-ui/lib-dom';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { i18n } from '../context.js';\n\nimport Text from './Text.jsx';\nimport Dropdown from './Dropdown.jsx';\nimport RangeCalendar from './RangeCalendar.jsx';\nimport { defaultLocale } from './helpers/locale.js';\nimport { toDateDropdown } from './helpers/dropdown.js';\n\nconst defaultButtons = ['clear', 'today'];\n\nconst DateRangePicker = ({\n value: valueProp,\n onChange,\n id,\n disabled = false,\n error = false,\n placeholder = '',\n css = '',\n title = '',\n tooltip,\n format = '',\n months = 2,\n buttons = defaultButtons,\n editable = false,\n clear = false,\n dropdown,\n}) => {\n const [value, setValue] = useWritableProp(valueProp);\n const { calendar: calendarLocale, formats } = (\n useContext(i18n) || defaultLocale()\n ).getRaw();\n\n const f = format || formats?.dateFormat;\n const dateFormat =\n typeof f === 'function' ? f : dateToString(f, calendarLocale);\n\n const [popup, setPopup] = useState(false);\n\n const onCancel = useCallback(() => {\n setPopup(false);\n }, []);\n\n const formattedValue = useMemo(() => {\n return value\n ? value.start\n ? dateFormat(value.start) +\n (value.end ? ` - ${dateFormat(value.end)}` : '')\n : dateFormat(value)\n : '';\n }, [value, dateFormat]);\n\n const start = useMemo(() => {\n return value ? value.start || null : null;\n }, [value]);\n\n const end = useMemo(() => {\n return value ? value.end || null : null;\n }, [value]);\n\n const doChange = useCallback(\n (d) => {\n const newValue = d.start || d.end ? { start: d.start, end: d.end } : null;\n\n // Handle both cases: either external setValue or onChange prop\n if (setValue) {\n setValue(newValue);\n } else {\n // Parent must handle value prop update via onChange\n }\n\n // fire after on-click finished\n if ((d.start && d.end) || (!d.start && !d.end)) {\n // FIXME - select event will trigger even if the same value\n if (onChange) {\n onChange({ value: newValue });\n }\n setTimeout(onCancel, 1);\n }\n },\n [onChange, onCancel, setValue],\n );\n\n const doInputChange = useCallback(\n (ev) => {\n if (!editable && !clear) return;\n\n const { value: v, input } = ev;\n if (input) return;\n\n const [s, e] = v.split(' -').map((a, i) => {\n const av = a.trim();\n let date =\n typeof editable === 'function'\n ? editable(av)\n : av\n ? new Date(av)\n : null;\n\n // if date is invalid ( incorrect text input ) then use old value\n // else use the entered date\n // in any case fallback to null, to prevent undefined as value\n let val = i === 0 ? start : end;\n return isNaN(date) ? (val ? val : null) : date || null;\n });\n\n doChange({ start: s, end: e });\n },\n [editable, clear, start, end, doChange],\n );\n\n useEffect(() => {\n const handleScroll = () => {\n onCancel();\n };\n\n window.addEventListener('scroll', handleScroll);\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [onCancel]);\n\n return (\n <div\n className={`wx-1b0WDQ wx-daterangepicker ${disabled ? 'wx-disabled' : ''} ${error ? 'wx-error' : ''}`}\n onClick={() => setPopup(true)}\n >\n <Text\n css={`wx-date-input ${css}`}\n title={title}\n tooltip={tooltip}\n value={formattedValue}\n id={id}\n readonly={!editable}\n disabled={disabled}\n placeholder={placeholder}\n error={error}\n onChange={doInputChange}\n icon=\"wxi-calendar\"\n clear={clear}\n />\n\n {popup && !disabled && (\n <Dropdown\n onCancel={onCancel}\n {...toDateDropdown(dropdown)}\n >\n <RangeCalendar\n onCancel={onCancel}\n buttons={buttons}\n start={start}\n end={end}\n months={months}\n onChange={doChange}\n />\n </Dropdown>\n )}\n </div>\n );\n};\n\nexport default DateRangePicker;\n\nimport './DateRangePicker.css';\n","import { useEffect, useRef, useState, useMemo } from 'react';\nimport { useHotkeys } from '@svar-ui/lib-react';\nimport Button from './Button.jsx';\nimport './Fullscreen.css';\n\nexport default function Fullscreen({\n hotkey = null,\n toggleButton,\n children,\n}) {\n const nodeRef = useRef(null);\n const [inFullscreen, setInFullscreen] = useState(false);\n\n const icon = useMemo(\n () => `wxi-${inFullscreen ? 'collapse' : 'expand'}`,\n [inFullscreen],\n );\n\n const toggleFullscreen = useRef(null);\n toggleFullscreen.current = () => {\n const node = nodeRef.current;\n if (!inFullscreen && node) {\n node.requestFullscreen();\n } else if (inFullscreen) {\n document.exitFullscreen();\n }\n setInFullscreen((prev) => !prev);\n };\n\n useHotkeys({ [hotkey]: () => toggleFullscreen.current() }, nodeRef);\n\n useEffect(() => {\n const setFullscreenState = () => {\n setInFullscreen(document.fullscreenElement === nodeRef.current);\n };\n\n document.addEventListener('fullscreenchange', setFullscreenState);\n return () => {\n document.removeEventListener('fullscreenchange', setFullscreenState);\n };\n }, []);\n\n return (\n <div className=\"wx-13aa5W wx-fullscreen\" ref={nodeRef} tabIndex={-1}>\n {children}\n {toggleButton ? (\n toggleButton(toggleFullscreen.current, inFullscreen)\n ) : (\n <Button css=\"wx-13aa5W wx-fullscreen-button\" onClick={toggleFullscreen.current}>\n <i className={`wx-13aa5W ${icon} wx-fullscreen-icon`}> </i>\n </Button>\n )}\n </div>\n );\n}\n","import './Icon.css';\n\nexport default function Icon({ css = '', title = '', tooltip, children, onClick }) {\n if (children) {\n return (\n <i\n title={title}\n role=\"img\"\n className={`wx-mdnST1 wx-icon ${css}`}\n onClick={onClick}\n data-tooltip-text={tooltip}\n >\n {children}\n </i>\n );\n } else {\n return (\n <i\n title={title}\n className={`wx-mdnST1 wx-icon ${css}`}\n onClick={onClick}\n data-tooltip-text={tooltip}\n />\n );\n }\n}\n","import { useState, useMemo, useRef, useCallback } from 'react';\nimport { useWritableProp, snippet } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport List from './helpers/SuggestDropdown.jsx';\nimport './MultiCombo.css';\n\nconst defaultValue = [];\n\nexport default function MultiCombo({\n id,\n value: valueProp = defaultValue,\n options = [],\n textOptions = null,\n textField = 'label',\n keepText = false,\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n checkboxes = false,\n css = '',\n onChange,\n children,\n dropdown = {},\n}) {\n const inputId = useInputId(id);\n const navigate = useRef(null);\n const keydown = useRef(null);\n\n const [value, setValue] = useWritableProp(valueProp);\n\n const [text, setText] = useState('');\n const [focus, setFocus] = useState(false);\n const inputElement = useRef(null);\n\n const selected = useMemo(() => {\n return value\n ? (textOptions || options).filter((i) => value.includes(i.id))\n : [];\n }, [value, textOptions, options]);\n\n const filterOptions = useMemo(() => {\n const o = options;\n return text\n ? o.filter((i) => i[textField].toLowerCase().includes(text.toLowerCase()))\n : o;\n }, [text, options, textField]);\n\n const onready = useCallback((ev) => {\n navigate.current = ev.navigate;\n keydown.current = ev.keydown;\n }, []);\n\n const input = useCallback(() => {\n if (filterOptions.length) navigate.current(0);\n else navigate.current(null);\n }, [filterOptions]);\n\n const onselect = useCallback(\n (ev) => {\n const { id } = ev;\n if (id) {\n setValue(id);\n if (!keepText) setText('');\n onChange && onChange({ value: id });\n inputElement.current.focus();\n }\n },\n [onChange, keepText],\n );\n\n const remove = useCallback(\n (id, ev) => {\n if (ev) ev.stopPropagation();\n\n const next = value.filter((i) => i !== id);\n setValue(next);\n onChange && onChange({ value: next });\n },\n [value, onChange],\n );\n\n const index = useCallback(\n () =>\n value && value.length\n ? filterOptions.findIndex((i) => i.id === value[0])\n : 0,\n [value, filterOptions],\n );\n\n const onClickHandler = useCallback(() => {\n if (!disabled) {\n inputElement.current.focus();\n navigate.current(index());\n }\n }, [disabled, index]);\n\n return (\n <div\n title={title}\n className={\n `wx-12Wj21 wx-multicombo ${css} ` +\n `${error ? 'wx-error' : ''} ${disabled ? 'wx-disabled' : ''} ${selected.length ? 'wx-not-empty' : ''} ${focus && !disabled ? 'wx-focus' : ''}`\n }\n onClick={onClickHandler}\n onKeyDown={(ev) => keydown.current(ev, index())}\n data-tooltip-text={tooltip}\n >\n <div className=\"wx-12Wj21 wx-wrapper\">\n <div className=\"wx-12Wj21 wx-tags\">\n {selected.map((tag) => (\n <div key={tag.id} className=\"wx-12Wj21 wx-tag\">\n {children ? snippet(children, { option: tag }) : tag[textField]}\n {!disabled && (\n <i\n className=\"wx-12Wj21 wx-icon wxi-close\"\n onClick={(ev) => remove(tag.id, ev)}\n ></i>\n )}\n </div>\n ))}\n </div>\n <div className=\"wx-12Wj21 wx-select\">\n <input\n className=\"wx-12Wj21 wx-input\"\n id={inputId}\n type=\"text\"\n value={text}\n onChange={(ev) => setText(ev.target.value)}\n onInput={input}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={() => setFocus(true)}\n onBlur={() => setFocus(false)}\n ref={inputElement}\n />\n <i className=\"wx-12Wj21 wx-icon wxi-angle-down\"></i>\n </div>\n </div>\n\n {!disabled && (\n <List\n items={filterOptions}\n multiselect={true}\n onReady={onready}\n onSelect={onselect}\n checkboxes={checkboxes}\n value={value}\n {...dropdown}\n >\n {({ option }) => (\n <>\n {children ? snippet(children, { option }) : option[textField]}\n </>\n )}\n </List>\n )}\n </div>\n );\n}\n","import { useContext } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { i18n } from '../context.js';\nimport './Pager.css';\nimport { defaultLocale } from './helpers/locale.js';\n\nconst Pager = ({\n total = 0,\n pageSize: initialPageSize = 20,\n value: initialValue = 1,\n css = '',\n onChange,\n}) => {\n const [pageSize, setPageSize] = useWritableProp(initialPageSize);\n const [value, setValue] = useWritableProp(initialValue);\n\n const _ = (useContext(i18n) || defaultLocale()).getGroup('core');\n\n const pageCount = Math.ceil(total / pageSize);\n const from = (value - 1) * pageSize;\n const to = Math.min(value * pageSize, total);\n\n const setInnerValue = (v, final) => {\n if (Number.isNaN(v)) return;\n\n if (!final) setValue(v);\n v = Math.max(1, Math.min(v, pageCount));\n if (final) setValue(v);\n\n if (v === value) return;\n setTimeout(() => {\n onChange &&\n onChange({\n value: v,\n from: (v - 1) * pageSize,\n to: Math.min(v * pageSize, total),\n pageSize: pageSize,\n });\n });\n };\n\n function setActivePage(id) {\n switch (id) {\n case 'first':\n setInnerValue(1);\n break;\n\n case 'prev':\n setInnerValue(value - 1);\n break;\n\n case 'next':\n setInnerValue(value + 1);\n break;\n\n case 'last':\n setInnerValue(pageCount);\n break;\n\n default:\n break;\n }\n }\n\n const onPageSizeInput = (e) => {\n const newValue = e.target.value * 1;\n if (Number.isNaN(newValue)) {\n return;\n }\n\n setPageSize(newValue);\n onChange && onChange({ value, from, to, pageSize: newValue });\n };\n\n return (\n <div className={`wx-35Np0p wx-pager ${css}`}>\n <div className=\"wx-35Np0p wx-left\">\n <span>{_('Rows per page')}: </span>\n <input\n type=\"number\"\n min={1}\n className=\"wx-35Np0p wx-input\"\n value={pageSize}\n onChange={onPageSizeInput}\n />\n </div>\n\n <div className=\"wx-35Np0p wx-center\">\n <i\n className={\n 'wx-35Np0p wx-icon wxi-angle-dbl-left' +\n (value === 1 ? ' wx-disabled' : '')\n }\n onClick={() => setActivePage('first')}\n ></i>\n <i\n className={\n 'wx-35Np0p wx-icon wxi-angle-left' +\n (value === 1 ? ' wx-disabled' : '')\n }\n onClick={() => setActivePage('prev')}\n ></i>\n <input\n type=\"text\"\n value={value}\n className=\"wx-35Np0p wx-input\"\n onChange={(e) => setInnerValue(e.target.value * 1)}\n onBlur={(e) => setInnerValue(e.target.value * 1, true)}\n />\n <i\n className={\n 'wx-35Np0p wx-icon wxi-angle-right' +\n (value === pageCount ? ' wx-disabled' : '')\n }\n onClick={() => setActivePage('next')}\n ></i>\n <i\n className={\n 'wx-35Np0p wx-icon wxi-angle-dbl-right' +\n (value === pageCount ? ' wx-disabled' : '')\n }\n onClick={() => setActivePage('last')}\n ></i>\n </div>\n\n <div className=\"wx-35Np0p wx-right\">\n {_('Total pages')}: {pageCount}\n </div>\n </div>\n );\n};\n\nexport default Pager;\n","import { useState } from 'react';\nimport { useInputId } from './helpers/getInputId.js';\nimport { useId } from 'react';\nimport './RadioButton.css';\n\nexport default function RadioButton({\n id,\n label = '',\n value: externalValue,\n name = '',\n inputValue = '',\n disabled = false,\n css = '',\n onChange,\n}) {\n const fallbackId = useId();\n const inputId = useInputId(id) || fallbackId;\n // Internal state for uncontrolled behavior\n const [internalValue, setInternalValue] = useState(false);\n\n // Determine which value to use (controlled vs uncontrolled)\n // For React, we need to handle both cases\n const isControlled = externalValue !== undefined;\n const currentValue = isControlled ? externalValue : internalValue;\n\n function handlerChange(ev) {\n const newValue = ev.target.checked;\n\n if (!isControlled) {\n setInternalValue(newValue);\n }\n\n if (newValue && onChange) {\n onChange({ value: true, inputValue });\n }\n }\n\n return (\n <div className={`wx-3lDF1s wx-radio ${css}`}>\n <input\n type=\"radio\"\n className=\"wx-3lDF1s wx-input\"\n id={inputId}\n disabled={disabled}\n name={name}\n value={inputValue}\n checked={currentValue}\n onChange={handlerChange}\n />\n <label htmlFor={inputId} className=\"wx-3lDF1s wx-label\">\n <span className=\"wx-3lDF1s wx-circle\"></span>\n {label && <span className=\"wx-3lDF1s wx-radio-text\">{label}</span>}\n </label>\n </div>\n );\n}\n","import { uid } from '@svar-ui/lib-dom';\nimport { useState, useEffect } from 'react';\nimport RadioButton from './RadioButton.jsx';\nimport { fieldId } from \"../context\";\nimport './RadioButtonGroup.css';\n\n\nexport default function RadioButtonGroup({\n options = [{}],\n value = '',\n onChange,\n type = '',\n css = '',\n}) {\n const name = uid();\n\n const [currentValue, setCurrentValue] = useState(value);\n\n useEffect(() => {\n setCurrentValue(value);\n }, [value]);\n\n function handleChange(ev) {\n const newValue = ev.inputValue;\n setCurrentValue(newValue);\n if (onChange) {\n onChange({ value: newValue });\n }\n }\n\n return (\n <fieldId.Provider value={null}>\n <div className={`wx-38w70j wx-radiogroup ${type && `wx-${type}`} ${css}`}>\n {options.map((option) => (\n <div key={option.id} className=\"wx-38w70j wx-item\">\n <RadioButton\n label={option.label}\n inputValue={option.id}\n value={currentValue === option.id}\n name={name}\n onChange={handleChange}\n />\n </div>\n ))}\n </div>\n </fieldId.Provider>\n );\n}\n","import { useRef, useCallback, useMemo } from 'react';\nimport List from './helpers/SuggestDropdown.jsx';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport './RichSelect.css';\n\nexport default function RichSelect({\n value: propertyValue = '',\n options = [],\n textOptions = null,\n placeholder = '',\n disabled = false,\n error = false,\n title = '',\n tooltip,\n textField = 'label',\n clear = false,\n css = '',\n children: kids,\n onChange,\n dropdown = {},\n}) {\n const navigate = useRef(null);\n const keydown = useRef(null);\n let [value, setValue] = useWritableProp(propertyValue);\n\n function ready(ev) {\n navigate.current = ev.navigate;\n keydown.current = ev.keydown;\n }\n\n const selected = useMemo(() => {\n return value || value === 0\n ? (textOptions || options).find((a) => a.id === value)\n : null;\n }, [value, textOptions, options]);\n\n const select = useCallback(\n ({ id }) => {\n if (id || id === 0) {\n setValue(id);\n navigate.current(null);\n onChange && onChange({ value: id });\n }\n },\n [setValue, onChange],\n );\n\n const unselect = useCallback(\n (ev) => {\n ev.stopPropagation();\n setValue('');\n onChange && onChange({ value: '' });\n },\n [setValue, onChange],\n );\n\n const index = useCallback(() => {\n return options.findIndex((a) => a.id === value);\n }, [options, value]);\n\n return (\n <div\n className={`wx-2YgblL wx-richselect ${css} ${error ? 'wx-2YgblL wx-error' : ''} ${disabled ? 'wx-2YgblL wx-disabled' : ''} ${!kids ? 'wx-2YgblL wx-nowrap' : ''}`}\n title={title}\n onClick={() => navigate.current(index())}\n onKeyDown={(ev) => keydown.current(ev, index())}\n tabIndex={0}\n data-tooltip-text={tooltip}\n >\n <div className=\"wx-2YgblL wx-label\">\n {selected ? (\n kids ? (\n kids(selected)\n ) : (\n selected[textField]\n )\n ) : placeholder ? (\n <span className=\"wx-2YgblL wx-placeholder\">{placeholder}</span>\n ) : (\n '\\u00A0'\n )}\n </div>\n\n {clear && !disabled && value ? (\n <i className=\"wx-2YgblL wx-icon wxi-close\" onClick={unselect} />\n ) : (\n <i className=\"wx-2YgblL wx-icon wxi-angle-down\" />\n )}\n\n {!disabled && (\n <List items={options} onReady={ready} onSelect={select} {...dropdown}>\n {({ option }) => (kids ? kids(option) : option[textField])}\n </List>\n )}\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { snippet } from '@svar-ui/lib-react';\nimport './Segmented.css';\n\nconst Segmented = ({\n options = [],\n value = '',\n css = '',\n children,\n onChange,\n}) => {\n // Note: Using additional state for controlled/uncontrolled handling since React doesn't allow direct prop mutation\n const [internalValue, setInternalValue] = useState(value);\n\n const handleClick = (id) => {\n setInternalValue(id);\n if (onChange) {\n onChange({ value: id });\n }\n };\n\n // Ensure internal value stays in sync with external value changes\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n return (\n <div className={'wx-0hMO7P' + ` wx-segmented ${css}`}>\n {options.map((option) => (\n <button\n key={option.id}\n className={\n 'wx-0hMO7P' +\n ` wx-segment ${option.css} ${option.id === internalValue ? 'wx-selected' : ''}`\n }\n title={option.title}\n onClick={() => handleClick(option.id)}\n data-tooltip-text={option.tooltip}\n >\n {children ? (\n snippet(children, { option })\n ) : (\n <>\n {option.icon && (\n <i\n className={\n 'wx-0hMO7P' +\n ` wx-icon ${option.icon} ${!option.label ? 'wx-only' : ''}`\n }\n ></i>\n )}\n {option.label && (\n <span className=\"wx-0hMO7P wx-label\">{option.label}</span>\n )}\n </>\n )}\n </button>\n ))}\n </div>\n );\n};\n\nexport default Segmented;\n","import { useState, useCallback } from 'react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Select.css';\n\nexport default function Select({\n value: valueProp,\n options = [],\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n textField = 'label',\n clear = false,\n id,\n css = '',\n onChange,\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useState(valueProp || '');\n\n const handleChange = useCallback(\n (event) => {\n const newValue = event.target.value;\n setValue(newValue);\n if (onChange) onChange({ value: newValue });\n },\n [onChange],\n );\n\n const unselect = useCallback(() => {\n setValue('');\n if (onChange) onChange({ value: '' });\n }, [onChange]);\n\n return (\n <div\n className={'wx-2yx1Fo wx-select-box ' + css}\n data-tooltip-text={tooltip}\n >\n <select\n id={inputId}\n value={value}\n disabled={disabled}\n className={`wx-2yx1Fo wx-select ${error ? 'wx-2yx1Fo wx-error' : ''}`}\n title={title}\n onChange={handleChange}\n >\n <option value=\"\">{placeholder}</option>\n {options.map((option) => (\n <option key={option.id} value={option.id}>\n {option[textField]}\n </option>\n ))}\n </select>\n\n {clear && !disabled && value ? (\n <i className=\"wx-2yx1Fo wx-icon wxi-close\" onClick={unselect}></i>\n ) : (\n <i className=\"wx-2yx1Fo wx-icon wxi-angle-down\"></i>\n )}\n </div>\n );\n}\n","import { useEffect, useMemo, useRef } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Slider.css';\n\nexport default function Slider({\n id,\n label = '',\n css = '',\n min = 0,\n max = 100,\n value: initialValue = 0,\n step = 1,\n title = '',\n tooltip,\n disabled = false,\n onChange,\n width = \"\",\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(initialValue);\n const previous = useRef({ value: value, input: value });\n\n const progress = useMemo(\n () => ((value - min) / (max - min)) * 100 + '%',\n [value, min, max],\n );\n\n const bgStyle = useMemo(() => {\n return disabled\n ? ''\n : `linear-gradient(90deg, var(--wx-slider-primary) 0% ${progress}, var(--wx-slider-background) ${progress} 100%)`;\n }, [disabled, progress]);\n\n function oninput({ target }) {\n const newValue = target.value * 1;\n setValue(newValue);\n onChange &&\n onChange({\n value: newValue,\n previous: previous.current.input,\n input: true,\n });\n previous.current.input = newValue;\n }\n\n function onslider({ target }) {\n const newValue = target.value * 1;\n setValue(newValue);\n onChange && onChange({ value: newValue, previous: previous.current.value });\n previous.current.value = newValue;\n }\n\n // Sync if props.value changes externally\n useEffect(() => {\n setValue(initialValue);\n }, [initialValue]);\n\n const inputRef = useRef(null);\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.addEventListener('change', onslider);\n return () => {\n if (inputRef.current) {\n inputRef.current.removeEventListener('change', onslider);\n }\n };\n }\n }, [inputRef, onslider]);\n\n const style = {...(width && { width })};\n\n return (\n <div\n className={`wx-2EDJ8G wx-slider ${css}`}\n style={style}\n title={title}\n data-tooltip-text={tooltip}\n >\n {label && (\n <label className=\"wx-2EDJ8G wx-label\" htmlFor={inputId}>\n {label}\n </label>\n )}\n <div className=\"wx-2EDJ8G wx-inner\">\n <input\n id={inputId}\n className=\"wx-2EDJ8G wx-input\"\n type=\"range\"\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n value={value}\n onInput={oninput}\n style={{ background: bgStyle }}\n ref={inputRef}\n />\n </div>\n </div>\n );\n}\n","import { useCallback } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Switch.css';\n\nexport default function Switch({\n id,\n value: initialValue = false,\n disabled = false,\n css = '',\n onChange,\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(initialValue);\n\n const handleChange = useCallback(\n (event) => {\n const newValue = event.target.checked;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n },\n [onChange],\n );\n\n return (\n <label className={`wx-2dAR5c wx-switch ${css}`}>\n <input\n className=\"wx-2dAR5c wx-input\"\n type=\"checkbox\"\n checked={value}\n onChange={handleChange}\n disabled={disabled}\n id={inputId}\n />\n <span className=\"wx-2dAR5c wx-box\" />\n </label>\n );\n}\n","import { useWritableProp } from '@svar-ui/lib-react';\nimport './Tabs.css';\n\nconst Tabs = ({\n options = [],\n value: propValue = '',\n type = 'top',\n css = '',\n onChange,\n}) => {\n const [value, setValue] = useWritableProp(propValue);\n\n const handleClick = (optionId) => {\n setValue(optionId);\n if (onChange) {\n onChange({ value: optionId });\n }\n };\n\n return (\n <div className={'wx-138fWJ ' + `wx-tabs wx-${type} ${css}`}>\n {options.map((option) => (\n <button\n key={option.id}\n className={\n 'wx-138fWJ ' +\n `wx-tab ${option.css} ${option.id === value ? 'wx-active' : ''}`\n }\n title={option.title}\n onClick={() => handleClick(option.id)}\n data-tooltip-text={option.tooltip}\n >\n {option.icon && (\n <i\n className={\n 'wx-138fWJ ' +\n `wx-icon ${option.icon} ${!option.label ? 'wx-only' : ''}`\n }\n ></i>\n )}\n {option.label && (\n <span className=\"wx-138fWJ wx-label\">{option.label}</span>\n )}\n </button>\n ))}\n </div>\n );\n};\n\nexport default Tabs;\n","import { useCallback } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Counter.css';\n\nconst Counter = ({\n id,\n value: initialValue = 0,\n step = 1,\n min = 0,\n max = Infinity,\n error = false,\n disabled = false,\n readonly = false,\n css = '',\n tooltip,\n onChange,\n}) => {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(initialValue);\n\n const dec = useCallback(() => {\n if (readonly || value <= min) return;\n const newValue = value - step;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n }, [value, readonly, min, step, onChange]);\n\n const inc = useCallback(() => {\n if (readonly || value >= max) return;\n const newValue = value + step;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n }, [value, readonly, max, step, onChange]);\n\n const blur = useCallback(() => {\n if (!readonly) {\n const tValue =\n Math.round(Math.min(max, Math.max(value, min)) / step) * step;\n const newValue = isNaN(tValue) ? Math.max(min, 0) : tValue;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n }\n }, [readonly, value, max, min, step, onChange]);\n\n const input = useCallback(\n (e) => {\n const newValue = e.target.value * 1;\n setValue(newValue);\n onChange && onChange({ value: newValue, input: true });\n },\n [onChange],\n );\n\n return (\n <div\n className={\n 'wx-22t21n ' +\n `wx-counter ${css} ${disabled ? 'wx-disabled' : ''} ${readonly ? 'wx-readonly' : ''} ${error ? 'wx-error' : ''}`\n }\n data-tooltip-text={tooltip}\n >\n <button\n aria-label=\"-\"\n className={'wx-22t21n ' + 'wx-btn wx-btn-dec'}\n disabled={disabled}\n onClick={dec}\n >\n <svg\n className={'wx-22t21n ' + 'wx-dec'}\n width=\"12\"\n height=\"2\"\n viewBox=\"0 0 12 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M11.2501 1.74994H0.750092V0.249939H11.2501V1.74994Z\" />\n </svg>\n </button>\n <input\n id={inputId}\n type=\"text\"\n className={'wx-22t21n ' + 'wx-input'}\n disabled={disabled}\n readOnly={readonly}\n required\n value={value}\n onBlur={blur}\n onInput={input}\n />\n <button\n aria-label=\"-\"\n className={'wx-22t21n ' + 'wx-btn wx-btn-inc'}\n disabled={disabled}\n onClick={inc}\n >\n <svg\n className={'wx-22t21n ' + 'wx-inc'}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.2501\n\t\t\t\t\t\t\t\t6.74994H6.75009V11.2499H5.25009V6.74994H0.750092V5.24994H5.25009V0.749939H6.75009V5.24994H11.2501V6.74994Z\"\n />\n </svg>\n </button>\n </div>\n );\n};\n\nexport default Counter;\n","import './Notice.css';\n\nexport default function Notice({ notice = {} }) {\n function onRemove() {\n if (notice.remove) notice.remove();\n }\n\n return (\n <div\n className={`wx-11sNg5 wx-notice wx-${notice.type ? notice.type : ''}`}\n role=\"status\"\n aria-live=\"polite\"\n >\n <div className=\"wx-11sNg5 wx-text\">{notice.text}</div>\n <div className=\"wx-11sNg5 wx-button\">\n <i className=\"wx-11sNg5 wxi-close\" onClick={onRemove} />\n </div>\n </div>\n );\n}\n","import Notice from './Notice.jsx';\nimport './Notices.css';\n\nexport default function Notices({ data = [] }) {\n return (\n <div className=\"wx-3nwoO9 wx-notices\">\n {data.map((notice) => (\n <Notice key={notice.id} notice={notice} />\n ))}\n </div>\n );\n}\n","import { useRef, useEffect, useContext } from 'react';\nimport Button from './Button.jsx';\nimport { i18n } from '../context.js';\nimport './Modal.css';\nimport { defaultLocale } from './helpers/locale.js';\n\nexport default function Modal({\n title = '',\n buttons = ['cancel', 'ok'],\n header,\n children,\n footer,\n css = '',\n onConfirm,\n onCancel,\n}) {\n const _ = (useContext(i18n) || defaultLocale()).getGroup('core');\n const modal = useRef(null);\n\n useEffect(() => {\n modal.current?.focus();\n }, []);\n\n function keydown(ev) {\n switch (ev.code) {\n case 'Enter': {\n const from = ev.target.tagName;\n if (from === 'TEXTAREA' || from === 'BUTTON') return;\n onConfirm && onConfirm({ event: ev });\n break;\n }\n case 'Escape':\n onCancel && onCancel({ event: ev });\n break;\n }\n }\n\n function onclick(ev, button) {\n const pack = { event: ev, button };\n if (button === 'cancel') {\n onCancel && onCancel(pack);\n } else {\n onConfirm && onConfirm(pack);\n }\n }\n\n return (\n <div\n className={`wx-1FxkZa wx-modal ${css}`}\n ref={modal}\n tabIndex={0}\n onKeyDown={keydown}\n >\n <div className=\"wx-1FxkZa wx-window\">\n {header ? (\n header\n ) : title ? (\n <div className=\"wx-1FxkZa wx-header\">{title}</div>\n ) : null}\n\n <div>{children}</div>\n\n {footer\n ? footer\n : buttons && (\n <div className=\"wx-1FxkZa wx-buttons\">\n {buttons.map((button) => (\n <div key={button} className=\"wx-1FxkZa wx-button\">\n <Button\n type={`block ${button === 'ok' ? 'primary' : 'secondary'}`}\n onClick={(ev) => onclick(ev, button)}\n >\n {_(button)}\n </Button>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { useState, useImperativeHandle, forwardRef } from 'react';\nimport Notices from './Notices.jsx';\nimport Modal from './Modal.jsx';\n\nimport { uid } from '@svar-ui/lib-dom';\n\nfunction Globals({ children }, apiRef) {\n const [modal, setModal] = useState(null);\n const [notices, setNotices] = useState([]);\n\n useImperativeHandle(\n apiRef,\n () => ({\n showModal: (msg) => {\n const modalObj = { ...msg };\n setModal(modalObj);\n return new Promise((res, rej) => {\n modalObj.resolve = (v) => {\n setModal(null);\n res(v);\n };\n modalObj.reject = (v) => {\n setModal(null);\n rej(v);\n };\n });\n },\n showNotice: (msg) => {\n msg = { ...msg };\n msg.id = msg.id || uid();\n msg.remove = () =>\n setNotices((prev) => prev.filter((a) => a.id !== msg.id));\n\n if (msg.expire != -1) {\n setTimeout(msg.remove, msg.expire || 5100);\n }\n setNotices((prev) => [...prev, msg]);\n },\n }),\n [],\n );\n\n return (\n <>\n {children}\n {modal && (\n <Modal\n title={modal.title}\n buttons={modal.buttons}\n onConfirm={modal.resolve}\n onCancel={modal.reject}\n >\n {modal.message}\n </Modal>\n )}\n <Notices data={notices} />\n </>\n );\n}\n\nconst GlobalsComponentWithRef = forwardRef(Globals);\nexport default GlobalsComponentWithRef;\n","import { useMemo, useRef } from 'react';\nimport { helpers } from './context';\nimport Globals from './components/Globals.jsx';\n\nexport default function Component(props) {\n let { children } = props;\n let api = useRef();\n\n const l = useMemo(() => {\n return {\n showNotice: (msg) => api.current.showNotice(msg),\n showModal: (msg) => api.current.showModal(msg),\n };\n }, []);\n\n return (\n <helpers.Provider value={l}>\n <Globals ref={api}>{children}</Globals>\n </helpers.Provider>\n );\n}\n","import { useMemo } from 'react';\nimport { uid } from '@svar-ui/lib-dom';\nimport { fieldId } from \"../context\";\nimport './Field.css';\n\nexport default function Field({\n label = '',\n position = '',\n error = false,\n type = '',\n required = false,\n id,\n css = '',\n children,\n width = \"\",\n}) {\n const inputId = useMemo(() => (id === undefined ? uid() : id), [id]);\n const style = {...(width && { width })};\n\n return (\n <fieldId.Provider value={inputId}>\n <div\n style={style}\n className={`wx-2oVUvC wx-field wx-${position} ${css} ${error ? 'wx-error' : ''} ${required ? 'wx-required' : ''}`.trim()}\n >\n {label && (\n inputId\n ? <label className=\"wx-2oVUvC wx-label\" htmlFor={inputId}>{label}</label>\n : <div className=\"wx-2oVUvC wx-label\">{label}</div>\n )}\n <div className={`wx-2oVUvC wx-field-control wx-${type}`}>\n {children}\n </div>\n </div>\n </fieldId.Provider>\n );\n}\n","import { useCallback, useMemo } from 'react';\nimport { snippet, useWritableProp } from '@svar-ui/lib-react';\nimport Button from './Button.jsx';\n\nconst TwoState = ({\n value: initialValue = false,\n type = '',\n icon = '',\n disabled = false,\n iconActive = '',\n onClick,\n title = '',\n tooltip,\n css = '',\n text = '',\n textActive = '',\n children,\n active,\n onChange,\n}) => {\n const [value, setValue] = useWritableProp(initialValue);\n\n const typeStr = useMemo(() => {\n return (value ? 'pressed' : '') + (type ? ' ' + type : '');\n }, [value, type]);\n\n const handleClick = useCallback(\n (ev) => {\n let next = !value;\n if (onClick) onClick(ev);\n if (!ev.defaultPrevented) {\n setValue(next);\n onChange && onChange({ value: next });\n }\n },\n [value, onClick, onChange],\n );\n\n if (value && active) {\n return (\n <Button\n title={title}\n tooltip={tooltip}\n text={(value && textActive) || text}\n css={css}\n type={typeStr}\n icon={(value && iconActive) || icon}\n onClick={handleClick}\n disabled={disabled}\n >\n {snippet(active, { value })}\n </Button>\n );\n } else if (children) {\n return (\n <Button\n title={title}\n tooltip={tooltip}\n text={(value && textActive) || text}\n css={css}\n type={typeStr}\n icon={(value && iconActive) || icon}\n onClick={handleClick}\n disabled={disabled}\n >\n {children}\n </Button>\n );\n } else {\n return (\n <Button\n title={title}\n tooltip={tooltip}\n text={(value && textActive) || text}\n css={css}\n type={typeStr}\n icon={(value && iconActive) || icon}\n onClick={handleClick}\n disabled={disabled}\n />\n );\n }\n};\n\nexport default TwoState;\n","import { useState, useMemo, useContext, useCallback } from 'react';\nimport Field from './Field.jsx';\nimport Text from './Text.jsx';\nimport Dropdown from './Dropdown.jsx';\nimport Slider from './Slider.jsx';\nimport TwoState from './TwoState.jsx';\nimport { i18n } from '../context.js';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { dateToString } from '@svar-ui/lib-dom';\nimport './TimePicker.css';\nimport { defaultLocale } from './helpers/locale.js';\nimport { toDateDropdown } from './helpers/dropdown.js';\n\nconst defValue = new Date(0, 0, 0, 0, 0);\n\nexport default function TimePicker({\n value: propertyValue = defValue,\n id,\n title = '',\n tooltip,\n css = '',\n disabled = false,\n error = false,\n format = '',\n onChange,\n dropdown,\n}) {\n let [value, setValue] = useWritableProp(propertyValue);\n\n const { calendar: calendarLocale, formats } = (\n useContext(i18n) || defaultLocale()\n ).getRaw();\n const h12 = calendarLocale.clockFormat == 12;\n\n const maxH = 23;\n const maxM = 59;\n\n const timeFormat = useMemo(() => {\n const f = format || formats?.timeFormat;\n return typeof f === 'function' ? f : dateToString(f, calendarLocale);\n }, [format, formats, calendarLocale]);\n\n const zeroBased = useMemo(() => {\n return timeFormat(new Date(0, 0, 0, 1)).indexOf('01') != -1;\n }, [timeFormat]);\n\n const formatTime = (v, zeroBased) => {\n return (v < 10 && zeroBased ? `0${v}` : `${v}`).slice(-2);\n };\n\n const formatM = (v) => {\n return formatTime(v, true);\n };\n\n const getNumber = (v) => {\n return `${v}`.replace(/[^\\d]/g, '') || 0;\n };\n const formatH = (v) => {\n if (h12) {\n v = v % 12;\n if (v === 0) return '12';\n }\n return formatTime(v, zeroBased);\n };\n\n const update = useCallback((v, max) => {\n v = getNumber(v);\n return Math.min(v, max);\n }, []);\n\n const [popup, setPopup] = useState(null);\n\n const safeValue = value || defValue;\n\n const h = update(safeValue.getHours(), maxH);\n const m = update(safeValue.getMinutes(), maxM);\n\n const pm = h > 12;\n\n const hText = formatH(h);\n const mText = formatM(m);\n const textValue = useMemo(\n () => timeFormat(new Date(0, 0, 0, h, m)),\n [h, m, timeFormat],\n );\n\n const click = useCallback(() => {\n setPopup(true);\n }, []);\n\n const togglePM = useCallback(() => {\n const next = new Date(safeValue);\n next.setHours(next.getHours() + (pm ? -12 : 12));\n setValue(next);\n if (onChange) onChange({ value: next });\n }, [safeValue, pm, onChange]);\n\n const setHours = useCallback(\n ({ value: v }) => {\n if (safeValue.getHours() === v) return;\n\n const next = new Date(safeValue);\n next.setHours(v);\n setValue(next);\n if (onChange) onChange({ value: next });\n },\n [safeValue, onChange],\n );\n\n const setMinutes = useCallback(\n ({ value: v }) => {\n if (safeValue.getMinutes() === v) return;\n\n const next = new Date(safeValue);\n next.setMinutes(v);\n setValue(next);\n if (onChange) onChange({ value: next });\n },\n [safeValue, onChange],\n );\n\n const updateH = useCallback(\n (v) => {\n v = update(v, maxH);\n if (h12) {\n v = v * 1;\n if (v === 12) v = 0;\n if (pm) v += 12;\n }\n return v;\n },\n [update, h12, pm],\n );\n\n const oncancel = useCallback(() => {\n setPopup(null);\n }, []);\n\n return (\n <div\n className={`wx-7f497i wx-timepicker ${error ? 'wx-7f497i wx-error' : ''} ${disabled ? 'wx-7f497i wx-disabled' : ''}`}\n onClick={disabled ? undefined : click}\n style={{ cursor: disabled ? 'default' : 'pointer' }}\n >\n <Text\n id={id}\n css={`wx-date-input ${css}`}\n title={title}\n tooltip={tooltip}\n value={textValue}\n readonly={true}\n disabled={disabled}\n error={error}\n icon=\"wxi-clock\"\n />\n\n {popup && !disabled && (\n <Dropdown onCancel={oncancel} {...toDateDropdown(dropdown)}>\n <div className=\"wx-7f497i wx-wrapper\">\n <div className=\"wx-7f497i wx-timer\">\n <input\n className=\"wx-7f497i wx-digit\"\n value={hText}\n onChange={(ev) => {\n const val = updateH(ev.target.value);\n setHours({ value: val });\n }}\n />\n <div className=\"wx-7f497i wx-separator\">:</div>\n <input\n className=\"wx-7f497i wx-digit\"\n value={mText}\n onChange={(ev) => {\n const val = update(ev.target.value, maxM);\n setMinutes({ value: val });\n }}\n />\n {h12 && (\n <TwoState\n value={pm}\n onClick={togglePM}\n active={() => <span>pm</span>}\n >\n <span>am</span>\n </TwoState>\n )}\n </div>\n <Field width=\"unset\">\n <Slider\n label={calendarLocale.hours}\n value={h}\n width=\"unset\"\n onChange={setHours}\n max={maxH}\n />\n </Field>\n <Field width=\"unset\">\n <Slider\n label={calendarLocale.minutes}\n value={m}\n width=\"unset\"\n onChange={setMinutes}\n max={maxM}\n />\n </Field>\n </div>\n </Dropdown>\n )}\n </div>\n );\n}\n","import { useState, useEffect, useMemo, useRef } from 'react';\nimport { calculatePosition, getAbsParent } from '@svar-ui/lib-dom';\nimport Portal from './Portal.jsx';\nimport './Tooltip.css';\n\nfunction getSide(at) {\n if (at === 'point') return 'point';\n const split = at.split('-');\n return split[0];\n}\n\nfunction getAlign(at) {\n if (at === 'point') return 'center';\n const split = at.split('-');\n return split.length === 1 ? 'center' : split[1];\n}\n\nfunction readCSSPropertyInt(node, property, defaultValue) {\n const value = getComputedStyle(node).getPropertyValue(property);\n return parseInt(value) || defaultValue;\n}\n\nfunction Tooltip(props) {\n const {\n at = 'top-center',\n arrow = false,\n touch = false,\n overflow = false,\n delay = 300,\n content: Content = null,\n children,\n css = '',\n } = props;\n\n function defaultResolver(element) {\n if (overflow && element.scrollWidth <= element.clientWidth) return null;\n const text = element.getAttribute?.('data-tooltip-text');\n return text ? text : null;\n }\n const resolver = props.resolver || defaultResolver;\n\n const side = useMemo(() => getSide(at), [at]);\n const align = useMemo(() => getAlign(at), [at]);\n const resolvedAt = useMemo(() => {\n if (at === 'point') return 'point';\n return `${side}-${align}`;\n }, [at, side, align]);\n\n const areaNode = useRef(null);\n const isHovered = useRef(false);\n const [tooltipNode, setTooltipNode] = useState(null);\n const [match, setMatch] = useState(null); // { result, anchor, mouseX, mouseY }\n const [position, setPosition] = useState(null); // { x, y, z, side, arrowOffset }\n const [firstAnchor, setFirstAnchor] = useState(false);\n\n // keep a fresh copy of match for long-lived handlers (avoid stale closures)\n const matchRef = useRef(match);\n useEffect(() => {\n matchRef.current = match;\n }, [match]);\n\n // render only when there is displayable content\n const shouldRender = useMemo(\n () => match !== null && (!!match.result || Content != null),\n [match, Content],\n );\n\n function getPointOffset() {\n return readCSSPropertyInt(tooltipNode, '--wx-tooltip-point-offset', 14);\n }\n\n function getArrowSize() {\n return readCSSPropertyInt(tooltipNode, '--wx-tooltip-arrow-size', 6);\n }\n\n // Compute the CSS arrow offset relative to the anchor\n function getArrowOffset(arrowSize, result, rect, body) {\n if (side === 'point') return '50%';\n const bodyRect = body?.getBoundingClientRect() ?? { top: 0, left: 0 };\n const h = arrowSize / 2;\n\n let anchorPoint;\n let tooltipEdge;\n if (side === 'top' || side === 'bottom') {\n tooltipEdge = result.x - (body?.scrollLeft ?? 0) + bodyRect.left;\n if (align === 'start') anchorPoint = rect.left + arrowSize + h;\n else if (align === 'end') anchorPoint = rect.right - arrowSize - h;\n else anchorPoint = rect.left + rect.width / 2;\n } else {\n tooltipEdge = result.y - (body?.scrollTop ?? 0) + bodyRect.top;\n if (align === 'start') anchorPoint = rect.top + arrowSize + h;\n else if (align === 'end') anchorPoint = rect.bottom - arrowSize - h;\n else anchorPoint = rect.top + rect.height / 2;\n }\n\n return `${anchorPoint - tooltipEdge}px`;\n }\n\n // Positioning of the tooltip\n useEffect(() => {\n if (!tooltipNode || !match) return void setPosition(null);\n\n // Offset from the mouse cursor when at=\"point\"\n const offset = at === 'point' ? getPointOffset() : 0;\n\n // Calculate the position of the tooltip\n const result = calculatePosition(\n tooltipNode,\n match.anchor,\n resolvedAt,\n match.mouseX + offset,\n match.mouseY + offset,\n );\n\n if (result === null) return void setPosition(null);\n\n // Detect if calculatePosition flipped to the opposite side\n const anchorRect = match.anchor.getBoundingClientRect();\n const body = getAbsParent(tooltipNode);\n const realSide = getSide(result.at);\n\n // Add gap for the arrow if needed, using realSide for direction\n let arrowOffset = '50%';\n if (result && arrow && at !== 'point') {\n const arrowSize = getArrowSize();\n if (realSide === 'top') result.y -= arrowSize;\n else if (realSide === 'bottom') result.y += arrowSize;\n else if (realSide === 'left') result.x -= arrowSize;\n else if (realSide === 'right') result.x += arrowSize;\n arrowOffset = getArrowOffset(arrowSize, result, anchorRect, body);\n }\n\n // Submit the result to the position state\n const minZ = readCSSPropertyInt(tooltipNode, '--wx-tooltip-z-index', 1002);\n\n setPosition({\n x: Math.round(result.x),\n y: Math.round(result.y),\n z: Math.max(result.z, minZ),\n side: realSide,\n arrowOffset,\n });\n }, [tooltipNode, match, at, arrow, side, align, resolvedAt]);\n\n function walk(node, ev) {\n if (!isHovered.current) return null;\n\n // Disable tooltip on touch devices if prop touch == false\n const touchD =\n 'ontouchstart' in window || window.navigator.maxTouchPoints > 0;\n if (touchD && !touch) return null;\n\n for (; node && node !== areaNode.current; node = node.parentNode) {\n if (node.nodeType !== window.Node.ELEMENT_NODE) continue;\n\n const result = resolver(node, ev);\n if (result == null) continue;\n\n return {\n result,\n anchor: node,\n mouseX: ev.clientX,\n mouseY: ev.clientY,\n };\n }\n\n return null;\n }\n\n const timer = useRef(undefined);\n const hiding = useRef(false);\n function debounce(fn, ...args) {\n clearTimeout(timer.current);\n timer.current = setTimeout(fn, delay, ...args);\n }\n\n function onMouseMove(ev) {\n // (1) Ignore if the most closely hovered tooltip area is not this one (in case of nested tooltips)\n if (ev.target.closest('.wx-tooltip-area') !== areaNode.current) {\n isHovered.current = false;\n setMatch(null);\n clearTimeout(timer.current);\n return;\n }\n isHovered.current = true;\n\n const match = matchRef.current;\n\n // (2) If the cursor is still within the anchor element\n if (match?.anchor?.contains(ev.target)) {\n clearTimeout(timer.current);\n hiding.current = false;\n const result = resolver(ev.target, ev);\n if (result != null) {\n setMatch({\n result,\n anchor: ev.target,\n mouseX: ev.clientX,\n mouseY: ev.clientY,\n });\n return;\n }\n }\n\n // (3) Cursor left the anchor - walk for a new anchor\n if (match !== null) {\n const result = walk(ev.target, ev);\n if (!result) {\n if (!hiding.current) {\n hiding.current = true;\n debounce(() => {\n hiding.current = false;\n setMatch(null);\n });\n }\n } else {\n clearTimeout(timer.current);\n hiding.current = false;\n setMatch(result);\n setFirstAnchor(false);\n }\n } else {\n debounce(() => {\n setMatch(walk(ev.target, ev));\n setFirstAnchor(true);\n });\n }\n }\n\n function onMouseLeave() {\n debounce(() => {\n hiding.current = false;\n isHovered.current = false;\n setMatch(null);\n });\n }\n\n useEffect(() => {\n function onscroll() {\n clearTimeout(timer.current);\n setMatch(null);\n }\n\n window.addEventListener('scroll', onscroll, {\n capture: true,\n passive: true,\n });\n\n return () => {\n clearTimeout(timer.current);\n window.removeEventListener('scroll', onscroll, { capture: true });\n };\n }, []);\n\n const tooltipClassName = [\n 'wx-tooltip',\n css,\n arrow && position?.side === 'top' ? 'wx-arrow-top' : '',\n arrow && position?.side === 'bottom' ? 'wx-arrow-bottom' : '',\n arrow && position?.side === 'left' ? 'wx-arrow-left' : '',\n arrow && position?.side === 'right' ? 'wx-arrow-right' : '',\n !firstAnchor ? 'wx-tooltip-transition' : '',\n 'wx-aab5ZNfz',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n ref={areaNode}\n className=\"wx-tooltip-area wx-aab5ZNfz\"\n role=\"none\"\n onMouseMove={onMouseMove}\n onMouseLeave={onMouseLeave}\n >\n {shouldRender ? (\n <Portal>\n <div\n className={tooltipClassName}\n role=\"tooltip\"\n ref={setTooltipNode}\n style={{\n translate: `${position?.x ?? 0}px ${position?.y ?? 0}px`,\n zIndex: position?.z ?? 20,\n visibility: !position ? 'hidden' : undefined,\n '--wx-arrow-offset': position?.arrowOffset ?? '50%',\n }}\n >\n <div className=\"wx-tooltip-wrapper wx-aab5ZNfz\">\n <div className=\"wx-tooltip-inner wx-aab5ZNfz\">\n {typeof match.result === 'string' ? (\n Content ? (\n <Content data={match.result} />\n ) : (\n <div className=\"wx-tooltip-text wx-aab5ZNfz\">\n {match.result}\n </div>\n )\n ) : Content ? (\n <Content {...match.result} />\n ) : (\n <div className=\"wx-tooltip-text wx-aab5ZNfz\">\n {match.result?.data}\n </div>\n )}\n </div>\n </div>\n </div>\n </Portal>\n ) : null}\n\n {children}\n </div>\n );\n}\n\nexport default Tooltip;\n","import './ModalArea.css';\n\nexport default function ModalArea({ children }) {\n return (\n <div className=\"wx-KgpO9N wx-modal\">\n <div className=\"wx-KgpO9N wx-window\">{children}</div>\n </div>\n );\n}\n","import { useRef, useEffect } from 'react';\nimport { clickOutside } from '@svar-ui/lib-dom';\nimport './SideArea.css';\n\nexport default function SideArea({ position = 'right', css = '', children, onCancel }) {\n const divRef = useRef(null);\n\n useEffect(() => {\n return clickOutside(divRef.current, onCancel).destroy;\n }, []);\n\n return (\n <div ref={divRef} className={`wx-2L733M wx-sidearea wx-pos-${position} ${css}`}>\n {children}\n </div>\n );\n}\n","import { useState, useEffect, useMemo, useRef } from 'react';\nimport './Avatar.css';\n\nconst DEFAULT_BG = '#dfe2e6';\nconst DEFAULT_FONT = '#2c2f3c';\n\n/** Overlap factor: each avatar after the first adds 75% of size (25% overlap). */\nconst OVERLAP_FACTOR = 0.75;\n\nfunction getInitials(name) {\n\tname = name?.trim() || '';\n\tif (!name) return '';\n\tconst words = name.split(/\\s+/);\n\treturn (words[0][0] + (words[1]?.[0] || '')).toUpperCase().slice(0, 2);\n}\n\nfunction getContrastColor(hex) {\n\tif (!hex) return DEFAULT_FONT;\n\tlet h = hex.replace('#', '');\n\tif (h.length === 3) h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];\n\tif (h.length !== 6) return DEFAULT_FONT;\n\tconst r = parseInt(h.slice(0, 2), 16) / 255;\n\tconst g = parseInt(h.slice(2, 4), 16) / 255;\n\tconst b = parseInt(h.slice(4, 6), 16) / 255;\n\tconst luminance = 0.299 * r + 0.587 * g + 0.114 * b;\n\treturn luminance > 0.5 ? DEFAULT_FONT : '#ffffff';\n}\n\nfunction Avatar(props) {\n\tconst { value, size = 32, limit, css = '' } = props;\n\n\tconst containerRef = useRef(null);\n\tconst [containerWidth, setContainerWidth] = useState(null);\n\n\tconst users = useMemo(() => {\n\t\tif (!value) return [];\n\t\treturn Array.isArray(value) ? value : [value];\n\t}, [value]);\n\n\t/** Max avatars that fit in container. Formula: width = size + (n-1) * size * 0.75. */\n\tconst maxFitting = useMemo(() => {\n\t\tif (containerWidth == null || containerWidth <= 0) {\n\t\t\treturn null;\n\t\t}\n\t\tconst n = 1 + (containerWidth / size - 1) / OVERLAP_FACTOR;\n\t\treturn Math.max(1, Math.floor(n));\n\t}, [containerWidth, size]);\n\n\tconst displayCount = useMemo(() => {\n\t\tconst cap = limit != null ? Math.min(users.length, limit) : users.length;\n\t\tif (maxFitting != null) {\n\t\t\treturn Math.min(cap, maxFitting);\n\t\t}\n\t\treturn cap;\n\t}, [users, limit, maxFitting]);\n\n\tconst displayUsers = useMemo(() => users.slice(0, displayCount), [users, displayCount]);\n\tconst overflowCount = useMemo(() => Math.max(0, users.length - displayCount), [users, displayCount]);\n\n\tuseEffect(() => {\n\t\tconst el = containerRef.current;\n\t\tif (!el) return;\n\t\tconst ro = new ResizeObserver(entries => {\n\t\t\tconst entry = entries[0];\n\t\t\tif (entry) setContainerWidth(entry.contentRect.width);\n\t\t});\n\t\tro.observe(el);\n\t\treturn () => ro.disconnect();\n\t}, []);\n\n\tconst fontSize = Math.round(size * 0.4);\n\tconst avatarBaseStyle = {\n\t\twidth: size + 'px',\n\t\theight: size + 'px',\n\t\tminWidth: size + 'px',\n\t\tminHeight: size + 'px',\n\t\tfontSize: fontSize + 'px',\n\t};\n\n\tfunction getAvatarItemStyle(user, index) {\n\t\tconst margin = index === 0 ? '0' : `${size * -0.25}px`;\n\t\tconst bg = user.avatar ? 'transparent' : user.color || DEFAULT_BG;\n\t\tconst color = user.avatar\n\t\t\t? 'transparent'\n\t\t\t: getContrastColor(user.color || DEFAULT_BG);\n\t\treturn { marginLeft: margin, backgroundColor: bg, color };\n\t}\n\n\treturn (\n\t\t<div className={`wx-avatar-root wx-aadkRiRf ${css}`} ref={containerRef}>\n\t\t\t{displayUsers.length > 0 && (\n\t\t\t\t<div className=\"wx-avatar-stack wx-aadkRiRf\">\n\t\t\t\t\t{displayUsers.map((user, index) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={user.id}\n\t\t\t\t\t\t\tclassName={[\n\t\t\t\t\t\t\t\t'wx-avatar',\n\t\t\t\t\t\t\t\t'wx-avatar-item',\n\t\t\t\t\t\t\t\tindex === displayUsers.length - 1 && overflowCount > 0\n\t\t\t\t\t\t\t\t\t? 'wx-avatar-overflow'\n\t\t\t\t\t\t\t\t\t: '',\n\t\t\t\t\t\t\t\t'wx-aadkRiRf',\n\t\t\t\t\t\t\t].filter(Boolean).join(' ')}\n\t\t\t\t\t\t\tstyle={{ ...avatarBaseStyle, ...getAvatarItemStyle(user, index) }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{user.avatar ? (\n\t\t\t\t\t\t\t\t<img src={user.avatar} alt=\"\" loading=\"lazy\" />\n\t\t\t\t\t\t\t) : getInitials(user.name) ? (\n\t\t\t\t\t\t\t\t<span className=\"wx-aadkRiRf\">{getInitials(user.name)}</span>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t{index === displayUsers.length - 1 && overflowCount > 0 && (\n\t\t\t\t\t\t\t\t<span className=\"wx-avatar-overflow-badge wx-aadkRiRf\">\n\t\t\t\t\t\t\t\t\t+{overflowCount}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default Avatar;\n","import './FontRoboto.css';\nexport default function render() {\n return <></>;\n}\n","import { theme } from '../context';\nimport RobotoFont from './FontRoboto';\nimport './Material.css';\nexport default function render(props) {\n const { fonts = true, children } = props;\n\n return (\n <theme.Provider value=\"material\">\n <>\n {children && <div className=\"wx-theme wx-material-theme\">{children}</div>}\n\n {fonts && (\n <>\n <link\n rel=\"preconnect\"\n href=\"https://cdn.svar.dev\"\n crossOrigin=\"true\"\n />\n <RobotoFont />\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.svar.dev/fonts/wxi/wx-icons.css\"\n />\n </>\n )}\n </>\n </theme.Provider>\n );\n}\n","import './FontOpenSans.css';\nexport default function render() {\n return <></>;\n}\n","import { theme } from '../context';\nimport FontOpenSans from './FontOpenSans';\nimport './Willow.css';\nexport default function render(props) {\n const { fonts = true, children } = props;\n\n return (\n <theme.Provider value=\"willow\">\n <>\n {children && children && (\n <div className=\"wx-theme wx-willow-theme\">{children}</div>\n )}\n\n {fonts && (\n <>\n <link\n rel=\"preconnect\"\n href=\"https://cdn.svar.dev\"\n crossOrigin=\"true\"\n />\n <FontOpenSans />\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.svar.dev/fonts/wxi/wx-icons.css\"\n />\n </>\n )}\n </>\n </theme.Provider>\n );\n}\n","import { theme } from '../context';\nimport FontOpenSans from './FontOpenSans';\nimport './WillowDark.css';\nexport default function render(props) {\n const { fonts = true, children } = props;\n\n return (\n <theme.Provider value=\"willow-dark\">\n <>\n {children && children && (\n <div className=\"wx-theme wx-willow-dark-theme\">{children}</div>\n )}\n\n {fonts && (\n <>\n <link\n rel=\"preconnect\"\n href=\"https://cdn.svar.dev\"\n crossOrigin=\"true\"\n />\n <FontOpenSans />\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.svar.dev/fonts/wxi/wx-icons.css\"\n />\n </>\n )}\n </>\n </theme.Provider>\n );\n}\n","import { uid } from '@svar-ui/lib-dom';\n\nexport function popupContainer(node) {\n const id = uid();\n node.setAttribute('data-wx-portal-root', id);\n}\n","export { default as TextArea } from './components/TextArea.jsx';\nexport { default as Button } from './components/Button.jsx';\nexport { default as Checkbox } from './components/Checkbox.jsx';\nexport { default as CheckboxGroup } from './components/CheckboxGroup.jsx';\nexport { default as ColorSelect } from './components/ColorSelect.jsx';\nexport { default as ColorBoard } from './components/ColorBoard.jsx';\nexport { default as ColorPicker } from './components/ColorPicker.jsx';\nexport { default as Combo } from './components/Combo.jsx';\nexport { default as DatePicker } from './components/DatePicker.jsx';\nexport { default as DateRangePicker } from './components/DateRangePicker.jsx';\nexport { default as Fullscreen } from './components/Fullscreen.jsx';\nexport { default as Icon } from './components/Icon.jsx';\nexport { default as MultiCombo } from './components/MultiCombo.jsx';\nexport { default as Popup } from './components/Popup.jsx';\nexport { default as Dropdown } from './components/Dropdown.jsx';\nexport { default as Pager } from './components/Pager.jsx';\nexport { default as RadioButton } from './components/RadioButton.jsx';\nexport { default as RadioButtonGroup } from './components/RadioButtonGroup.jsx';\nexport { default as RichSelect } from './components/RichSelect.jsx';\nexport { default as Segmented } from './components/Segmented.jsx';\nexport { default as Select } from './components/Select.jsx';\nexport { default as Slider } from './components/Slider.jsx';\nexport { default as Switch } from './components/Switch.jsx';\nexport { default as Tabs } from './components/Tabs.jsx';\nexport { default as Text } from './components/Text.jsx';\nexport { default as Counter } from './components/Counter.jsx';\nexport { default as Globals } from './Globals.jsx';\nexport { default as Field } from './components/Field.jsx';\nexport { default as Calendar } from './components/Calendar.jsx';\nexport { default as Month } from './components/calendar/Month.jsx';\nexport { default as RangeCalendar } from './components/RangeCalendar.jsx';\nexport { default as TimePicker } from './components/TimePicker.jsx';\nexport { default as Tooltip } from './components/Tooltip.jsx';\nexport { default as TwoState } from './components/TwoState.jsx';\nexport { default as Modal } from './components/Modal.jsx';\nexport { default as ModalArea } from './components/ModalArea.jsx';\nexport { default as SideArea } from './components/SideArea.jsx';\nexport { default as Portal } from './components/Portal.jsx';\nexport { default as Avatar } from './components/Avatar.jsx';\n\nexport { default as Material } from './themes/Material.jsx';\nexport { default as Willow } from './themes/Willow.jsx';\nexport { default as WillowDark } from './themes/WillowDark.jsx';\n\nexport { default as Locale } from './Locale.jsx';\nexport { locale } from '@svar-ui/lib-dom';\n\nexport { popupContainer } from './components/helpers/popup';\nexport { default as SuggestDropdown } from './components/helpers/SuggestDropdown.jsx';\n\nexport { en } from '@svar-ui/core-locales';\nexport * as context from './context.js';\n\nimport { env, setEnv } from '@svar-ui/lib-dom';\nsetEnv(env);\n"],"names":["theme","createContext","helpers","i18n","fieldId","useInputId","id","contextId","useContext","inputId","useState","uid","TextArea","propValue","placeholder","title","tooltip","disabled","error","readonly","css","onChange","value","setValue","useWritableProp","handleInput","useCallback","e","newValue","ontextchange","inputRef","useRef","useEffect","handler","node","jsx","Button","type","icon","text","children","onClick","buttonCss","useMemo","cssType","a","x","handleClick","ev","jsxs","Checkbox","label","inputValue","valueProp","handlerChange","target","CheckboxGroup","options","handleChange","obj","option","Portal","initialTheme","portalRef","componentRef","targetRef","setTargetRef","contextTheme","themeContext","getParentRoot","env","Fragment","createPortal","p","root","Popup","left","top","at","parent","width","onCancel","trackScroll","setX","y","setY","w","setW","visible","setVisible","self","onCancelRef","getWidth","calcWidth","match","updatePosition","result","calculatePosition","useLayoutEffect","onScroll","resizeObserver","getAbsParent","down","clickOutside","InlineDropdown","positionProp","alignProp","autoFit","nodeRef","position","setPosition","align","setAlign","nodeCoords","bodyCoords","Dropdown","inline","props","setTarget","defaultColors","ColorSelect","colors","clear","dropdown","currentValue","setCurrentValue","popup","setPopup","selectColor","color","unselectColor","handlePopup","index","sliderMove","config","slider","moveBlockSlider","moveLineSlider","move","up","dx","dy","coords","colorTransformator","number","length","str","rgb","arr","v","n","hex","rgbPairs","r","g","b","h","s","hi","f","q","t","min","max","hexValidation","parseColor","defaultLocale","locale","en","BLOCK","LINE","ColorBoard","button","_","blockRef","colorLineRef","blockTop","setBlockTop","blockLeft","setBlockLeft","hueColor","setHueColor","lineLeft","setLineLeft","setInputValue","moveBlockSliderRef","moveLineSliderRef","blockColor","height","_sValue","_vValue","pxX","pxY","newHue","setSlidersPosition","newColor","handleSelect","keydown","isSliderBlock","isSliderLine","code","destroy","d","cssScope","ColorPicker","propertyValue","getListHandlers","navIndex","isVisible","virtualized","list","navCallback","selectCallback","init","l","o","c","setNav","scrollTo","next","navigate","dir","locateID","overscan","ItemContent","memo","data","checkboxes","itemTemplate","snippet","ListContent","visibleItems","visibleRange","measureRefCallback","visibleIndex","SuggestDropdown","items","onSelect","onReady","multiselect","rest","initialScrolled","setNavIndex","navIndexRef","scrollTop","setScrollTop","itemHeight","setItemHeight","isItemHeightInitialized","itemsRef","valueRef","itemHeightRef","selectItem","currentItems","currentNavIndex","nextValue","nextId","i","selectItemRef","scrollToVirtualized","idx","newScrollTop","listRefCallback","el","navigateVirtualized","keydownVirtualized","isTargetVisibleTop","isTargetVisibleBottom","dropdownKey","prevItemsRef","handleScroll","displayedItemsCount","start","end","item","offsetTop","totalHeight","Combo","textOptions","textField","kids","filterActive","setFilterActive","textInput","setTextInput","inputElement","hasFocus","filteredOptions","ready","doSelect","effects","selected","selectByEvent","doUnselect","selectByText","chunk","res","handleFocus","handleBlur","List","Text","propsValue","focus","select","cssString","hasLeftIcon","timer","oninput","clearValue","inputType","Header","date","part","onShift","calendar","formats","year","dateToString","getDuodecade","yearFormat","changeType","Month","current","markers","weekStart","weekdays","dv","dm","dd","ranges","isWeekEnd","getStart","getEnd","lastTime","selectDate","days","curMonth","day","mark","delegateRef","delegateHandler","delegateClick","Year","currentProp","defaultDate","setCurrent","months","monthNum","selectMonth","month","newCurrent","done","getPartValue","handleMonthClick","Duodecade","currentState","valueState","years","selectYears","selectYear","yearVal","containerRef","configs","nextMonth","prevMonth","nextYear","prevYear","nextDuodecade","prevDuodecade","defaultButtons","getButtonValue","btn","Panel","onCurrentChange","buttons","setType","buttonsList","oncancel","onShiftLocal","diff","onChangeLocal","CalendarView","Component","words","optional","fixCurrent","force","Calendar","onCurrentChangeLocal","Locale","toDateDropdown","DatePicker","format","editable","calendarLocale","dateFormat","doChange","skipEvent","formattedValue","onchangeHandler","input","addMonth","rPrev","initLeft","startVal","currentVal","RangeCalendar","startProp","endProp","setStart","setEnd","leftCurrent","setLeftCurrent","rightCurrent","setRightCurrent","onLeft","newLeft","onRight","newRight","selectChange","final","doChangeStart","doChangeEnd","DateRangePicker","doInputChange","av","val","Fullscreen","hotkey","toggleButton","inFullscreen","setInFullscreen","toggleFullscreen","prev","useHotkeys","setFullscreenState","Icon","defaultValue","MultiCombo","keepText","setText","setFocus","filterOptions","onready","onselect","remove","onClickHandler","tag","Pager","total","initialPageSize","initialValue","pageSize","setPageSize","pageCount","from","to","setInnerValue","setActivePage","onPageSizeInput","RadioButton","externalValue","name","fallbackId","useId","internalValue","setInternalValue","isControlled","RadioButtonGroup","RichSelect","unselect","Segmented","Select","event","Slider","step","previous","progress","bgStyle","onslider","style","Switch","Tabs","optionId","Counter","dec","inc","blur","tValue","Notice","notice","onRemove","Notices","Modal","header","footer","onConfirm","modal","onclick","pack","Globals","apiRef","setModal","notices","setNotices","useImperativeHandle","msg","modalObj","rej","GlobalsComponentWithRef","forwardRef","api","Field","required","TwoState","iconActive","textActive","active","typeStr","defValue","TimePicker","h12","maxH","maxM","timeFormat","zeroBased","formatTime","formatM","getNumber","formatH","update","safeValue","m","pm","hText","mText","textValue","click","togglePM","setHours","setMinutes","updateH","getSide","getAlign","split","readCSSPropertyInt","property","Tooltip","arrow","touch","overflow","delay","Content","defaultResolver","element","resolver","side","resolvedAt","areaNode","isHovered","tooltipNode","setTooltipNode","setMatch","firstAnchor","setFirstAnchor","matchRef","shouldRender","getPointOffset","getArrowSize","getArrowOffset","arrowSize","rect","body","bodyRect","anchorPoint","tooltipEdge","offset","anchorRect","realSide","arrowOffset","minZ","walk","hiding","debounce","fn","args","onMouseMove","onMouseLeave","onscroll","tooltipClassName","ModalArea","SideArea","divRef","DEFAULT_BG","DEFAULT_FONT","OVERLAP_FACTOR","getInitials","getContrastColor","Avatar","size","limit","containerWidth","setContainerWidth","users","maxFitting","displayCount","cap","displayUsers","overflowCount","ro","entries","entry","fontSize","avatarBaseStyle","getAvatarItemStyle","user","margin","bg","render","fonts","RobotoFont","FontOpenSans","popupContainer","setEnv"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/context.js","../src/components/helpers/getInputId.js","../src/components/TextArea.jsx","../src/components/Button.jsx","../src/components/Checkbox.jsx","../src/components/CheckboxGroup.jsx","../src/components/Portal.jsx","../src/components/Popup.jsx","../src/components/helpers/InlineDropdown.jsx","../src/components/Dropdown.jsx","../src/components/ColorSelect.jsx","../src/components/helpers/sliderMove.js","../src/components/helpers/colorTransformator.js","../src/components/helpers/colorValidation.js","../src/components/helpers/locale.js","../src/components/ColorBoard.jsx","../src/components/ColorPicker.jsx","../src/components/helpers/listnav.js","../src/components/helpers/SuggestDropdown.jsx","../src/components/Combo.jsx","../src/components/Text.jsx","../src/components/calendar/Header.jsx","../src/components/calendar/Button.jsx","../src/components/calendar/Month.jsx","../src/components/calendar/Year.jsx","../src/components/calendar/Duodecade.jsx","../src/components/calendar/helpers.js","../src/components/calendar/Panel.jsx","../src/Locale.jsx","../src/components/Calendar.jsx","../src/components/helpers/dropdown.js","../src/components/DatePicker.jsx","../src/components/RangeCalendar.jsx","../src/components/DateRangePicker.jsx","../src/components/Fullscreen.jsx","../src/components/Icon.jsx","../src/components/MultiCombo.jsx","../src/components/Pager.jsx","../src/components/RadioButton.jsx","../src/components/RadioButtonGroup.jsx","../src/components/RichSelect.jsx","../src/components/Segmented.jsx","../src/components/Select.jsx","../src/components/Slider.jsx","../src/components/Switch.jsx","../src/components/Tabs.jsx","../src/components/Counter.jsx","../src/components/Notice.jsx","../src/components/Notices.jsx","../src/components/Modal.jsx","../src/components/Globals.jsx","../src/Globals.jsx","../src/components/Field.jsx","../src/components/TwoState.jsx","../src/components/TimePicker.jsx","../src/components/Tooltip.jsx","../src/components/ModalArea.jsx","../src/components/SideArea.jsx","../src/components/Avatar.jsx","../src/themes/FontRoboto.jsx","../src/themes/Material.jsx","../src/themes/FontOpenSans.jsx","../src/themes/Willow.jsx","../src/themes/WillowDark.jsx","../src/components/helpers/popup.js","../src/index.js"],"sourcesContent":["import { createContext } from 'react';\n\nexport const theme = createContext('');\nexport const helpers = createContext({});\nexport const i18n = createContext(null);\nexport const fieldId = createContext(null);\n","import { useContext, useState } from 'react';\nimport { fieldId } from '../../context';\nimport { uid } from '@svar-ui/lib-dom';\n\nexport function useInputId(id) {\n const contextId = useContext(fieldId);\n\n const [inputId] = useState(() => id || contextId || uid());\n\n return inputId;\n}\n","import { useCallback, useEffect, useRef } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\n\nimport './TextArea.css';\n\nexport default function TextArea({\n value: propValue = '',\n id,\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n readonly = false,\n css = '',\n onChange,\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(propValue);\n\n const handleInput = useCallback(\n (e) => {\n const newValue = e.target.value;\n setValue(newValue);\n if (onChange) {\n onChange({ value: newValue, input: true });\n }\n },\n [onChange],\n );\n\n const ontextchange = useCallback(\n (e) => {\n const newValue = e.target.value;\n setValue(newValue);\n if (onChange) {\n onChange({ value: newValue });\n }\n },\n [onChange],\n );\n\n const inputRef = useRef(null);\n useEffect(() => {\n const handler = ontextchange;\n const node = inputRef.current;\n node.addEventListener('change', handler);\n return () => {\n if (node) {\n node.removeEventListener('change', handler);\n }\n };\n }, [ontextchange]);\n\n return (\n <textarea\n className={'wx-3yFVAC' + ` wx-textarea ${css} ${error ? 'wx-error' : ''}`}\n id={inputId}\n disabled={disabled}\n placeholder={placeholder}\n readOnly={readonly}\n title={title}\n value={value}\n onInput={handleInput}\n ref={inputRef}\n data-tooltip-text={tooltip}\n />\n );\n}\n","import { useMemo } from 'react';\nimport './Button.css';\n\nexport default function Button({\n type = '',\n css = '',\n icon = '',\n disabled = false,\n title = '',\n tooltip,\n text = '',\n children,\n onClick,\n}) {\n const buttonCss = useMemo(() => {\n let cssType = type\n ? type\n .split(' ')\n .filter((a) => a !== '')\n .map((x) => 'wx-' + x)\n .join(' ')\n : '';\n return css + (css ? ' ' : '') + cssType;\n }, [type, css]);\n\n const handleClick = (ev) => {\n onClick && onClick(ev);\n };\n\n return (\n <button\n title={title}\n className={`wx-2ZWgb4 wx-button ${buttonCss} ${icon && !children ? 'wx-icon' : ''}`}\n disabled={disabled}\n onClick={handleClick}\n data-tooltip-text={tooltip}\n >\n {icon && <i className={'wx-2ZWgb4 ' + icon}></i>}\n {children ? children : text || ' '}\n </button>\n );\n}\n","import { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Checkbox.css';\n\nexport default function Checkbox({\n id,\n label = '',\n inputValue = '',\n value: valueProp = false,\n onChange,\n disabled = false,\n css = ''\n}) {\n\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(valueProp);\n\n const handlerChange = ({ target }) => {\n const newValue = target.checked;\n setValue(newValue);\n onChange && onChange({ value: newValue, inputValue });\n };\n\n return (\n <div className={`wx-2IvefP wx-checkbox ${css}`}>\n <input\n type=\"checkbox\"\n id={inputId}\n disabled={disabled}\n className=\"wx-2IvefP wx-check\"\n checked={value}\n value={inputValue}\n onChange={handlerChange}\n />\n <label htmlFor={inputId} className=\"wx-2IvefP wx-label\">\n <span className=\"wx-2IvefP wx-before\"></span>\n {label && <span className=\"wx-2IvefP wx-after\">{label}</span>}\n </label>\n </div>\n );\n}\n","import { useCallback } from 'react';\nimport Checkbox from './Checkbox.jsx';\nimport './CheckboxGroup.css';\nimport { fieldId } from \"../context\";\n\nexport default function CheckboxGroup({\n options = [],\n value = [],\n type = '',\n css = '',\n onChange,\n}) {\n // Handle both onchange and onChange props for compatibility\n const handleChange = useCallback(\n (obj) => {\n let newValue;\n if (obj.value) newValue = [...value, obj.inputValue];\n else newValue = value.filter((a) => a !== obj.inputValue);\n\n if (onChange) onChange({ value: newValue });\n },\n [value, onChange],\n );\n\n return (\n <fieldId.Provider value={null}>\n <div className={`wx-q8xwRD wx-checkboxgroup ${type && `wx-${type}`} ${css}`}>\n {options.map((option) => (\n <div key={option.id} className=\"wx-q8xwRD wx-item\">\n <Checkbox\n label={option.label}\n inputValue={option.id}\n value={value.includes(option.id)}\n onChange={handleChange}\n />\n </div>\n ))}\n </div>\n </fieldId.Provider>\n );\n}\n","import { useContext, useRef, useEffect, useState } from 'react';\nimport { theme as themeContext } from '../context.js';\nimport { env } from '@svar-ui/lib-dom';\nimport { createPortal } from 'react-dom';\n\nfunction Portal({ theme: initialTheme = '', target, children }) {\n const portalRef = useRef(null);\n const componentRef = useRef(null);\n const [targetRef, setTargetRef] = useState(null);\n\n if (!portalRef.current) {\n portalRef.current = document.createElement('div');\n }\n\n const contextTheme = useContext(themeContext);\n\n useEffect(() => {\n setTargetRef(\n target ||\n getParentRoot(componentRef.current) ||\n env.getTopNode(componentRef.current),\n );\n }, [componentRef.current]);\n\n return (\n <>\n <span ref={componentRef} style={{ display: 'none' }} />\n {componentRef.current && targetRef\n ? createPortal(\n <div\n className={`wx-3ZWsT0 wx-${initialTheme || contextTheme}-theme`}\n >\n {children}\n </div>,\n targetRef,\n )\n : null}\n </>\n );\n}\n\nexport default Portal;\n\nfunction getParentRoot(p) {\n const root = env.getTopNode(p);\n while (p && p !== root && !p.getAttribute('data-wx-portal-root')) {\n p = p.parentNode;\n }\n return p;\n}\n","import { useState, useEffect, useRef, useCallback, useLayoutEffect } from 'react';\nimport { clickOutside, calculatePosition, getAbsParent } from '@svar-ui/lib-dom';\nimport './Popup.css';\n\nexport function Popup({\n left = 0,\n top = 0,\n at = 'bottom',\n parent = null,\n width = 'auto',\n css = '',\n onCancel,\n children,\n trackScroll = false,\n}) {\n const [x, setX] = useState(0);\n const [y, setY] = useState(0);\n const [w, setW] = useState('auto');\n const [visible, setVisible] = useState(false);\n\n const self = useRef(null);\n const portalRef = useRef(null);\n const onCancelRef = useRef(onCancel);\n\n useEffect(() => {\n onCancelRef.current = onCancel;\n }, [onCancel]);\n\n function getWidth(calcWidth) {\n if (parent && (width + '').indexOf('%') > -1) {\n return width.replace(/(\\d+)%/, (match, value) => {\n value = (value * parent.offsetWidth) / 100 + 'px';\n return width.replace(match, value);\n });\n }\n return width && width !== 'auto' ? width : calcWidth;\n }\n\n const updatePosition = useCallback(() => {\n if (!self.current) return;\n\n const result = calculatePosition(self.current, parent, at, left, top);\n if (result) {\n setX(result.x);\n setY(result.y);\n setW(getWidth(result.width));\n }\n }, [self, parent, at, left, top, width]);\n\n useLayoutEffect(() => {\n const onScroll = (e) => {\n if (onCancelRef.current && e.target !== portalRef.current && self.current && !self.current.contains(e.target))\n onCancelRef.current(e);\n };\n\n let resizeObserver;\n requestAnimationFrame(() => {\n updatePosition();\n setVisible(true);\n if (trackScroll && self.current) {\n portalRef.current = getAbsParent(self.current);\n if (portalRef.current)\n portalRef.current.addEventListener('scroll', onScroll, true);\n }\n if (parent) {\n resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(parent);\n }\n });\n\n return () => {\n if (trackScroll && portalRef.current)\n portalRef.current.removeEventListener('scroll', onScroll, true);\n resizeObserver?.disconnect();\n };\n }, []);\n\n useLayoutEffect(() => {\n updatePosition();\n }, [parent, at, left, top]);\n\n useEffect(() => {\n const down = (e) => {\n if (onCancelRef.current) {\n onCancelRef.current(e);\n }\n };\n if (self.current) {\n return clickOutside(self.current, { callback: down, parent: () => parent }).destroy;\n }\n }, [parent]);\n\n return (\n <div\n ref={self}\n className={['wx-37M6Fj', 'wx-popup', css].filter(Boolean).join(' ')}\n style={{\n position: 'absolute',\n visibility: visible ? 'visible' : 'hidden',\n top: y + 'px',\n left: x + 'px',\n width: w,\n }}\n >\n {children}\n </div>\n );\n}\n\nexport default Popup;\n","import { useState, useEffect, useRef } from 'react';\nimport { clickOutside } from '@svar-ui/lib-dom';\nimport './InlineDropdown.css';\n\nfunction InlineDropdown({\n position: positionProp = 'bottom',\n align: alignProp = 'start',\n autoFit = true,\n onCancel = null,\n width = '100%',\n css = '',\n children,\n}) {\n const nodeRef = useRef(null);\n const [position, setPosition] = useState(positionProp);\n const [align, setAlign] = useState(alignProp);\n const onCancelRef = useRef(onCancel);\n\n useEffect(() => {\n onCancelRef.current = onCancel;\n }, [onCancel]);\n\n useEffect(() => {\n if (autoFit) {\n const node = nodeRef.current;\n if (node) {\n const nodeCoords = node.getBoundingClientRect();\n const bodyCoords = document.body.getBoundingClientRect();\n\n if (nodeCoords.right >= bodyCoords.right) {\n setAlign('end');\n }\n\n if (nodeCoords.bottom >= bodyCoords.bottom) {\n setPosition('top');\n }\n }\n }\n }, []);\n\n useEffect(() => {\n if (nodeRef.current) {\n const down = (e) => {\n onCancelRef.current && onCancelRef.current(e);\n };\n return clickOutside(nodeRef.current, down).destroy;\n }\n }, []);\n\n return (\n <div\n ref={nodeRef}\n className={[\n 'wx-dropdown',\n `wx-${position}-${align}`,\n css || '',\n 'wx-aaaVytZW',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ width: width }}\n >\n {children}\n </div>\n );\n}\n\nexport default InlineDropdown;\n","import { useState, useRef, useMemo, useLayoutEffect } from 'react';\nimport Portal from './Portal.jsx';\nimport Popup from './Popup.jsx';\nimport InlineDropdown from './helpers/InlineDropdown.jsx';\nimport './Dropdown.css';\n\nfunction Dropdown({\n position = 'bottom',\n align = 'start',\n autoFit = true,\n inline = false,\n onCancel,\n width = '100%',\n children,\n ...props\n}) {\n const [target, setTarget] = useState(undefined);\n const nodeRef = useRef(null);\n\n const at = useMemo(() => `${position}-${align}`, [position, align]);\n\n useLayoutEffect(() => {\n if (nodeRef.current) {\n setTarget(nodeRef.current.parentNode);\n }\n }, []);\n\n return (\n <>\n {target && (inline ? (\n <InlineDropdown\n onCancel={onCancel}\n position={position}\n align={align}\n autoFit={autoFit}\n width={width}\n {...props}\n >\n {children}\n </InlineDropdown>\n ) : (\n <Portal>\n <Popup parent={target} at={at} onCancel={onCancel} width={width} {...props}>\n {children}\n </Popup>\n </Portal>\n ))}\n <span ref={nodeRef} className=\"wx-portal-node wx-32GZ52\" />\n </>\n );\n}\n\nexport default Dropdown;\n","import { useState, useCallback } from 'react';\nimport { useInputId } from './helpers/getInputId.js';\nimport Dropdown from './Dropdown.jsx';\nimport './ColorSelect.css';\n\nconst defaultColors = [\n '#00a037',\n '#37a9ef',\n '#f5a623',\n '#ff4c3b',\n '#a0a0a0',\n '#000000',\n '#ffffff',\n];\n\nexport default function ColorSelect({\n colors = defaultColors,\n value = '',\n onChange,\n id,\n clear = false,\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n css = '',\n dropdown = {},\n}) {\n const inputId = useInputId(id);\n const [currentValue, setCurrentValue] = useState(value);\n const [popup, setPopup] = useState(false);\n\n const selectColor = useCallback(\n (ev, color) => {\n ev.stopPropagation();\n setCurrentValue(color);\n setPopup(false);\n onChange && onChange({ value: color });\n },\n [onChange],\n );\n\n const unselectColor = useCallback(\n (ev) => {\n ev.stopPropagation();\n setCurrentValue('');\n onChange && onChange({ value: '' });\n },\n [onChange],\n );\n\n const handlePopup = useCallback(() => {\n if (disabled) return false;\n setPopup(true);\n }, [disabled]);\n\n return (\n <div\n className={'wx-121TgJ wx-colorselect ' + css}\n onClick={handlePopup}\n data-tooltip-text={tooltip}\n >\n <input\n className={\n 'wx-121TgJ wx-input' +\n (error ? ' wx-error' : '') +\n (popup ? ' wx-focus' : '')\n }\n title={title}\n value={currentValue}\n readOnly\n id={inputId}\n placeholder={placeholder}\n disabled={disabled}\n />\n\n {clear && currentValue && !disabled && (\n <i className=\"wx-121TgJ wx-clear wxi-close\" onClick={unselectColor}></i>\n )}\n\n {currentValue ? (\n <div\n className=\"wx-121TgJ wx-color wx-selected\"\n style={{ backgroundColor: currentValue || '#00a037' }}\n ></div>\n ) : (\n <div className=\"wx-121TgJ wx-empty wx-selected\"></div>\n )}\n\n {popup && (\n <Dropdown onCancel={() => setPopup(false)} {...dropdown}>\n <div className=\"wx-121TgJ wx-colors\">\n <div\n className=\"wx-121TgJ wx-empty\"\n onClick={(ev) => selectColor(ev, '')}\n ></div>\n {colors.map((color, index) => (\n <div\n key={index}\n className=\"wx-121TgJ wx-color\"\n style={{ backgroundColor: color }}\n onClick={(ev) => selectColor(ev, color)}\n ></div>\n ))}\n </div>\n </Dropdown>\n )}\n </div>\n );\n}\n","export function sliderMove(node, config) {\n const slider = node.firstChild;\n const { moveBlockSlider, moveLineSlider } = config || {};\n\n function down(ev) {\n move(ev);\n\n slider.focus();\n\n window.addEventListener('mousemove', move);\n window.addEventListener('mouseup', up);\n }\n\n function move(ev) {\n let x, y, dx, dy;\n\n const coords = node.getBoundingClientRect();\n x = coords.left;\n y = coords.top;\n\n dx = ev.clientX - x;\n dy = ev.clientY - y;\n\n if (moveBlockSlider) config.moveBlockSlider(dx, dy);\n if (moveLineSlider) config.moveLineSlider(dx);\n }\n\n function up() {\n window.removeEventListener('mousemove', move);\n window.removeEventListener('mouseup', up);\n }\n\n node.addEventListener('mousedown', down);\n\n return {\n destroy() {\n node.removeEventListener('mousedown', down);\n },\n };\n}\n","const colorTransformator = {\n _toHex: [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n ],\n toHex(number, length) {\n number = parseInt(number, 10);\n let str = '';\n while (number > 0) {\n str = this._toHex[number % 16] + str;\n number = Math.floor(number / 16);\n }\n while (str.length < length) str = `0${str}`;\n return str;\n },\n rgbToHex(rgb) {\n let arr = [];\n if (typeof rgb === 'string')\n rgb.replace(/[\\d+.]+/g, (v) => arr.push(parseFloat(v)));\n else if (Array.isArray(rgb)) arr = rgb;\n\n //transparent\n if (arr[3] === 0) return '';\n\n return arr\n .slice(0, 3)\n .map((n) => {\n return this.toHex(Math.floor(n), 2);\n })\n .join('');\n },\n hexToDec(hex) {\n return parseInt(hex, 16);\n },\n // only handles the six-digit hex color format\n hexToRgb(hex) {\n hex = hex.charAt(0) === '#' ? hex.slice(1) : hex;\n const rgbPairs = hex.match(/.{1,2}/g);\n\n let [r, g, b] = rgbPairs;\n\n r = this.hexToDec(r);\n g = this.hexToDec(g);\n b = this.hexToDec(b);\n\n return [r, g, b];\n },\n hsvToRgb(h, s, v) {\n let hi, f, p, q, t, r, g, b;\n hi = Math.floor(h / 60) % 6;\n f = h / 60 - hi;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n r = 0;\n g = 0;\n b = 0;\n switch (hi) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n default:\n break;\n }\n r = Math.floor(r * 255);\n g = Math.floor(g * 255);\n b = Math.floor(b * 255);\n\n return [r, g, b];\n },\n rgbToHsv(r, g, b) {\n let s, h, v;\n r /= 255;\n g /= 255;\n b /= 255;\n let min = Math.min(r, g, b);\n let max = Math.max(r, g, b);\n h = 0;\n s = max === 0 ? 0 : 1 - min / max;\n v = max;\n if (max === min) {\n h = 0;\n } else if (max === r && g >= b) {\n h = (60 * (g - b)) / (max - min) + 0;\n } else if (max === r && g < b) {\n h = (60 * (g - b)) / (max - min) + 360;\n } else if (max === g) {\n h = (60 * (b - r)) / (max - min) + 120;\n } else if (max === b) {\n h = (60 * (r - g)) / (max - min) + 240;\n }\n\n return [h, s, v];\n },\n hexToHvs(hex) {\n const rgb = this.hexToRgb(hex);\n return this.rgbToHsv(...rgb);\n },\n hvsToHex(h, v, s) {\n const rgb = this.hsvToRgb(h, v, s);\n return '#' + this.rgbToHex(rgb).toUpperCase();\n },\n};\n\nexport default colorTransformator;\n","const hexValidation = (str) => /^([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/.test(str);\n\nexport function parseColor(value) {\n if (!value) return null;\n\n value = value.toString();\n\n if (value.charAt(0) === '#') value = value.slice(1);\n\n if (hexValidation(value)) {\n if (value.length === 3) {\n value = value\n .slice(0, 3)\n .split('')\n .reduce((a, b) => a + b + b, '');\n }\n return `#${value.toUpperCase()}`;\n }\n\n return null;\n}\n","import { locale } from '@svar-ui/lib-dom';\nimport { en } from '@svar-ui/core-locales';\n\nexport function defaultLocale() {\n return locale(en);\n}\n","import {\n useState,\n useEffect,\n useRef,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport Button from './Button.jsx';\nimport { sliderMove } from './helpers/sliderMove.js';\nimport colorTransformator from './helpers/colorTransformator.js';\nimport { parseColor } from './helpers/colorValidation.js';\nimport { i18n } from '../context.js';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport './ColorBoard.css';\nimport { defaultLocale } from './helpers/locale.js';\n\nconst BLOCK = 'Block';\nconst LINE = 'Line';\n\nfunction ColorBoard({\n value: valueProp = '#65D3B3',\n button = false,\n css = '',\n onChange,\n}) {\n const _ = (useContext(i18n) || defaultLocale()).getGroup('core');\n\n const blockRef = useRef(null);\n const colorLineRef = useRef(null);\n\n const [blockTop, setBlockTop] = useState();\n const [blockLeft, setBlockLeft] = useState();\n const [hueColor, setHueColor] = useState();\n const [lineLeft, setLineLeft] = useState();\n\n const [value, setValue] = useWritableProp(valueProp);\n const [inputValue, setInputValue] = useState(valueProp); \n\n const moveBlockSliderRef = useRef(null);\n const moveLineSliderRef = useRef(null);\n\n const color = useMemo(() => parseColor(value) || '#65D3B3', [value]);\n const blockColor = useMemo(\n () => colorTransformator.hvsToHex(hueColor || 0, 1, 1),\n [hueColor],\n );\n\n const moveBlockSlider = useCallback(\n (dx, dy) => {\n const { width, height } = blockRef.current.getBoundingClientRect();\n\n if (dy < 0) dy = 0;\n else if (dy > height) dy = height;\n\n if (dx < 0) dx = 0;\n else if (dx > width) dx = width;\n\n setBlockTop(dy);\n setBlockLeft(dx);\n\n // Call setCurrentColor\n let _sValue, _vValue;\n\n const pxX = width / 100;\n const pxY = height / 100;\n\n _sValue = Math.ceil(dx / pxX) / 100;\n _vValue = Math.ceil(Math.abs(dy / pxY - 100)) / 100;\n\n const newValue = colorTransformator.hvsToHex(\n hueColor,\n _sValue,\n _vValue,\n );\n setValue(newValue);\n setInputValue(newValue);\n onChange && onChange({ value: newValue, input: true });\n },\n [color, hueColor, onChange],\n );\n\n const moveLineSlider = useCallback(\n (dx) => {\n const width = colorLineRef.current.getBoundingClientRect().width;\n\n if (dx < 0) dx = 0;\n else if (dx > width) dx = width;\n\n const h = Math.round((dx * 359) / width);\n const newHue = Math.max(Math.min(h, 359), 0);\n setHueColor(newHue);\n setLineLeft(dx);\n\n // Call setCurrentColor with lineSliderMove=true\n let _sValue, _vValue;\n [, _sValue, _vValue] = colorTransformator.hexToHvs(color);\n const newValue = colorTransformator.hvsToHex(newHue, _sValue, _vValue);\n setValue(newValue);\n setInputValue(newValue);\n onChange && onChange({ value: newValue, input: true });\n },\n [color, onChange],\n );\n\n moveBlockSliderRef.current = moveBlockSlider;\n moveLineSliderRef.current = moveLineSlider;\n\n const setSlidersPosition = useCallback((newColor) => {\n const [h, s, v] = colorTransformator.hexToHvs(newColor || color);\n setHueColor(h);\n\n if (blockRef.current) {\n const { width, height } = blockRef.current.getBoundingClientRect();\n\n if (colorLineRef.current) {\n setLineLeft(\n (h * colorLineRef.current.getBoundingClientRect().width) / 359,\n );\n }\n setBlockLeft(s * width);\n setBlockTop(Math.abs(height * (v - 1)));\n }\n }, [color]);\n\n const handleChange = useCallback(\n ({ target }) => {\n const newColor = parseColor(target.value);\n setInputValue(target.value);\n if (newColor) {\n setValue(newColor);\n onChange && onChange({ value: newColor, input: true });\n setSlidersPosition(newColor);\n }\n },\n [onChange, setSlidersPosition],\n );\n\n const handleSelect = useCallback(\n (ev) => {\n ev.stopPropagation();\n onChange && onChange({ value: color });\n },\n [color, onChange],\n );\n\n const keydown = useCallback(\n (ev) => {\n const slider = ev.target;\n const isSliderBlock = slider.getAttribute('data-slider') === BLOCK;\n const isSliderLine = slider.getAttribute('data-slider') === LINE;\n\n let css = window.getComputedStyle(slider);\n let left = parseFloat(css.left);\n let top = parseFloat(css.top);\n const code = ev.code;\n\n if (isSliderBlock) {\n switch (code) {\n case 'ArrowLeft': {\n left--;\n break;\n }\n case 'ArrowRight': {\n left++;\n break;\n }\n case 'ArrowDown': {\n top++;\n break;\n }\n case 'ArrowUp': {\n top--;\n break;\n }\n default:\n return;\n }\n\n moveBlockSlider(left, top);\n }\n\n if (isSliderLine) {\n if (code === 'ArrowLeft' || code === 'ArrowDown') left--;\n else if (code === 'ArrowRight' || code === 'ArrowUp') left++;\n else return;\n moveLineSlider(left);\n }\n\n ev.preventDefault();\n },\n [moveBlockSlider, moveLineSlider],\n );\n \n useEffect(() => {\n const destroy = [];\n if (blockRef.current) {\n destroy.push(\n sliderMove(blockRef.current, {\n moveBlockSlider: (dx, dy) => {\n moveBlockSliderRef.current?.(dx, dy);\n },\n }).destroy,\n );\n }\n if (colorLineRef.current) {\n destroy.push(\n sliderMove(colorLineRef.current, {\n moveLineSlider: (dx) => {\n moveLineSliderRef.current?.(dx);\n },\n }).destroy,\n );\n }\n requestAnimationFrame(()=> setSlidersPosition());\n return () => {\n destroy.forEach((d) => d());\n };\n }, []);\n const cssScope = 'wx-1yoKzq';\n\n return (\n <div className={cssScope + ' wx-colorboard ' + css}>\n <div\n className={cssScope + ' wx-color-block'}\n style={{ background: blockColor }}\n ref={blockRef}\n >\n <div\n className={cssScope + ' wx-color-block-slider wx-slider'}\n style={{\n background: color,\n top: blockTop + 'px',\n left: blockLeft + 'px',\n }}\n tabIndex={0}\n data-slider={BLOCK}\n onKeyDown={keydown}\n ></div>\n </div>\n <div className={cssScope + ' wx-color-line'} ref={colorLineRef}>\n <div\n className={cssScope + ' wx-color-line-slider wx-slider'}\n style={{ background: blockColor, left: lineLeft + 'px' }}\n tabIndex={0}\n data-slider={LINE}\n onKeyDown={keydown}\n ></div>\n </div>\n <div className={cssScope + ' wx-color-controls'}>\n <div\n className={cssScope + ' wx-color'}\n style={{ background: color }}\n ></div>\n <input\n type=\"text\"\n className={cssScope + ' wx-text'}\n value={inputValue}\n onChange={handleChange}\n />\n </div>\n {button && (\n <Button onClick={handleSelect} type=\"secondary\">\n {_('select')}\n </Button>\n )}\n </div>\n );\n}\n\nexport default ColorBoard;\n","import { useState } from 'react';\nimport Dropdown from './Dropdown.jsx';\nimport ColorBoard from './ColorBoard.jsx';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\n\nimport './ColorPicker.css';\n\nexport default function ColorPicker({\n value: propertyValue = '',\n id,\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n clear = false,\n css = '',\n onChange,\n dropdown = {},\n}) {\n const inputId = useInputId(id);\n let [value, setValue] = useWritableProp(propertyValue);\n const [popup, setPopup] = useState(false);\n\n function handlePopup() {\n if (disabled) return false;\n setPopup(true);\n }\n\n function selectColor(ev) {\n if (ev.input) return;\n\n setPopup(false);\n const newValue = ev.value;\n setValue(newValue);\n if (onChange) onChange({ value: newValue });\n }\n\n function unselectColor(ev) {\n ev.stopPropagation();\n setValue('');\n if (onChange) onChange({ value: '' });\n }\n\n return (\n <div\n className={'wx-mmT8WH wx-colorpicker ' + css}\n onClick={handlePopup}\n data-tooltip-text={tooltip}\n >\n <input\n className={\n 'wx-mmT8WH wx-input' +\n (error ? ' wx-error' : '') +\n (popup ? ' wx-focus' : '')\n }\n title={title}\n value={value}\n readOnly\n id={inputId}\n placeholder={placeholder}\n disabled={disabled}\n />\n <div className=\"wx-mmT8WH wx-color\" style={{ background: value }}></div>\n\n {clear && !disabled && value && (\n <i className=\"wx-mmT8WH wxi-close\" onClick={unselectColor}></i>\n )}\n\n {popup && (\n <Dropdown onCancel={() => setPopup(false)} {...dropdown}>\n <ColorBoard value={value} button=\"true\" onChange={selectColor} />\n </Dropdown>\n )}\n </div>\n );\n}\n","import { locateID } from '@svar-ui/lib-dom';\n\nexport function getListHandlers() {\n let navIndex = null;\n let isVisible = false;\n\n let virtualized = false;\n\n let list, options, navCallback, selectCallback;\n const init = (l, o, n, c, v) => {\n list = l;\n options = o;\n navCallback = n;\n selectCallback = c;\n virtualized = v;\n };\n\n const setNav = (index) => {\n navIndex = index;\n isVisible = navIndex !== null;\n navCallback(navIndex);\n };\n\n const scrollTo = (navIndex, ev) => {\n if (!virtualized && navIndex !== null && list) {\n const next = list.querySelectorAll(`.wx-list > .wx-item`)[navIndex];\n if (next) {\n next.scrollIntoView({ block: 'nearest' });\n if (ev) ev.preventDefault();\n }\n }\n };\n\n const navigate = (dir, ev) => {\n const index =\n dir === null\n ? null\n : Math.max(0, Math.min(navIndex + dir, options.length - 1));\n if (index === navIndex) return;\n setNav(index);\n\n if (list) scrollTo(index, ev);\n else requestAnimationFrame(() => scrollTo(index, ev));\n };\n\n const move = (ev) => {\n const id = locateID(ev);\n const index = options.findIndex((a) => a.id === id);\n\n if (index !== navIndex) {\n setNav(index);\n }\n };\n\n const keydown = (ev, position) => {\n switch (ev.code) {\n case 'Enter':\n if (isVisible) selectCallback();\n else setNav(0);\n break;\n\n case 'Space':\n if (!isVisible) setNav(0);\n break;\n\n case 'Escape':\n navCallback((navIndex = null));\n break;\n\n case 'Tab':\n navCallback((navIndex = null));\n break;\n\n case 'ArrowDown':\n navigate(isVisible ? 1 : position || 0, ev);\n break;\n\n case 'ArrowUp':\n navigate(isVisible ? -1 : position || 0, ev);\n break;\n\n default:\n break;\n }\n };\n\n return { move, keydown, init, navigate };\n}\n","import { useEffect, useState, useRef, useCallback, useMemo, memo } from 'react';\nimport { useContext } from 'react';\nimport { snippet } from '@svar-ui/lib-react';\nimport { getListHandlers } from './listnav';\nimport Dropdown from '../Dropdown.jsx';\nimport Checkbox from '../Checkbox.jsx';\nimport { i18n } from '../../context.js';\nimport './SuggestDropdown.css';\nimport { defaultLocale } from './locale.js';\n\nconst overscan = 10;\n\nconst ItemContent = memo(function ItemContent({ data, checkboxes, itemTemplate, value }) {\n return (\n <>\n {checkboxes && (\n <Checkbox\n css=\"wx-list-checkbox\"\n value={!!value && value.includes(data.id)}\n />\n )}\n {itemTemplate ? snippet(itemTemplate, { option: data }) : data.label}\n </>\n );\n});\n\nfunction ListContent({\n visibleItems,\n visibleRange,\n navIndex,\n checkboxes,\n itemTemplate,\n value,\n measureRefCallback,\n}) {\n return visibleItems.map((data, visibleIndex) => {\n const index = visibleRange.start + visibleIndex;\n return <div\n key={data.id}\n ref={visibleIndex === 0 ? measureRefCallback : undefined}\n className={`wx-233fr7 wx-item ${(index) === navIndex ? 'wx-focus' : ''}`}\n data-id={data.id}\n >\n <ItemContent\n data={data}\n checkboxes={checkboxes}\n itemTemplate={itemTemplate}\n value={value}\n />\n </div>\n\n });\n}\n\nexport default function SuggestDropdown({\n items = [],\n children,\n onSelect,\n onReady,\n virtualized = false,\n checkboxes,\n multiselect,\n value,\n ...rest\n}) {\n const list = useRef();\n const initialScrolled = useRef(false);\n const helpers = useRef(getListHandlers());\n\n const [navIndex, setNavIndex] = useState(null);\n const navIndexRef = useRef(navIndex);\n\n const [scrollTop, setScrollTop] = useState(0);\n const [itemHeight, setItemHeight] = useState(24);\n const isItemHeightInitialized = useRef(false);\n\n const _ = (useContext(i18n) || defaultLocale()).getGroup('core');\n\n // Keep refs current for use inside callbacks\n const itemsRef = useRef(items);\n useEffect(() => {\n itemsRef.current = items;\n }, [items]);\n\n const valueRef = useRef(value);\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n const itemHeightRef = useRef(0);\n useEffect(() => {\n itemHeightRef.current = itemHeight;\n }, [itemHeight]);\n\n const selectItem = useCallback((ev) => {\n if (ev) ev.stopPropagation();\n const currentItems = itemsRef.current;\n const currentValue = valueRef.current;\n const currentNavIndex = navIndexRef.current;\n let nextValue;\n const nextId = currentItems[currentNavIndex]?.id;\n if (multiselect) {\n if (currentValue && currentValue.includes(nextId)) {\n nextValue = currentValue.filter(i => i !== nextId);\n } else {\n nextValue = [...(currentValue || []), nextId];\n }\n } else {\n nextValue = nextId;\n }\n onSelect && onSelect({ id: nextValue });\n }, [multiselect, onSelect]);\n\n const selectItemRef = useRef(selectItem);\n useEffect(() => {\n selectItemRef.current = selectItem;\n }, [selectItem]);\n\n const scrollToVirtualized = useCallback((idx) => {\n if (list.current) {\n let newScrollTop = idx * itemHeightRef.current - list.current.clientHeight + itemHeightRef.current;\n setScrollTop(newScrollTop);\n list.current.scrollTop = newScrollTop;\n }\n }, [itemHeightRef.current]);\n\n const listRefCallback = useCallback(\n (el) => {\n list.current = el;\n if (virtualized) {\n if (el && !initialScrolled.current && navIndexRef.current !== null) {\n requestAnimationFrame(() => {\n if (list.current) {\n scrollToVirtualized(navIndexRef.current);\n initialScrolled.current = true;\n }\n });\n }\n if (!el) {\n initialScrolled.current = false;\n }\n }\n },\n [scrollToVirtualized]\n );\n\n const measureRefCallback = useCallback((node) => {\n if (!node) return;\n if (isItemHeightInitialized.current) return;\n \n const height = node.getBoundingClientRect().height;\n \n if (height) {\n setItemHeight(height);\n itemHeightRef.current = height;\n isItemHeightInitialized.current = true;\n }\n }, []);\n \n useEffect(() => {\n helpers.current.init(\n list.current,\n items,\n (i) => {\n setNavIndex(i);\n navIndexRef.current = i;\n },\n (ev) => selectItemRef.current(ev),\n virtualized,\n );\n }, [items, list.current, virtualized]);\n\n useEffect(() => {\n const navigateVirtualized = (dir, ev) => {\n helpers.current.navigate(dir, ev);\n scrollToVirtualized(navIndexRef.current);\n };\n\n const keydownVirtualized = (ev, dir) => {\n const currentNavIndex = navIndexRef.current;\n const currentItems = itemsRef.current;\n if (\n currentNavIndex !== 0 &&\n currentNavIndex !== currentItems.length - 1 &&\n (ev.key === 'ArrowDown' || ev.key === 'ArrowUp')\n )\n ev.preventDefault();\n helpers.current.keydown(ev, dir);\n\n if (list.current) {\n const isTargetVisibleTop = list.current.scrollTop <= navIndexRef.current * itemHeightRef.current;\n const isTargetVisibleBottom =\n list.current.scrollTop + list.current.clientHeight >=\n navIndexRef.current * itemHeightRef.current + itemHeightRef.current;\n\n if (!isTargetVisibleTop) {\n list.current.scrollTop = navIndexRef.current * itemHeightRef.current;\n setScrollTop(list.current.scrollTop);\n } else if (!isTargetVisibleBottom) {\n scrollToVirtualized(navIndexRef.current);\n }\n }\n };\n\n onReady &&\n onReady({\n navigate: virtualized ? navigateVirtualized : helpers.current.navigate,\n keydown: virtualized ? keydownVirtualized : helpers.current.keydown,\n move: helpers.current.move,\n });\n }, []);\n\n const dropdownKey = useRef(0);\n const prevItemsRef = useRef(items);\n if (prevItemsRef.current !== items) {\n prevItemsRef.current = items;\n dropdownKey.current += 1;\n }\n\n const onCancel = useCallback(() => {\n helpers.current.navigate(null);\n }, [helpers]);\n\n const handleScroll = useCallback((ev) => {\n if (virtualized) {\n setScrollTop(ev.target.scrollTop);\n }\n }, [virtualized]);\n\n const displayedItemsCount = useMemo(\n () => Math.ceil((list.current?.clientHeight || 0) / itemHeight),\n [itemHeight, scrollTop],\n );\n\n const visibleRange = useMemo(() => {\n if (!virtualized) return { start: 0, end: items.length };\n if (!items.length) return { start: 0, end: 0 };\n\n const start = Math.floor(scrollTop / itemHeight);\n const end = start + displayedItemsCount;\n\n return {\n start: Math.max(0, start - overscan),\n end: Math.min(items.length, end + overscan),\n };\n }, [virtualized, items, scrollTop, itemHeight, displayedItemsCount]);\n\n const visibleItems = useMemo(() => {\n if (!virtualized) return items;\n const { start, end } = visibleRange;\n return items.slice(start, end).map((item) => ({\n ...item,\n }));\n }, [virtualized, items, visibleRange]);\n\n const offsetTop = visibleRange.start * itemHeight;\n const totalHeight = items.length * itemHeight;\n\n useEffect(() => {\n if (virtualized) setScrollTop(0);\n }, [items, virtualized]);\n\n useEffect(() => {\n if (navIndex === null) {\n initialScrolled.current = false;\n }\n }, [navIndex]);\n\n if (navIndex === null) return null;\n\n return (\n <Dropdown key={dropdownKey.current} onCancel={onCancel} {...rest}>\n <div\n className=\"wx-233fr7 wx-list\"\n ref={listRefCallback}\n onClick={selectItem}\n onMouseMove={helpers.current.move}\n onScroll={handleScroll}\n >\n {items.length ? (\n virtualized ? (\n <div\n className=\"wx-233fr7 wx-list-wrapper\"\n style={{ height: `${totalHeight}px` }}\n >\n <div\n className=\"wx-233fr7 wx-list-content\"\n style={{ transform: `translateY(${offsetTop}px)` }}\n >\n <ListContent\n visibleRange={visibleRange}\n visibleItems={visibleItems}\n navIndex={navIndex}\n measureRefCallback={measureRefCallback}\n checkboxes={checkboxes}\n itemTemplate={children}\n value={value}\n />\n </div>\n </div>\n ) : (\n <ListContent\n visibleRange={visibleRange}\n visibleItems={visibleItems}\n navIndex={navIndex}\n measureRefCallback={measureRefCallback}\n checkboxes={checkboxes}\n itemTemplate={children}\n value={value}\n />\n )\n ) : (\n <div className=\"wx-233fr7 wx-no-data\">{_('No data')}</div>\n )}\n </div>\n </Dropdown>\n );\n}\n\n","import { useState, useRef, useMemo, useCallback } from 'react';\nimport List from './helpers/SuggestDropdown.jsx';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Combo.css';\n\nexport default function Combo({\n value: valueProp = '',\n id,\n options = [],\n textOptions = null,\n textField = 'label',\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n clear = false,\n css = '',\n children: kids,\n onChange,\n dropdown = {},\n}) {\n const inputId = useInputId(id);\n const navigate = useRef(null);\n const keydown = useRef(null);\n\n const [value, setValue] = useWritableProp(valueProp);\n const [filterActive, setFilterActive] = useState(false);\n const [textInput, setTextInput] = useState('');\n\n const inputElement = useRef(null);\n const hasFocus = useRef(false);\n\n // calculate the derived values\n const text = useMemo(() => {\n if (filterActive) return textInput;\n if (value || value === 0) {\n const option = (textOptions || options).find((a) => a.id === value);\n if (option) return option[textField];\n }\n return '';\n }, [filterActive, textInput, value, textOptions, options, textField]);\n\n const filteredOptions = useMemo(() => {\n if (!text || !filterActive) return options;\n\n return options.filter((i) =>\n i[textField].toLowerCase().includes(text.toLowerCase()),\n );\n }, [text, filterActive, options, textField]);\n\n const index = useCallback(\n () => filteredOptions.findIndex((a) => a.id === value),\n [filteredOptions, value],\n );\n\n const ready = useCallback((ev) => {\n navigate.current = ev.navigate;\n keydown.current = ev.keydown;\n }, []);\n\n const doSelect = useCallback(\n (id, effects) => {\n if (id || id === 0) {\n let selected = options.find((a) => a.id === id);\n setFilterActive(false);\n\n if (effects) navigate.current(null);\n\n if (selected && value !== selected.id) {\n const newValue = selected.id;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n }\n }\n\n if (!hasFocus.current && effects) inputElement.current.focus();\n },\n [options, value, onChange],\n );\n\n const selectByEvent = useCallback(\n ({ id }) => {\n doSelect(id, true);\n },\n [doSelect],\n );\n\n const doUnselect = useCallback(\n (ev) => {\n if (ev) ev.stopPropagation();\n\n setValue('');\n setFilterActive(false);\n onChange && onChange({ value: '' });\n },\n [onChange],\n );\n\n const selectByText = useCallback(\n (chunk) => {\n if (!options.length) return;\n if (chunk === '' && clear) {\n doUnselect();\n return;\n }\n\n let res = options.find((i) => i[textField] === chunk);\n if (!res) {\n res = options.find((i) =>\n i[textField].toLowerCase().includes(chunk.toLowerCase()),\n );\n }\n\n const id = res ? res.id : value || options[0].id;\n doSelect(id, false);\n },\n [options, textField, clear, value, doSelect, doUnselect],\n );\n\n const handleInput = useCallback(() => {\n setTextInput(inputElement.current.value);\n setFilterActive(true);\n\n if (filteredOptions.length) navigate.current(0);\n }, [filteredOptions.length, navigate]);\n\n const handleFocus = useCallback(() => {\n hasFocus.current = true;\n }, []);\n\n const handleBlur = useCallback(() => {\n hasFocus.current = false;\n setTimeout(() => {\n if (!hasFocus.current) selectByText(text);\n }, 200);\n }, [selectByText, text]);\n\n return (\n <div\n className={'wx-1j11Jk wx-combo ' + css}\n onClick={() => navigate.current(index())}\n onKeyDown={(ev) => keydown.current(ev, index())}\n title={title}\n data-tooltip-text={tooltip}\n >\n <input\n className={'wx-1j11Jk wx-input ' + (error ? 'wx-error' : '')}\n id={inputId}\n ref={inputElement}\n value={text}\n disabled={disabled}\n placeholder={placeholder}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n />\n\n {clear && !disabled && value ? (\n <i className=\"wx-1j11Jk wx-icon wxi-close\" onClick={doUnselect}></i>\n ) : (\n <i className=\"wx-1j11Jk wx-icon wxi-angle-down\"></i>\n )}\n\n {!disabled && (\n <List items={filteredOptions} onReady={ready} onSelect={selectByEvent} {...dropdown}>\n {({ option }) => <>{kids ? kids({ option }) : option[textField]}</>}\n </List>\n )}\n </div>\n );\n}\n","import { useCallback, useEffect, useRef, useMemo } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Text.css';\n\nexport default function Text({\n value: propsValue = '',\n id,\n readonly = false,\n focus = false,\n select = false,\n type = 'text',\n placeholder = '',\n disabled = false,\n error = false,\n title = '',\n tooltip,\n css = '',\n icon = '',\n clear = false,\n onChange,\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(propsValue);\n const inputRef = useRef(null);\n\n const cssString = useMemo(\n () =>\n icon && css.indexOf('wx-icon-left') === -1 ? 'wx-icon-right ' + css : css,\n [icon, css],\n );\n\n const hasLeftIcon = useMemo(\n () => icon && css.indexOf('wx-icon-left') !== -1,\n [icon, css],\n );\n\n useEffect(() => {\n const timer = setTimeout(() => {\n if (focus && inputRef.current) inputRef.current.focus();\n if (select && inputRef.current) inputRef.current.select();\n }, 1);\n\n return () => clearTimeout(timer);\n }, [focus, select]);\n\n const oninput = useCallback(\n (e) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange && onChange({ value: newValue, input: true });\n },\n [onChange],\n );\n\n const ontextchange = useCallback(\n (ev) => onChange && onChange({ value: ev.target.value }),\n [onChange],\n );\n\n function clearValue(ev) {\n ev.stopPropagation();\n setValue('');\n onChange && onChange({ value: '' });\n }\n\n let inputType = type;\n if (type !== 'password' && type !== 'number') {\n inputType = 'text';\n }\n\n // MK :: EXTRACT\n useEffect(() => {\n const handler = ontextchange;\n const node = inputRef.current;\n node.addEventListener('change', handler);\n return () => {\n if (node) {\n node.removeEventListener('change', handler);\n }\n };\n }, [ontextchange]);\n\n return (\n <div\n className={`wx-hQ64J4 wx-text ${cssString} ${error ? 'wx-error' : ''} ${\n disabled ? 'wx-disabled' : ''\n } ${clear ? 'wx-clear' : ''}`}\n data-tooltip-text={tooltip}\n >\n <input\n className=\"wx-hQ64J4 wx-input\"\n ref={inputRef}\n id={inputId}\n readOnly={readonly}\n disabled={disabled}\n placeholder={placeholder}\n type={inputType}\n title={title}\n value={value}\n onInput={oninput}\n />\n\n {clear && !disabled && value ? (\n <>\n <i className=\"wx-hQ64J4 wx-icon wxi-close\" onClick={clearValue}></i>\n {hasLeftIcon && <i className={`wx-hQ64J4 wx-icon ${icon}`}></i>}\n </>\n ) : icon ? (\n <i className={`wx-hQ64J4 wx-icon ${icon}`}></i>\n ) : null}\n </div>\n );\n}\n","import { useContext, useMemo } from 'react';\nimport { dateToString, getDuodecade } from '@svar-ui/lib-dom';\nimport { i18n } from '../../context.js';\n\nfunction Header({ date, type, part, onShift }) {\n const { calendar, formats } = useContext(i18n).getRaw();\n\n const year = date.getFullYear();\n\n const label = useMemo(() => {\n switch (type) {\n case 'month':\n return dateToString(formats.monthYearFormat, calendar)(date);\n case 'year':\n return dateToString(formats.yearFormat, calendar)(date);\n case 'duodecade': {\n const { start, end } = getDuodecade(year);\n const yearFormat = dateToString(formats.yearFormat, calendar);\n return `${yearFormat(new Date(start, 0, 1))} - ${yearFormat(new Date(end, 11, 31))}`;\n }\n default:\n return '';\n }\n }, [date, type, year, calendar, formats]);\n\n function changeType() {\n onShift && onShift({ diff: 0, type });\n }\n\n return (\n <div className=\"wx-8HQVQV wx-header\">\n {part !== 'right' ? (\n <i\n className=\"wx-8HQVQV wx-pager wxi-angle-left\"\n onClick={() => onShift && onShift({ diff: -1, type })}\n />\n ) : (\n <span className=\"wx-8HQVQV wx-spacer\" />\n )}\n\n <span className=\"wx-8HQVQV wx-label\" onClick={changeType}>\n {label}\n </span>\n\n {part !== 'left' ? (\n <i\n className=\"wx-8HQVQV wx-pager wxi-angle-right\"\n onClick={() => onShift && onShift({ diff: 1, type })}\n />\n ) : (\n <span className=\"wx-8HQVQV wx-spacer\" />\n )}\n </div>\n );\n}\n\nimport './Header.css';\n\nexport default Header;\n","import './Button.css';\n\nexport default function Button({ onClick, children }) {\n return (\n <button className=\"wx-3s8W4d wx-button\" onClick={onClick}>\n {children}\n </button>\n );\n}\n","import { useContext, useMemo, useEffect, useRef } from 'react';\nimport { delegateClick } from '@svar-ui/lib-dom';\nimport { i18n } from '../../context.js';\nimport './Month.css';\nimport { defaultLocale } from '../helpers/locale.js';\n\nexport default function Month({\n value,\n current,\n part = '',\n markers = null,\n css = '',\n onCancel,\n onChange,\n}) {\n const locale = (useContext(i18n) || defaultLocale()).getRaw().calendar;\n const weekStart = (locale.weekStart || 7) % 7;\n const weekdays = locale.dayShort\n .slice(weekStart)\n .concat(locale.dayShort.slice(0, weekStart));\n\n const dv = (d, dm, dd) =>\n new Date(\n d.getFullYear(),\n d.getMonth() + (dm || 0),\n d.getDate() + (dd || 0),\n );\n let ranges = part !== 'normal';\n\n function isWeekEnd(date) {\n const d = date.getDay();\n return d === 0 || d === 6;\n }\n\n function getStart() {\n const start = dv(current, 0, 1 - current.getDate());\n start.setDate(start.getDate() - ((start.getDay() - (weekStart - 7)) % 7));\n return start;\n }\n function getEnd() {\n const end = dv(current, 1, -current.getDate());\n end.setDate(end.getDate() + ((6 - end.getDay() + weekStart) % 7));\n return end;\n }\n\n //MK : HACK\n const lastTime = useRef(0);\n function selectDate(date, e) {\n if (e.timeStamp === lastTime.current) return;\n lastTime.current = e.timeStamp;\n\n e.stopPropagation();\n if (onChange) onChange(new Date(date));\n if (onCancel) onCancel();\n }\n\n const date = useMemo(() => {\n if (part == 'normal') return [value ? dv(value).valueOf() : 0];\n return value\n ? [\n value.start ? dv(value.start).valueOf() : 0,\n value.end ? dv(value.end).valueOf() : 0,\n ]\n : [0, 0];\n }, [part, value]);\n\n const days = useMemo(() => {\n const start = getStart();\n const end = getEnd();\n const curMonth = current.getMonth();\n\n let days = [];\n for (let d = start; d <= end; d.setDate(d.getDate() + 1)) {\n const day = {\n day: d.getDate(),\n in: d.getMonth() === curMonth,\n date: d.valueOf(),\n };\n\n let css = '';\n css += !day.in ? ' wx-inactive' : '';\n css += date.indexOf(day.date) > -1 ? ' wx-selected' : '';\n\n if (ranges) {\n const s = day.date == date[0];\n const e = day.date == date[1];\n if (s && !e) css += ' wx-left';\n else if (e && !s) css += ' wx-right';\n\n if (day.date > date[0] && day.date < date[1]) css += ' wx-inrange';\n }\n\n css += isWeekEnd(d) ? ' wx-weekend' : '';\n if (markers) {\n const mark = markers(d);\n if (mark) css += ' ' + mark;\n }\n\n days.push({ ...day, css });\n }\n return days;\n }, [current, date, ranges, markers]);\n\n const delegateRef = useRef(null);\n let delegateHandler = useRef({});\n delegateHandler.current.click = selectDate;\n\n useEffect(() => {\n delegateClick(delegateRef.current, delegateHandler.current);\n }, []);\n\n return (\n <div className={`wx-398RBS wx-month ${css}`}>\n <div className=\"wx-398RBS wx-weekdays\">\n {weekdays.map((day) => (\n <div key={day} className=\"wx-398RBS wx-weekday\">\n {day}\n </div>\n ))}\n </div>\n <div className=\"wx-398RBS wx-days\" ref={delegateRef}>\n {days.map((day) => (\n <div\n key={day.date}\n className={`wx-398RBS wx-day ${day.css} ${!day.in ? 'wx-out' : ''}`}\n data-id={day.date}\n >\n {day.day}\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import { useContext, useMemo, useCallback, useRef } from 'react';\nimport Button from './Button.jsx';\nimport { getPartValue } from './helpers';\nimport { i18n } from '../../context.js';\nimport './Year.css';\nimport { useWritableProp } from '@svar-ui/lib-react';\n\nexport default function Year({\n value: valueProp,\n current: currentProp,\n part,\n onCancel,\n onChange,\n onShift,\n}) {\n const defaultDate = useRef(new Date());\n const [value, setValue] = useWritableProp(valueProp || defaultDate.current);\n const [current, setCurrent] = useWritableProp(currentProp || defaultDate.current);\n\n const locale = useContext(i18n).getRaw().calendar;\n const months = locale.monthShort || [];\n\n const monthNum = useMemo(() => {\n return current.getMonth();\n }, [current]);\n\n const selectMonth = useCallback(\n (month, e) => {\n if (month !== null && month !== undefined) {\n e.stopPropagation();\n const newCurrent = new Date(current);\n newCurrent.setMonth(month);\n setCurrent(newCurrent);\n\n onShift && onShift({ current: newCurrent });\n }\n\n if (part === 'normal') setValue(new Date(current));\n\n onCancel && onCancel();\n },\n [current, part, onShift, onCancel],\n );\n\n const done = useCallback(() => {\n const date = new Date(getPartValue(value, part) || current);\n\n date.setMonth(current.getMonth());\n date.setFullYear(current.getFullYear());\n\n onChange && onChange(date);\n }, [value, current, part, onChange]);\n\n const handleMonthClick = useCallback(\n (e) => {\n const target = e.target.closest('[data-id]');\n if (target) {\n const month = parseInt(target.getAttribute('data-id'), 10);\n selectMonth(month, e);\n }\n },\n [selectMonth],\n );\n\n return (\n <>\n <div className={'wx-34U8T8 wx-months'} onClick={handleMonthClick}>\n {months.map((month, i) => (\n <div\n key={i}\n className={\n 'wx-34U8T8 wx-month' + (monthNum === i ? ' wx-current' : '')\n }\n data-id={i}\n >\n {month}\n </div>\n ))}\n </div>\n <div className={'wx-34U8T8 wx-buttons'}>\n <Button onClick={done}>{locale.done}</Button>\n </div>\n </>\n );\n}\n","import { useContext, useMemo, useRef, useEffect } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { delegateClick, getDuodecade } from '@svar-ui/lib-dom';\nimport Button from './Button.jsx';\nimport { getPartValue } from './helpers';\nimport { i18n } from '../../context.js';\nimport './Duodecade.css';\n\nconst cssScope = 'wx-1XEF33';\n\nconst Duodecade = ({ value, current, onCancel, onChange, onShift, part }) => {\n const _ = useContext(i18n).getRaw().calendar;\n\n const [currentState, setCurrent] = useWritableProp(current);\n const [valueState, setValue] = useWritableProp(value);\n\n const year = useMemo(() => currentState.getFullYear(), [currentState]);\n\n const years = useMemo(() => {\n const { start, end } = getDuodecade(year);\n const years = [];\n for (let y = start; y <= end; ++y) {\n years.push(y);\n }\n return years;\n }, [year]);\n\n const selectYears = {\n click: selectYear,\n };\n\n function selectYear(yearVal, e) {\n if (yearVal) {\n e.stopPropagation();\n const newCurrent = new Date(currentState);\n newCurrent.setFullYear(yearVal);\n setCurrent(newCurrent);\n\n onShift && onShift({ current: newCurrent });\n }\n\n if (part === 'normal') {\n setValue(new Date(currentState));\n }\n\n onCancel && onCancel();\n }\n\n function done() {\n const date = new Date(getPartValue(valueState, part) || currentState);\n\n date.setFullYear(currentState.getFullYear());\n\n onChange && onChange(date);\n }\n\n const containerRef = useRef(null);\n\n useEffect(() => {\n if (containerRef.current) {\n delegateClick(containerRef.current, selectYears);\n }\n }, []);\n\n return (\n <>\n <div className={cssScope + ' wx-years'} ref={containerRef}>\n {years.map((y, i) => (\n <div\n key={i}\n className={\n cssScope +\n ` wx-year ${year == y ? 'wx-current' : ''} ${i === 0 ? 'wx-prev-decade' : ''} ${i === 11 ? 'wx-next-decade' : ''}`\n }\n data-id={y}\n >\n {y}\n </div>\n ))}\n </div>\n <div className={cssScope + ' wx-buttons'}>\n <Button onClick={done}>{_.done}</Button>\n </div>\n </>\n );\n};\n\nexport default Duodecade;\n","import Month from './Month.jsx';\nimport Year from './Year.jsx';\nimport Duodecade from './Duodecade.jsx';\n\nexport const configs = {\n month: {\n component: Month,\n next: nextMonth,\n prev: prevMonth,\n },\n year: {\n component: Year,\n next: nextYear,\n prev: prevYear,\n },\n duodecade: {\n component: Duodecade,\n next: nextDuodecade,\n prev: prevDuodecade,\n },\n};\n\nfunction prevMonth(current) {\n current = new Date(current);\n current.setMonth(current.getMonth() - 1);\n return current;\n}\nfunction nextMonth(current) {\n current = new Date(current);\n current.setMonth(current.getMonth() + 1);\n return current;\n}\nfunction prevYear(current) {\n current = new Date(current);\n current.setFullYear(current.getFullYear() - 1);\n return current;\n}\nfunction nextYear(current) {\n current = new Date(current);\n current.setFullYear(current.getFullYear() + 1);\n return current;\n}\nfunction prevDuodecade(current) {\n current = new Date(current);\n current.setFullYear(current.getFullYear() - 10);\n return current;\n}\nfunction nextDuodecade(current) {\n current = new Date(current);\n current.setFullYear(current.getFullYear() + 10);\n return current;\n}\n\nexport function getPartValue(value, part) {\n let date;\n if (part === 'normal') date = value;\n else {\n const { start, end } = value;\n if (part === 'left') date = start;\n else if (part == 'right') date = end;\n else date = start ? end : start;\n }\n\n return date;\n}\n","import { useContext, useState, useMemo } from 'react';\nimport Header from './Header.jsx';\nimport Button from './Button.jsx';\nimport { configs } from './helpers';\nimport { i18n } from '../../context.js';\nimport './Panel.css';\n\nconst defaultButtons = ['clear', 'today'];\n\nfunction getButtonValue(btn) {\n if (btn === 'done') return -1;\n if (btn === 'clear') return null;\n if (btn === 'today') return new Date();\n}\n\nfunction Panel({\n value,\n current,\n onCurrentChange,\n part = 'normal',\n markers = null,\n buttons,\n css = '',\n onShift,\n onChange,\n}) {\n const _ = useContext(i18n).getGroup('calendar');\n\n const [type, setType] = useState('month');\n\n const buttonsList = Array.isArray(buttons)\n ? buttons\n : buttons\n ? defaultButtons\n : [];\n\n const selectDate = (ev, date) => {\n ev.preventDefault();\n onChange && onChange({ value: date });\n };\n\n const oncancel = () => {\n if (type === 'duodecade') setType('year');\n else if (type === 'year') setType('month');\n };\n\n const onShiftLocal = (ev) => {\n const { diff, current: newCurrent } = ev;\n\n if (diff === 0) {\n if (type === 'month') setType('year');\n else if (type === 'year') setType('duodecade');\n return;\n }\n if (diff) {\n const obj = configs[type];\n onCurrentChange(diff > 0 ? obj.next(current) : obj.prev(current));\n } else if (newCurrent) {\n onCurrentChange(newCurrent);\n }\n\n onShift && onShift();\n };\n\n const onChangeLocal = (value) => {\n setType('month');\n onChange && onChange({ select: true, value });\n };\n\n const CalendarView = useMemo(() => configs[type].component, [type]);\n\n return (\n <div\n className={`wx-2Gr4AS wx-calendar ${part !== 'normal' && part !== 'both' ? 'wx-part' : ''} ${css}`}\n >\n <div className=\"wx-2Gr4AS wx-wrap\">\n <Header date={current} part={part} type={type} onShift={onShiftLocal} />\n <div>\n <CalendarView\n value={value}\n current={current}\n onCurrentChange={onCurrentChange}\n part={part}\n markers={markers}\n onCancel={oncancel}\n onChange={onChangeLocal}\n onShift={onShiftLocal}\n />\n {type === 'month' && buttonsList.length > 0 && (\n <div className=\"wx-2Gr4AS wx-buttons\">\n {buttonsList.map((button) => (\n <div key={button} className=\"wx-2Gr4AS wx-button-item\">\n <Button\n onClick={(e) => selectDate(e, getButtonValue(button))}\n >\n {_(button)}\n </Button>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport default Panel;\n","import { useContext, useMemo } from 'react';\nimport { i18n } from './context';\nimport { locale } from '@svar-ui/lib-dom';\nimport { en } from '@svar-ui/core-locales';\n\nexport default function Component(props) {\n let { words = null, optional = false, children } = props;\n\n let l = useContext(i18n);\n const v = useMemo(() => {\n let t = l;\n if (!t || !t.extend) t = locale(en);\n if (words !== null) t = t.extend(words, optional);\n return t;\n }, [words, optional, l]);\n\n return <i18n.Provider value={v}>{children}</i18n.Provider>;\n}\n","import { useEffect, useCallback } from 'react';\nimport Panel from './calendar/Panel.jsx';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport Locale from '../Locale.jsx';\n\nfunction fixCurrent(current, value, setCurrent, force) {\n if (!current || force) {\n const newCurrent = value ? new Date(value) : new Date();\n newCurrent.setDate(1);\n setCurrent(newCurrent);\n } else {\n if (current.getDate() !== 1) {\n const newCurrent = new Date(current);\n newCurrent.setDate(1);\n setCurrent(newCurrent);\n }\n }\n}\n\nconst defaultButtons = ['clear', 'today'];\n\nexport default function Calendar({\n value: valueProp,\n current: currentProp,\n markers = null,\n buttons = defaultButtons,\n css = '',\n onChange,\n}) {\n const [value, setValue] = useWritableProp(valueProp);\n const [current, setCurrent] = useWritableProp(currentProp);\n\n useEffect(() => {\n fixCurrent(current, value, setCurrent, false);\n }, [value, current]);\n\n const onChangeLocal = useCallback(\n (v) => {\n const x = v.value;\n if (x) {\n setValue(new Date(x));\n fixCurrent(current, new Date(x), setCurrent, true);\n } else {\n setValue(null);\n }\n\n onChange && onChange({ value: x ? new Date(x) : null });\n },\n [onChange, current],\n );\n\n const onCurrentChangeLocal = useCallback(\n (v) => {\n setCurrent(v);\n },\n [setCurrent],\n );\n\n if (!current) return null;\n\n return (\n <Locale>\n <Panel\n value={value}\n current={current}\n markers={markers}\n buttons={buttons}\n css={css}\n onChange={onChangeLocal}\n onCurrentChange={onCurrentChangeLocal}\n />\n </Locale>\n );\n}\n","export function toDateDropdown(dropdown) {\n if (!dropdown) dropdown = {};\n if (!dropdown.width) dropdown.width = 'unset';\n return dropdown;\n}\n","import { useState, useEffect, useMemo, useContext } from 'react';\nimport { dateToString } from '@svar-ui/lib-dom';\nimport { i18n } from '../context.js';\n\nimport Text from './Text.jsx';\nimport Dropdown from './Dropdown.jsx';\nimport Calendar from './Calendar.jsx';\nimport './DatePicker.css';\nimport { defaultLocale } from './helpers/locale.js';\nimport { toDateDropdown } from './helpers/dropdown.js';\n\nconst defaultButtons = ['clear', 'today'];\n\nexport default function DatePicker({\n value: propValue,\n id,\n disabled = false,\n error = false,\n placeholder = '',\n format = '',\n buttons = defaultButtons,\n css = '',\n title = '',\n tooltip,\n editable = false,\n clear = false,\n onChange,\n dropdown = {},\n}) {\n const { calendar: calendarLocale, formats } = (\n useContext(i18n) || defaultLocale()\n ).getRaw();\n const f = format || formats?.dateFormat;\n let dateFormat =\n typeof f === 'function' ? f : dateToString(f, calendarLocale);\n\n const [value, setValue] = useState(propValue);\n const [popup, setPopup] = useState(false);\n\n // Update local value when prop value changes\n useEffect(() => {\n setValue(propValue);\n }, [propValue]);\n\n function oncancel() {\n setPopup(false);\n }\n\n function doChange(v) {\n // skip \"select\" event if the same value\n // or different objects with the same value\n const skipEvent =\n v === value ||\n (v && value && v.valueOf() === value.valueOf()) ||\n (!v && !value);\n\n setValue(v);\n if (!skipEvent) {\n onChange && onChange({ value: v });\n }\n\n // fire after on-click finished\n setTimeout(oncancel, 1);\n }\n\n const formattedValue = useMemo(\n () => (value ? dateFormat(value) : ''),\n [value, dateFormat],\n );\n\n function onchangeHandler({ value: v, input }) {\n if (!editable && !clear) return;\n if (input) return;\n\n // convert to date, but ignore empty string input\n let date =\n typeof editable === 'function' ? editable(v) : v ? new Date(v) : null;\n\n // if date is invalid ( incorrect text input ) then use old value\n // else use the entered date\n // in any case fallback to null, to prevent undefined as value\n date = isNaN(date) ? value || null : date || null;\n doChange(date);\n }\n\n // Handle scroll event on window\n useEffect(() => {\n const handleScroll = oncancel;\n window.addEventListener('scroll', handleScroll);\n return () => window.removeEventListener('scroll', handleScroll);\n }, []);\n\n return (\n <div className=\"wx-1lKOFG wx-datepicker\" onClick={() => setPopup(true)}>\n <Text\n css={`wx-date-input ${css}`}\n title={title}\n tooltip={tooltip}\n value={formattedValue}\n id={id}\n readonly={!editable}\n disabled={disabled}\n error={error}\n placeholder={placeholder}\n onChange={onchangeHandler}\n icon=\"wxi-calendar\"\n clear={clear}\n />\n\n {popup && !disabled && (\n <Dropdown\n onCancel={oncancel}\n {...toDateDropdown(dropdown)}\n >\n <Calendar\n buttons={buttons}\n value={value}\n onChange={(e) => doChange(e.value)}\n />\n </Dropdown>\n )}\n </div>\n );\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport Panel from './calendar/Panel';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport './RangeCalendar.css';\nimport Locale from '../Locale.jsx';\n\nconst defaultButtons = ['clear', 'today'];\n\nconst addMonth = (l, diff, rPrev) => {\n const r = new Date(l);\n r.setMonth(r.getMonth() + diff);\n if (rPrev && r.valueOf() === rPrev.valueOf()) return rPrev;\n return r;\n};\n\nconst initLeft = (startVal, currentVal) => {\n const v = new Date(startVal || currentVal || new Date());\n v.setDate(1);\n return v;\n};\n\nconst RangeCalendar = ({\n start: startProp,\n end: endProp,\n current,\n months = 2,\n markers = null,\n buttons = defaultButtons,\n css = '',\n onChange,\n}) => {\n const [start, setStart] = useWritableProp(startProp);\n const [end, setEnd] = useWritableProp(endProp);\n const [leftCurrent, setLeftCurrent] = useState(() => initLeft(start, current));\n const [rightCurrent, setRightCurrent] = useState(() =>\n addMonth(initLeft(start, current), 1),\n );\n\n const onLeft = useCallback((v) => {\n setLeftCurrent(() => {\n const newLeft = new Date(v);\n newLeft.setDate(1);\n setRightCurrent(addMonth(newLeft, 1));\n return newLeft;\n });\n }, []);\n\n const onRight = useCallback((v) => {\n setRightCurrent(() => {\n const newRight = new Date(v);\n newRight.setDate(1);\n setLeftCurrent(addMonth(newRight, -1));\n return newRight;\n });\n }, []);\n\n // Recompute left panel whenever start/current change\n useEffect(() => {\n onLeft(start ? new Date(start) : current || new Date());\n }, [start, current, onLeft]);\n\n const selectChange = useCallback(\n (ev) => {\n const v = ev.value;\n let s = start,\n e = end;\n const final = v === -1;\n if (!final) {\n if (ev.select) {\n if (!start || end) {\n setStart((s = v));\n setEnd((e = null));\n } else {\n if (start > v) {\n setEnd((e = start));\n setStart((s = v));\n } else {\n setEnd((e = v));\n }\n }\n } else {\n if (!v) {\n setStart((s = null));\n setEnd((e = null));\n } else {\n setStart((s = new Date(v)));\n setEnd((e = new Date(v)));\n }\n }\n }\n\n if (final || !Array.isArray(buttons) || !buttons.includes('done'))\n onChange && onChange({ start: s, end: e });\n return [s, e];\n },\n [start, end, buttons, onChange],\n );\n\n const doChangeStart = useCallback(\n (v) => {\n const [s] = selectChange(v);\n if (s) onLeft(new Date(s));\n },\n [onLeft, start, end],\n );\n\n const doChangeEnd = useCallback(\n (v) => {\n const [, e] = selectChange(v);\n if (e) onRight(new Date(e));\n },\n [onRight, start, end],\n );\n\n if (months === 1) {\n return (\n <Locale>\n <Panel\n value={{ start, end }}\n current={leftCurrent}\n markers={markers}\n buttons={buttons}\n css={css}\n part=\"both\"\n onChange={doChangeStart}\n onCurrentChange={onLeft}\n />\n </Locale>\n );\n } else {\n return (\n <Locale>\n <div className={`wx-p2jCaW wx-rangecalendar ${css}`}>\n <div className=\"wx-p2jCaW wx-half\">\n <Panel\n value={{ start, end }}\n current={leftCurrent}\n markers={markers}\n buttons={false}\n part=\"left\"\n onChange={doChangeStart}\n onCurrentChange={onLeft}\n />\n </div>\n <div className=\"wx-p2jCaW wx-half\">\n <Panel\n value={{ start, end }}\n current={rightCurrent}\n markers={markers}\n buttons={buttons}\n part=\"right\"\n onChange={doChangeEnd}\n onCurrentChange={onRight}\n />\n </div>\n </div>\n </Locale>\n );\n }\n};\n\nexport default RangeCalendar;\n","import { useState, useEffect, useMemo, useContext, useCallback } from 'react';\nimport { dateToString } from '@svar-ui/lib-dom';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { i18n } from '../context.js';\n\nimport Text from './Text.jsx';\nimport Dropdown from './Dropdown.jsx';\nimport RangeCalendar from './RangeCalendar.jsx';\nimport { defaultLocale } from './helpers/locale.js';\nimport { toDateDropdown } from './helpers/dropdown.js';\n\nconst defaultButtons = ['clear', 'today'];\n\nconst DateRangePicker = ({\n value: valueProp,\n onChange,\n id,\n disabled = false,\n error = false,\n placeholder = '',\n css = '',\n title = '',\n tooltip,\n format = '',\n months = 2,\n buttons = defaultButtons,\n editable = false,\n clear = false,\n dropdown,\n}) => {\n const [value, setValue] = useWritableProp(valueProp);\n const { calendar: calendarLocale, formats } = (\n useContext(i18n) || defaultLocale()\n ).getRaw();\n\n const f = format || formats?.dateFormat;\n const dateFormat =\n typeof f === 'function' ? f : dateToString(f, calendarLocale);\n\n const [popup, setPopup] = useState(false);\n\n const onCancel = useCallback(() => {\n setPopup(false);\n }, []);\n\n const formattedValue = useMemo(() => {\n return value\n ? value.start\n ? dateFormat(value.start) +\n (value.end ? ` - ${dateFormat(value.end)}` : '')\n : dateFormat(value)\n : '';\n }, [value, dateFormat]);\n\n const start = useMemo(() => {\n return value ? value.start || null : null;\n }, [value]);\n\n const end = useMemo(() => {\n return value ? value.end || null : null;\n }, [value]);\n\n const doChange = useCallback(\n (d) => {\n const newValue = d.start || d.end ? { start: d.start, end: d.end } : null;\n\n // Handle both cases: either external setValue or onChange prop\n if (setValue) {\n setValue(newValue);\n } else {\n // Parent must handle value prop update via onChange\n }\n\n // fire after on-click finished\n if ((d.start && d.end) || (!d.start && !d.end)) {\n // FIXME - select event will trigger even if the same value\n if (onChange) {\n onChange({ value: newValue });\n }\n setTimeout(onCancel, 1);\n }\n },\n [onChange, onCancel, setValue],\n );\n\n const doInputChange = useCallback(\n (ev) => {\n if (!editable && !clear) return;\n\n const { value: v, input } = ev;\n if (input) return;\n\n const [s, e] = v.split(' -').map((a, i) => {\n const av = a.trim();\n let date =\n typeof editable === 'function'\n ? editable(av)\n : av\n ? new Date(av)\n : null;\n\n // if date is invalid ( incorrect text input ) then use old value\n // else use the entered date\n // in any case fallback to null, to prevent undefined as value\n let val = i === 0 ? start : end;\n return isNaN(date) ? (val ? val : null) : date || null;\n });\n\n doChange({ start: s, end: e });\n },\n [editable, clear, start, end, doChange],\n );\n\n useEffect(() => {\n const handleScroll = () => {\n onCancel();\n };\n\n window.addEventListener('scroll', handleScroll);\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, [onCancel]);\n\n return (\n <div\n className={`wx-1b0WDQ wx-daterangepicker ${disabled ? 'wx-disabled' : ''} ${error ? 'wx-error' : ''}`}\n onClick={() => setPopup(true)}\n >\n <Text\n css={`wx-date-input ${css}`}\n title={title}\n tooltip={tooltip}\n value={formattedValue}\n id={id}\n readonly={!editable}\n disabled={disabled}\n placeholder={placeholder}\n error={error}\n onChange={doInputChange}\n icon=\"wxi-calendar\"\n clear={clear}\n />\n\n {popup && !disabled && (\n <Dropdown\n onCancel={onCancel}\n {...toDateDropdown(dropdown)}\n >\n <RangeCalendar\n buttons={buttons}\n start={start}\n end={end}\n months={months}\n onChange={doChange}\n />\n </Dropdown>\n )}\n </div>\n );\n};\n\nexport default DateRangePicker;\n\nimport './DateRangePicker.css';\n","import { useEffect, useRef, useState, useMemo } from 'react';\nimport { useHotkeys } from '@svar-ui/lib-react';\nimport Button from './Button.jsx';\nimport './Fullscreen.css';\n\nexport default function Fullscreen({\n hotkey = null,\n toggleButton,\n children,\n}) {\n const nodeRef = useRef(null);\n const [inFullscreen, setInFullscreen] = useState(false);\n\n const icon = useMemo(\n () => `wxi-${inFullscreen ? 'collapse' : 'expand'}`,\n [inFullscreen],\n );\n\n const toggleFullscreen = useRef(null);\n toggleFullscreen.current = () => {\n const node = nodeRef.current;\n if (!inFullscreen && node) {\n node.requestFullscreen();\n } else if (inFullscreen) {\n document.exitFullscreen();\n }\n setInFullscreen((prev) => !prev);\n };\n\n useHotkeys({ [hotkey]: () => toggleFullscreen.current() }, nodeRef);\n\n useEffect(() => {\n const setFullscreenState = () => {\n setInFullscreen(document.fullscreenElement === nodeRef.current);\n };\n\n document.addEventListener('fullscreenchange', setFullscreenState);\n return () => {\n document.removeEventListener('fullscreenchange', setFullscreenState);\n };\n }, []);\n\n return (\n <div className=\"wx-13aa5W wx-fullscreen\" ref={nodeRef} tabIndex={-1}>\n {children}\n {toggleButton ? (\n toggleButton(toggleFullscreen.current, inFullscreen)\n ) : (\n <Button css=\"wx-13aa5W wx-fullscreen-button\" onClick={toggleFullscreen.current}>\n <i className={`wx-13aa5W ${icon} wx-fullscreen-icon`}> </i>\n </Button>\n )}\n </div>\n );\n}\n","import './Icon.css';\n\nexport default function Icon({ css = '', title = '', tooltip, children, onClick }) {\n if (children) {\n return (\n <i\n title={title}\n role=\"img\"\n className={`wx-mdnST1 wx-icon ${css}`}\n onClick={onClick}\n data-tooltip-text={tooltip}\n >\n {children}\n </i>\n );\n } else {\n return (\n <i\n title={title}\n className={`wx-mdnST1 wx-icon ${css}`}\n onClick={onClick}\n data-tooltip-text={tooltip}\n />\n );\n }\n}\n","import { useState, useMemo, useRef, useCallback } from 'react';\nimport { useWritableProp, snippet } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport List from './helpers/SuggestDropdown.jsx';\nimport './MultiCombo.css';\n\nconst defaultValue = [];\n\nexport default function MultiCombo({\n id,\n value: valueProp = defaultValue,\n options = [],\n textOptions = null,\n textField = 'label',\n keepText = false,\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n checkboxes = false,\n css = '',\n onChange,\n children,\n dropdown = {},\n}) {\n const inputId = useInputId(id);\n const navigate = useRef(null);\n const keydown = useRef(null);\n\n const [value, setValue] = useWritableProp(valueProp);\n\n const [text, setText] = useState('');\n const [focus, setFocus] = useState(false);\n const inputElement = useRef(null);\n\n const selected = useMemo(() => {\n return value\n ? (textOptions || options).filter((i) => value.includes(i.id))\n : [];\n }, [value, textOptions, options]);\n\n const filterOptions = useMemo(() => {\n const o = options;\n return text\n ? o.filter((i) => i[textField].toLowerCase().includes(text.toLowerCase()))\n : o;\n }, [text, options, textField]);\n\n const onready = useCallback((ev) => {\n navigate.current = ev.navigate;\n keydown.current = ev.keydown;\n }, []);\n\n const input = useCallback(() => {\n if (filterOptions.length) navigate.current(0);\n else navigate.current(null);\n }, [filterOptions]);\n\n const onselect = useCallback(\n (ev) => {\n const { id } = ev;\n if (id) {\n setValue(id);\n if (!keepText) setText('');\n onChange && onChange({ value: id });\n inputElement.current.focus();\n }\n },\n [onChange, keepText],\n );\n\n const remove = useCallback(\n (id, ev) => {\n if (ev) ev.stopPropagation();\n\n const next = value.filter((i) => i !== id);\n setValue(next);\n onChange && onChange({ value: next });\n },\n [value, onChange],\n );\n\n const index = useCallback(\n () =>\n value && value.length\n ? filterOptions.findIndex((i) => i.id === value[0])\n : 0,\n [value, filterOptions],\n );\n\n const onClickHandler = useCallback(() => {\n if (!disabled) {\n inputElement.current.focus();\n navigate.current(index());\n }\n }, [disabled, index]);\n\n return (\n <div\n title={title}\n className={\n `wx-12Wj21 wx-multicombo ${css} ` +\n `${error ? 'wx-error' : ''} ${disabled ? 'wx-disabled' : ''} ${selected.length ? 'wx-not-empty' : ''} ${focus && !disabled ? 'wx-focus' : ''}`\n }\n onClick={onClickHandler}\n onKeyDown={(ev) => keydown.current(ev, index())}\n data-tooltip-text={tooltip}\n >\n <div className=\"wx-12Wj21 wx-wrapper\">\n <div className=\"wx-12Wj21 wx-tags\">\n {selected.map((tag) => (\n <div key={tag.id} className=\"wx-12Wj21 wx-tag\">\n {children ? snippet(children, { option: tag }) : tag[textField]}\n {!disabled && (\n <i\n className=\"wx-12Wj21 wx-icon wxi-close\"\n onClick={(ev) => remove(tag.id, ev)}\n ></i>\n )}\n </div>\n ))}\n </div>\n <div className=\"wx-12Wj21 wx-select\">\n <input\n className=\"wx-12Wj21 wx-input\"\n id={inputId}\n type=\"text\"\n value={text}\n onChange={(ev) => setText(ev.target.value)}\n onInput={input}\n placeholder={placeholder}\n disabled={disabled}\n onFocus={() => setFocus(true)}\n onBlur={() => setFocus(false)}\n ref={inputElement}\n />\n <i className=\"wx-12Wj21 wx-icon wxi-angle-down\"></i>\n </div>\n </div>\n\n {!disabled && (\n <List\n items={filterOptions}\n multiselect={true}\n onReady={onready}\n onSelect={onselect}\n checkboxes={checkboxes}\n value={value}\n {...dropdown}\n >\n {({ option }) => (\n <>\n {children ? snippet(children, { option }) : option[textField]}\n </>\n )}\n </List>\n )}\n </div>\n );\n}\n","import { useContext } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { i18n } from '../context.js';\nimport './Pager.css';\nimport { defaultLocale } from './helpers/locale.js';\n\nconst Pager = ({\n total = 0,\n pageSize: initialPageSize = 20,\n value: initialValue = 1,\n css = '',\n onChange,\n}) => {\n const [pageSize, setPageSize] = useWritableProp(initialPageSize);\n const [value, setValue] = useWritableProp(initialValue);\n\n const _ = (useContext(i18n) || defaultLocale()).getGroup('core');\n\n const pageCount = Math.ceil(total / pageSize);\n const from = (value - 1) * pageSize;\n const to = Math.min(value * pageSize, total);\n\n const setInnerValue = (v, final) => {\n if (Number.isNaN(v)) return;\n\n if (!final) setValue(v);\n v = Math.max(1, Math.min(v, pageCount));\n if (final) setValue(v);\n\n if (v === value) return;\n setTimeout(() => {\n onChange &&\n onChange({\n value: v,\n from: (v - 1) * pageSize,\n to: Math.min(v * pageSize, total),\n pageSize: pageSize,\n });\n });\n };\n\n function setActivePage(id) {\n switch (id) {\n case 'first':\n setInnerValue(1);\n break;\n\n case 'prev':\n setInnerValue(value - 1);\n break;\n\n case 'next':\n setInnerValue(value + 1);\n break;\n\n case 'last':\n setInnerValue(pageCount);\n break;\n\n default:\n break;\n }\n }\n\n const onPageSizeInput = (e) => {\n const newValue = e.target.value * 1;\n if (Number.isNaN(newValue)) {\n return;\n }\n\n setPageSize(newValue);\n onChange && onChange({ value, from, to, pageSize: newValue });\n };\n\n return (\n <div className={`wx-35Np0p wx-pager ${css}`}>\n <div className=\"wx-35Np0p wx-left\">\n <span>{_('Rows per page')}: </span>\n <input\n type=\"number\"\n min={1}\n className=\"wx-35Np0p wx-input\"\n value={pageSize}\n onChange={onPageSizeInput}\n />\n </div>\n\n <div className=\"wx-35Np0p wx-center\">\n <i\n className={\n 'wx-35Np0p wx-icon wxi-angle-dbl-left' +\n (value === 1 ? ' wx-disabled' : '')\n }\n onClick={() => setActivePage('first')}\n ></i>\n <i\n className={\n 'wx-35Np0p wx-icon wxi-angle-left' +\n (value === 1 ? ' wx-disabled' : '')\n }\n onClick={() => setActivePage('prev')}\n ></i>\n <input\n type=\"text\"\n value={value}\n className=\"wx-35Np0p wx-input\"\n onChange={(e) => setInnerValue(e.target.value * 1)}\n onBlur={(e) => setInnerValue(e.target.value * 1, true)}\n />\n <i\n className={\n 'wx-35Np0p wx-icon wxi-angle-right' +\n (value === pageCount ? ' wx-disabled' : '')\n }\n onClick={() => setActivePage('next')}\n ></i>\n <i\n className={\n 'wx-35Np0p wx-icon wxi-angle-dbl-right' +\n (value === pageCount ? ' wx-disabled' : '')\n }\n onClick={() => setActivePage('last')}\n ></i>\n </div>\n\n <div className=\"wx-35Np0p wx-right\">\n {_('Total pages')}: {pageCount}\n </div>\n </div>\n );\n};\n\nexport default Pager;\n","import { useState } from 'react';\nimport { useInputId } from './helpers/getInputId.js';\nimport { useId } from 'react';\nimport './RadioButton.css';\n\nexport default function RadioButton({\n id,\n label = '',\n value: externalValue,\n name = '',\n inputValue = '',\n disabled = false,\n css = '',\n onChange,\n}) {\n const fallbackId = useId();\n const inputId = useInputId(id) || fallbackId;\n // Internal state for uncontrolled behavior\n const [internalValue, setInternalValue] = useState(false);\n\n // Determine which value to use (controlled vs uncontrolled)\n // For React, we need to handle both cases\n const isControlled = externalValue !== undefined;\n const currentValue = isControlled ? externalValue : internalValue;\n\n function handlerChange(ev) {\n const newValue = ev.target.checked;\n\n if (!isControlled) {\n setInternalValue(newValue);\n }\n\n if (newValue && onChange) {\n onChange({ value: true, inputValue });\n }\n }\n\n return (\n <div className={`wx-3lDF1s wx-radio ${css}`}>\n <input\n type=\"radio\"\n className=\"wx-3lDF1s wx-input\"\n id={inputId}\n disabled={disabled}\n name={name}\n value={inputValue}\n checked={currentValue}\n onChange={handlerChange}\n />\n <label htmlFor={inputId} className=\"wx-3lDF1s wx-label\">\n <span className=\"wx-3lDF1s wx-circle\"></span>\n {label && <span className=\"wx-3lDF1s wx-radio-text\">{label}</span>}\n </label>\n </div>\n );\n}\n","import { uid } from '@svar-ui/lib-dom';\nimport { useState, useEffect } from 'react';\nimport RadioButton from './RadioButton.jsx';\nimport { fieldId } from \"../context\";\nimport './RadioButtonGroup.css';\n\n\nexport default function RadioButtonGroup({\n options = [{}],\n value = '',\n onChange,\n type = '',\n css = '',\n}) {\n const name = uid();\n\n const [currentValue, setCurrentValue] = useState(value);\n\n useEffect(() => {\n setCurrentValue(value);\n }, [value]);\n\n function handleChange(ev) {\n const newValue = ev.inputValue;\n setCurrentValue(newValue);\n if (onChange) {\n onChange({ value: newValue });\n }\n }\n\n return (\n <fieldId.Provider value={null}>\n <div className={`wx-38w70j wx-radiogroup ${type && `wx-${type}`} ${css}`}>\n {options.map((option) => (\n <div key={option.id} className=\"wx-38w70j wx-item\">\n <RadioButton\n label={option.label}\n inputValue={option.id}\n value={currentValue === option.id}\n name={name}\n onChange={handleChange}\n />\n </div>\n ))}\n </div>\n </fieldId.Provider>\n );\n}\n","import { useRef, useCallback, useMemo } from 'react';\nimport List from './helpers/SuggestDropdown.jsx';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport './RichSelect.css';\n\nexport default function RichSelect({\n value: propertyValue = '',\n options = [],\n textOptions = null,\n placeholder = '',\n disabled = false,\n error = false,\n title = '',\n tooltip,\n textField = 'label',\n clear = false,\n css = '',\n children: kids,\n onChange,\n dropdown = {},\n}) {\n const navigate = useRef(null);\n const keydown = useRef(null);\n let [value, setValue] = useWritableProp(propertyValue);\n\n function ready(ev) {\n navigate.current = ev.navigate;\n keydown.current = ev.keydown;\n }\n\n const selected = useMemo(() => {\n return value || value === 0\n ? (textOptions || options).find((a) => a.id === value)\n : null;\n }, [value, textOptions, options]);\n\n const select = useCallback(\n ({ id }) => {\n if (id || id === 0) {\n setValue(id);\n navigate.current(null);\n onChange && onChange({ value: id });\n }\n },\n [setValue, onChange],\n );\n\n const unselect = useCallback(\n (ev) => {\n ev.stopPropagation();\n setValue('');\n onChange && onChange({ value: '' });\n },\n [setValue, onChange],\n );\n\n const index = useCallback(() => {\n return options.findIndex((a) => a.id === value);\n }, [options, value]);\n\n return (\n <div\n className={`wx-2YgblL wx-richselect ${css} ${error ? 'wx-2YgblL wx-error' : ''} ${disabled ? 'wx-2YgblL wx-disabled' : ''} ${!kids ? 'wx-2YgblL wx-nowrap' : ''}`}\n title={title}\n onClick={() => navigate.current(index())}\n onKeyDown={(ev) => keydown.current(ev, index())}\n tabIndex={0}\n data-tooltip-text={tooltip}\n >\n <div className=\"wx-2YgblL wx-label\">\n {selected ? (\n kids ? (\n kids(selected)\n ) : (\n selected[textField]\n )\n ) : placeholder ? (\n <span className=\"wx-2YgblL wx-placeholder\">{placeholder}</span>\n ) : (\n '\\u00A0'\n )}\n </div>\n\n {clear && !disabled && value ? (\n <i className=\"wx-2YgblL wx-icon wxi-close\" onClick={unselect} />\n ) : (\n <i className=\"wx-2YgblL wx-icon wxi-angle-down\" />\n )}\n\n {!disabled && (\n <List items={options} onReady={ready} onSelect={select} {...dropdown}>\n {({ option }) => (kids ? kids(option) : option[textField])}\n </List>\n )}\n </div>\n );\n}\n","import { useState, useEffect } from 'react';\nimport { snippet } from '@svar-ui/lib-react';\nimport './Segmented.css';\n\nconst Segmented = ({\n options = [],\n value = '',\n css = '',\n children,\n onChange,\n}) => {\n // Note: Using additional state for controlled/uncontrolled handling since React doesn't allow direct prop mutation\n const [internalValue, setInternalValue] = useState(value);\n\n const handleClick = (id) => {\n setInternalValue(id);\n if (onChange) {\n onChange({ value: id });\n }\n };\n\n // Ensure internal value stays in sync with external value changes\n useEffect(() => {\n setInternalValue(value);\n }, [value]);\n\n return (\n <div className={'wx-0hMO7P' + ` wx-segmented ${css}`}>\n {options.map((option) => (\n <button\n key={option.id}\n className={\n 'wx-0hMO7P' +\n ` wx-segment ${option.id === internalValue ? 'wx-selected' : ''}`\n }\n title={option.title}\n onClick={() => handleClick(option.id)}\n data-tooltip-text={option.tooltip}\n >\n {children ? (\n snippet(children, { option })\n ) : (\n <>\n {option.icon && (\n <i\n className={\n 'wx-0hMO7P' +\n ` wx-icon ${option.icon} ${!option.label ? 'wx-only' : ''}`\n }\n ></i>\n )}\n {option.label && (\n <span className=\"wx-0hMO7P wx-label\">{option.label}</span>\n )}\n </>\n )}\n </button>\n ))}\n </div>\n );\n};\n\nexport default Segmented;\n","import { useState, useCallback } from 'react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Select.css';\n\nexport default function Select({\n value: valueProp,\n options = [],\n placeholder = '',\n title = '',\n tooltip,\n disabled = false,\n error = false,\n textField = 'label',\n clear = false,\n id,\n css = '',\n onChange,\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useState(valueProp || '');\n\n const handleChange = useCallback(\n (event) => {\n const newValue = event.target.value;\n setValue(newValue);\n if (onChange) onChange({ value: newValue });\n },\n [onChange],\n );\n\n const unselect = useCallback(() => {\n setValue('');\n if (onChange) onChange({ value: '' });\n }, [onChange]);\n\n return (\n <div\n className={'wx-2yx1Fo wx-select-box ' + css}\n data-tooltip-text={tooltip}\n >\n <select\n id={inputId}\n value={value}\n disabled={disabled}\n className={`wx-2yx1Fo wx-select ${error ? 'wx-2yx1Fo wx-error' : ''}`}\n title={title}\n onChange={handleChange}\n >\n <option value=\"\">{placeholder}</option>\n {options.map((option) => (\n <option key={option.id} value={option.id}>\n {option[textField]}\n </option>\n ))}\n </select>\n\n {clear && !disabled && value ? (\n <i className=\"wx-2yx1Fo wx-icon wxi-close\" onClick={unselect}></i>\n ) : (\n <i className=\"wx-2yx1Fo wx-icon wxi-angle-down\"></i>\n )}\n </div>\n );\n}\n","import { useEffect, useMemo, useRef } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Slider.css';\n\nexport default function Slider({\n id,\n label = '',\n css = '',\n min = 0,\n max = 100,\n value: initialValue = 0,\n step = 1,\n title = '',\n tooltip,\n disabled = false,\n onChange,\n width = \"\",\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(initialValue);\n const previous = useRef({ value: value, input: value });\n\n const progress = useMemo(\n () => ((value - min) / (max - min)) * 100 + '%',\n [value, min, max],\n );\n\n const bgStyle = useMemo(() => {\n return disabled\n ? ''\n : `linear-gradient(90deg, var(--wx-slider-primary) 0% ${progress}, var(--wx-slider-background) ${progress} 100%)`;\n }, [disabled, progress]);\n\n function oninput({ target }) {\n const newValue = target.value * 1;\n setValue(newValue);\n onChange &&\n onChange({\n value: newValue,\n previous: previous.current.input,\n input: true,\n });\n previous.current.input = newValue;\n }\n\n function onslider({ target }) {\n const newValue = target.value * 1;\n setValue(newValue);\n onChange && onChange({ value: newValue, previous: previous.current.value });\n previous.current.value = newValue;\n }\n\n // Sync if props.value changes externally\n useEffect(() => {\n setValue(initialValue);\n }, [initialValue]);\n\n const inputRef = useRef(null);\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.addEventListener('change', onslider);\n return () => {\n if (inputRef.current) {\n inputRef.current.removeEventListener('change', onslider);\n }\n };\n }\n }, [inputRef, onslider]);\n\n const style = {...(width && { width })};\n\n return (\n <div\n className={`wx-2EDJ8G wx-slider ${css}`}\n style={style}\n title={title}\n data-tooltip-text={tooltip}\n >\n {label && (\n <label className=\"wx-2EDJ8G wx-label\" htmlFor={inputId}>\n {label}\n </label>\n )}\n <div className=\"wx-2EDJ8G wx-inner\">\n <input\n id={inputId}\n className=\"wx-2EDJ8G wx-input\"\n type=\"range\"\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n value={value}\n onInput={oninput}\n style={{ background: bgStyle }}\n ref={inputRef}\n />\n </div>\n </div>\n );\n}\n","import { useCallback } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Switch.css';\n\nexport default function Switch({\n id,\n value: initialValue = false,\n disabled = false,\n css = '',\n onChange,\n}) {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(initialValue);\n\n const handleChange = useCallback(\n (event) => {\n const newValue = event.target.checked;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n },\n [onChange],\n );\n\n return (\n <label className={`wx-2dAR5c wx-switch ${css}`}>\n <input\n className=\"wx-2dAR5c wx-input\"\n type=\"checkbox\"\n checked={value}\n onChange={handleChange}\n disabled={disabled}\n id={inputId}\n />\n <span className=\"wx-2dAR5c wx-box\" />\n </label>\n );\n}\n","import { useWritableProp } from '@svar-ui/lib-react';\nimport './Tabs.css';\n\nconst Tabs = ({\n options = [],\n value: propValue = '',\n type = 'top',\n css = '',\n onChange,\n}) => {\n const [value, setValue] = useWritableProp(propValue);\n\n const handleClick = (optionId) => {\n setValue(optionId);\n if (onChange) {\n onChange({ value: optionId });\n }\n };\n\n return (\n <div className={'wx-138fWJ ' + `wx-tabs wx-${type} ${css}`}>\n {options.map((option) => (\n <button\n key={option.id}\n className={\n 'wx-138fWJ ' +\n `wx-tab ${option.id === value ? 'wx-active' : ''}`\n }\n title={option.title}\n onClick={() => handleClick(option.id)}\n data-tooltip-text={option.tooltip}\n >\n {option.icon && (\n <i\n className={\n 'wx-138fWJ ' +\n `wx-icon ${option.icon} ${!option.label ? 'wx-only' : ''}`\n }\n ></i>\n )}\n {option.label && (\n <span className=\"wx-138fWJ wx-label\">{option.label}</span>\n )}\n </button>\n ))}\n </div>\n );\n};\n\nexport default Tabs;\n","import { useCallback } from 'react';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { useInputId } from './helpers/getInputId.js';\nimport './Counter.css';\n\nconst Counter = ({\n id,\n value: initialValue = 0,\n step = 1,\n min = 0,\n max = Infinity,\n error = false,\n disabled = false,\n readonly = false,\n css = '',\n tooltip,\n onChange,\n}) => {\n const inputId = useInputId(id);\n const [value, setValue] = useWritableProp(initialValue);\n\n const dec = useCallback(() => {\n if (readonly || value <= min) return;\n const newValue = value - step;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n }, [value, readonly, min, step, onChange]);\n\n const inc = useCallback(() => {\n if (readonly || value >= max) return;\n const newValue = value + step;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n }, [value, readonly, max, step, onChange]);\n\n const blur = useCallback(() => {\n if (!readonly) {\n const tValue =\n Math.round(Math.min(max, Math.max(value, min)) / step) * step;\n const newValue = isNaN(tValue) ? Math.max(min, 0) : tValue;\n setValue(newValue);\n onChange && onChange({ value: newValue });\n }\n }, [readonly, value, max, min, step, onChange]);\n\n const input = useCallback(\n (e) => {\n const newValue = e.target.value * 1;\n setValue(newValue);\n onChange && onChange({ value: newValue, input: true });\n },\n [onChange],\n );\n\n return (\n <div\n className={\n 'wx-22t21n ' +\n `wx-counter ${css} ${disabled ? 'wx-disabled' : ''} ${readonly ? 'wx-readonly' : ''} ${error ? 'wx-error' : ''}`\n }\n data-tooltip-text={tooltip}\n >\n <button\n aria-label=\"-\"\n className={'wx-22t21n ' + 'wx-btn wx-btn-dec'}\n disabled={disabled}\n onClick={dec}\n >\n <svg\n className={'wx-22t21n ' + 'wx-dec'}\n width=\"12\"\n height=\"2\"\n viewBox=\"0 0 12 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M11.2501 1.74994H0.750092V0.249939H11.2501V1.74994Z\" />\n </svg>\n </button>\n <input\n id={inputId}\n type=\"text\"\n className={'wx-22t21n ' + 'wx-input'}\n disabled={disabled}\n readOnly={readonly}\n required\n value={value}\n onBlur={blur}\n onInput={input}\n />\n <button\n aria-label=\"-\"\n className={'wx-22t21n ' + 'wx-btn wx-btn-inc'}\n disabled={disabled}\n onClick={inc}\n >\n <svg\n className={'wx-22t21n ' + 'wx-inc'}\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.2501\n\t\t\t\t\t\t\t\t6.74994H6.75009V11.2499H5.25009V6.74994H0.750092V5.24994H5.25009V0.749939H6.75009V5.24994H11.2501V6.74994Z\"\n />\n </svg>\n </button>\n </div>\n );\n};\n\nexport default Counter;\n","import './Notice.css';\n\nexport default function Notice({ notice = {} }) {\n function onRemove() {\n if (notice.remove) notice.remove();\n }\n\n return (\n <div\n className={`wx-11sNg5 wx-notice wx-${notice.type ? notice.type : ''}`}\n role=\"status\"\n aria-live=\"polite\"\n >\n <div className=\"wx-11sNg5 wx-text\">{notice.text}</div>\n <div className=\"wx-11sNg5 wx-button\">\n <i className=\"wx-11sNg5 wxi-close\" onClick={onRemove} />\n </div>\n </div>\n );\n}\n","import Notice from './Notice.jsx';\nimport './Notices.css';\n\nexport default function Notices({ data = [] }) {\n return (\n <div className=\"wx-3nwoO9 wx-notices\">\n {data.map((notice) => (\n <Notice key={notice.id} notice={notice} />\n ))}\n </div>\n );\n}\n","import { useRef, useEffect, useContext } from 'react';\nimport Button from './Button.jsx';\nimport { i18n } from '../context.js';\nimport './Modal.css';\nimport { defaultLocale } from './helpers/locale.js';\n\nexport default function Modal({\n title = '',\n buttons = ['cancel', 'ok'],\n header,\n children,\n footer,\n css = '',\n onConfirm,\n onCancel,\n}) {\n const _ = (useContext(i18n) || defaultLocale()).getGroup('core');\n const modal = useRef(null);\n\n useEffect(() => {\n modal.current?.focus();\n }, []);\n\n function keydown(ev) {\n switch (ev.code) {\n case 'Enter': {\n const from = ev.target.tagName;\n if (from === 'TEXTAREA' || from === 'BUTTON') return;\n onConfirm && onConfirm({ event: ev });\n break;\n }\n case 'Escape':\n onCancel && onCancel({ event: ev });\n break;\n }\n }\n\n function onclick(ev, button) {\n const pack = { event: ev, button };\n if (button === 'cancel') {\n onCancel && onCancel(pack);\n } else {\n onConfirm && onConfirm(pack);\n }\n }\n\n return (\n <div\n className={`wx-1FxkZa wx-modal ${css}`}\n ref={modal}\n tabIndex={0}\n onKeyDown={keydown}\n >\n <div className=\"wx-1FxkZa wx-window\">\n {header ? (\n header\n ) : title ? (\n <div className=\"wx-1FxkZa wx-header\">{title}</div>\n ) : null}\n\n <div>{children}</div>\n\n {footer\n ? footer\n : buttons && (\n <div className=\"wx-1FxkZa wx-buttons\">\n {buttons.map((button) => (\n <div key={button} className=\"wx-1FxkZa wx-button\">\n <Button\n type={`block ${button === 'ok' ? 'primary' : 'secondary'}`}\n onClick={(ev) => onclick(ev, button)}\n >\n {_(button)}\n </Button>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { useState, useImperativeHandle, forwardRef } from 'react';\nimport Notices from './Notices.jsx';\nimport Modal from './Modal.jsx';\n\nimport { uid } from '@svar-ui/lib-dom';\n\nfunction Globals({ children }, apiRef) {\n const [modal, setModal] = useState(null);\n const [notices, setNotices] = useState([]);\n\n useImperativeHandle(\n apiRef,\n () => ({\n showModal: (msg) => {\n const modalObj = { ...msg };\n setModal(modalObj);\n return new Promise((res, rej) => {\n modalObj.resolve = (v) => {\n setModal(null);\n res(v);\n };\n modalObj.reject = (v) => {\n setModal(null);\n rej(v);\n };\n });\n },\n showNotice: (msg) => {\n msg = { ...msg };\n msg.id = msg.id || uid();\n msg.remove = () =>\n setNotices((prev) => prev.filter((a) => a.id !== msg.id));\n\n if (msg.expire != -1) {\n setTimeout(msg.remove, msg.expire || 5100);\n }\n setNotices((prev) => [...prev, msg]);\n },\n }),\n [],\n );\n\n return (\n <>\n {children}\n {modal && (\n <Modal\n title={modal.title}\n buttons={modal.buttons}\n onConfirm={modal.resolve}\n onCancel={modal.reject}\n >\n {modal.message}\n </Modal>\n )}\n <Notices data={notices} />\n </>\n );\n}\n\nconst GlobalsComponentWithRef = forwardRef(Globals);\nexport default GlobalsComponentWithRef;\n","import { useMemo, useRef } from 'react';\nimport { helpers } from './context';\nimport Globals from './components/Globals.jsx';\n\nexport default function Component(props) {\n let { children } = props;\n let api = useRef();\n\n const l = useMemo(() => {\n return {\n showNotice: (msg) => api.current.showNotice(msg),\n showModal: (msg) => api.current.showModal(msg),\n };\n }, []);\n\n return (\n <helpers.Provider value={l}>\n <Globals ref={api}>{children}</Globals>\n </helpers.Provider>\n );\n}\n","import { useMemo } from 'react';\nimport { uid } from '@svar-ui/lib-dom';\nimport { fieldId } from \"../context\";\nimport './Field.css';\n\nexport default function Field({\n label = '',\n position = '',\n error = false,\n type = '',\n required = false,\n id,\n css = '',\n children,\n width = \"\",\n}) {\n const inputId = useMemo(() => (id === undefined ? uid() : id), [id]);\n const style = {...(width && { width })};\n\n return (\n <fieldId.Provider value={inputId}>\n <div\n style={style}\n className={`wx-2oVUvC wx-field wx-${position} ${css} ${error ? 'wx-error' : ''} ${required ? 'wx-required' : ''}`.trim()}\n >\n {label && (\n inputId\n ? <label className=\"wx-2oVUvC wx-label\" htmlFor={inputId}>{label}</label>\n : <div className=\"wx-2oVUvC wx-label\">{label}</div>\n )}\n <div className={`wx-2oVUvC wx-field-control wx-${type}`}>\n {children}\n </div>\n </div>\n </fieldId.Provider>\n );\n}\n","import { useCallback, useMemo } from 'react';\nimport { snippet, useWritableProp } from '@svar-ui/lib-react';\nimport Button from './Button.jsx';\n\nconst TwoState = ({\n value: initialValue = false,\n type = '',\n icon = '',\n disabled = false,\n iconActive = '',\n onClick,\n title = '',\n tooltip,\n css = '',\n text = '',\n textActive = '',\n children,\n active,\n onChange,\n}) => {\n const [value, setValue] = useWritableProp(initialValue);\n\n const typeStr = useMemo(() => {\n return (value ? 'pressed' : '') + (type ? ' ' + type : '');\n }, [value, type]);\n\n const handleClick = useCallback(\n (ev) => {\n let next = !value;\n if (onClick) onClick(ev);\n if (!ev.defaultPrevented) {\n setValue(next);\n onChange && onChange({ value: next });\n }\n },\n [value, onClick, onChange],\n );\n\n if (value && active) {\n return (\n <Button\n title={title}\n tooltip={tooltip}\n text={(value && textActive) || text}\n css={css}\n type={typeStr}\n icon={(value && iconActive) || icon}\n onClick={handleClick}\n disabled={disabled}\n >\n {snippet(active, { value })}\n </Button>\n );\n } else if (children) {\n return (\n <Button\n title={title}\n tooltip={tooltip}\n text={(value && textActive) || text}\n css={css}\n type={typeStr}\n icon={(value && iconActive) || icon}\n onClick={handleClick}\n disabled={disabled}\n >\n {children}\n </Button>\n );\n } else {\n return (\n <Button\n title={title}\n tooltip={tooltip}\n text={(value && textActive) || text}\n css={css}\n type={typeStr}\n icon={(value && iconActive) || icon}\n onClick={handleClick}\n disabled={disabled}\n />\n );\n }\n};\n\nexport default TwoState;\n","import { useState, useMemo, useContext, useCallback } from 'react';\nimport Field from './Field.jsx';\nimport Text from './Text.jsx';\nimport Dropdown from './Dropdown.jsx';\nimport Slider from './Slider.jsx';\nimport TwoState from './TwoState.jsx';\nimport { i18n } from '../context.js';\nimport { useWritableProp } from '@svar-ui/lib-react';\nimport { dateToString } from '@svar-ui/lib-dom';\nimport './TimePicker.css';\nimport { defaultLocale } from './helpers/locale.js';\nimport { toDateDropdown } from './helpers/dropdown.js';\n\nconst defValue = new Date(0, 0, 0, 0, 0);\n\nexport default function TimePicker({\n value: propertyValue = defValue,\n id,\n title = '',\n tooltip,\n css = '',\n disabled = false,\n error = false,\n format = '',\n onChange,\n dropdown,\n}) {\n let [value, setValue] = useWritableProp(propertyValue);\n\n const { calendar: calendarLocale, formats } = (\n useContext(i18n) || defaultLocale()\n ).getRaw();\n const h12 = calendarLocale.clockFormat == 12;\n\n const maxH = 23;\n const maxM = 59;\n\n const timeFormat = useMemo(() => {\n const f = format || formats?.timeFormat;\n return typeof f === 'function' ? f : dateToString(f, calendarLocale);\n }, [format, formats, calendarLocale]);\n\n const zeroBased = useMemo(() => {\n return timeFormat(new Date(0, 0, 0, 1)).indexOf('01') != -1;\n }, [timeFormat]);\n\n const formatTime = (v, zeroBased) => {\n return (v < 10 && zeroBased ? `0${v}` : `${v}`).slice(-2);\n };\n\n const formatM = (v) => {\n return formatTime(v, true);\n };\n\n const getNumber = (v) => {\n return `${v}`.replace(/[^\\d]/g, '') || 0;\n };\n const formatH = (v) => {\n if (h12) {\n v = v % 12;\n if (v === 0) return '12';\n }\n return formatTime(v, zeroBased);\n };\n\n const update = useCallback((v, max) => {\n v = getNumber(v);\n return Math.min(v, max);\n }, []);\n\n const [popup, setPopup] = useState(null);\n\n const safeValue = value || defValue;\n\n const h = update(safeValue.getHours(), maxH);\n const m = update(safeValue.getMinutes(), maxM);\n\n const pm = h > 12;\n\n const hText = formatH(h);\n const mText = formatM(m);\n const textValue = useMemo(\n () => timeFormat(new Date(0, 0, 0, h, m)),\n [h, m, timeFormat],\n );\n\n const click = useCallback(() => {\n setPopup(true);\n }, []);\n\n const togglePM = useCallback(() => {\n const next = new Date(safeValue);\n next.setHours(next.getHours() + (pm ? -12 : 12));\n setValue(next);\n if (onChange) onChange({ value: next });\n }, [safeValue, pm, onChange]);\n\n const setHours = useCallback(\n ({ value: v }) => {\n if (safeValue.getHours() === v) return;\n\n const next = new Date(safeValue);\n next.setHours(v);\n setValue(next);\n if (onChange) onChange({ value: next });\n },\n [safeValue, onChange],\n );\n\n const setMinutes = useCallback(\n ({ value: v }) => {\n if (safeValue.getMinutes() === v) return;\n\n const next = new Date(safeValue);\n next.setMinutes(v);\n setValue(next);\n if (onChange) onChange({ value: next });\n },\n [safeValue, onChange],\n );\n\n const updateH = useCallback(\n (v) => {\n v = update(v, maxH);\n if (h12) {\n v = v * 1;\n if (v === 12) v = 0;\n if (pm) v += 12;\n }\n return v;\n },\n [update, h12, pm],\n );\n\n const oncancel = useCallback(() => {\n setPopup(null);\n }, []);\n\n return (\n <div\n className={`wx-7f497i wx-timepicker ${error ? 'wx-7f497i wx-error' : ''} ${disabled ? 'wx-7f497i wx-disabled' : ''}`}\n onClick={disabled ? undefined : click}\n style={{ cursor: disabled ? 'default' : 'pointer' }}\n >\n <Text\n id={id}\n css={`wx-date-input ${css}`}\n title={title}\n tooltip={tooltip}\n value={textValue}\n readonly={true}\n disabled={disabled}\n error={error}\n icon=\"wxi-clock\"\n />\n\n {popup && !disabled && (\n <Dropdown onCancel={oncancel} {...toDateDropdown(dropdown)}>\n <div className=\"wx-7f497i wx-wrapper\">\n <div className=\"wx-7f497i wx-timer\">\n <input\n className=\"wx-7f497i wx-digit\"\n value={hText}\n onChange={(ev) => {\n const val = updateH(ev.target.value);\n setHours({ value: val });\n }}\n />\n <div className=\"wx-7f497i wx-separator\">:</div>\n <input\n className=\"wx-7f497i wx-digit\"\n value={mText}\n onChange={(ev) => {\n const val = update(ev.target.value, maxM);\n setMinutes({ value: val });\n }}\n />\n {h12 && (\n <TwoState\n value={pm}\n onClick={togglePM}\n active={() => <span>pm</span>}\n >\n <span>am</span>\n </TwoState>\n )}\n </div>\n <Field width=\"unset\">\n <Slider\n label={calendarLocale.hours}\n value={h}\n width=\"unset\"\n onChange={setHours}\n max={maxH}\n />\n </Field>\n <Field width=\"unset\">\n <Slider\n label={calendarLocale.minutes}\n value={m}\n width=\"unset\"\n onChange={setMinutes}\n max={maxM}\n />\n </Field>\n </div>\n </Dropdown>\n )}\n </div>\n );\n}\n","import { useState, useEffect, useMemo, useRef } from 'react';\nimport { calculatePosition, getAbsParent } from '@svar-ui/lib-dom';\nimport Portal from './Portal.jsx';\nimport './Tooltip.css';\n\nfunction getSide(at) {\n if (at === 'point') return 'point';\n const split = at.split('-');\n return split[0];\n}\n\nfunction getAlign(at) {\n if (at === 'point') return 'center';\n const split = at.split('-');\n return split.length === 1 ? 'center' : split[1];\n}\n\nfunction readCSSPropertyInt(node, property, defaultValue) {\n const value = getComputedStyle(node).getPropertyValue(property);\n return parseInt(value) || defaultValue;\n}\n\nfunction Tooltip(props) {\n const {\n at = 'top-center',\n arrow = false,\n touch = false,\n overflow = false,\n delay = 300,\n content: Content = null,\n children,\n css = '',\n } = props;\n\n function defaultResolver(element) {\n if (overflow && element.scrollWidth <= element.clientWidth) return null;\n const text = element.getAttribute?.('data-tooltip-text');\n return text ? text : null;\n }\n const resolver = props.resolver || defaultResolver;\n\n const side = useMemo(() => getSide(at), [at]);\n const align = useMemo(() => getAlign(at), [at]);\n const resolvedAt = useMemo(() => {\n if (at === 'point') return 'point';\n return `${side}-${align}`;\n }, [at, side, align]);\n\n const areaNode = useRef(null);\n const isHovered = useRef(false);\n const [tooltipNode, setTooltipNode] = useState(null);\n const [match, setMatch] = useState(null); // { result, anchor, mouseX, mouseY }\n const [position, setPosition] = useState(null); // { x, y, z, side, arrowOffset }\n const [firstAnchor, setFirstAnchor] = useState(false);\n\n // keep a fresh copy of match for long-lived handlers (avoid stale closures)\n const matchRef = useRef(match);\n useEffect(() => {\n matchRef.current = match;\n }, [match]);\n\n // render only when there is displayable content\n const shouldRender = useMemo(\n () => match !== null && (!!match.result || Content != null),\n [match, Content],\n );\n\n function getPointOffset() {\n return readCSSPropertyInt(tooltipNode, '--wx-tooltip-point-offset', 14);\n }\n\n function getArrowSize() {\n return readCSSPropertyInt(tooltipNode, '--wx-tooltip-arrow-size', 6);\n }\n\n // Compute the CSS arrow offset relative to the anchor\n function getArrowOffset(arrowSize, result, rect, body) {\n if (side === 'point') return '50%';\n const bodyRect = body?.getBoundingClientRect() ?? { top: 0, left: 0 };\n const h = arrowSize / 2;\n\n let anchorPoint;\n let tooltipEdge;\n if (side === 'top' || side === 'bottom') {\n tooltipEdge = result.x - (body?.scrollLeft ?? 0) + bodyRect.left;\n if (align === 'start') anchorPoint = rect.left + arrowSize + h;\n else if (align === 'end') anchorPoint = rect.right - arrowSize - h;\n else anchorPoint = rect.left + rect.width / 2;\n } else {\n tooltipEdge = result.y - (body?.scrollTop ?? 0) + bodyRect.top;\n if (align === 'start') anchorPoint = rect.top + arrowSize + h;\n else if (align === 'end') anchorPoint = rect.bottom - arrowSize - h;\n else anchorPoint = rect.top + rect.height / 2;\n }\n\n return `${anchorPoint - tooltipEdge}px`;\n }\n\n // Positioning of the tooltip\n useEffect(() => {\n if (!tooltipNode || !match) return void setPosition(null);\n\n // Offset from the mouse cursor when at=\"point\"\n const offset = at === 'point' ? getPointOffset() : 0;\n\n // Calculate the position of the tooltip\n const result = calculatePosition(\n tooltipNode,\n match.anchor,\n resolvedAt,\n match.mouseX + offset,\n match.mouseY + offset,\n );\n\n if (result === null) return void setPosition(null);\n\n // Detect if calculatePosition flipped to the opposite side\n const anchorRect = match.anchor.getBoundingClientRect();\n const body = getAbsParent(tooltipNode);\n const realSide = getSide(result.at);\n\n // Add gap for the arrow if needed, using realSide for direction\n let arrowOffset = '50%';\n if (result && arrow && at !== 'point') {\n const arrowSize = getArrowSize();\n if (realSide === 'top') result.y -= arrowSize;\n else if (realSide === 'bottom') result.y += arrowSize;\n else if (realSide === 'left') result.x -= arrowSize;\n else if (realSide === 'right') result.x += arrowSize;\n arrowOffset = getArrowOffset(arrowSize, result, anchorRect, body);\n }\n\n // Submit the result to the position state\n const minZ = readCSSPropertyInt(tooltipNode, '--wx-tooltip-z-index', 1002);\n\n setPosition({\n x: Math.round(result.x),\n y: Math.round(result.y),\n z: Math.max(result.z, minZ),\n side: realSide,\n arrowOffset,\n });\n }, [tooltipNode, match, at, arrow, side, align, resolvedAt]);\n\n function walk(node, ev) {\n if (!isHovered.current) return null;\n\n // Disable tooltip on touch devices if prop touch == false\n const touchD =\n 'ontouchstart' in window || window.navigator.maxTouchPoints > 0;\n if (touchD && !touch) return null;\n\n for (; node && node !== areaNode.current; node = node.parentNode) {\n if (node.nodeType !== window.Node.ELEMENT_NODE) continue;\n\n const result = resolver(node, ev);\n if (result == null) continue;\n\n return {\n result,\n anchor: node,\n mouseX: ev.clientX,\n mouseY: ev.clientY,\n };\n }\n\n return null;\n }\n\n const timer = useRef(undefined);\n const hiding = useRef(false);\n function debounce(fn) {\n clearTimeout(timer.current);\n timer.current = setTimeout(fn, delay);\n }\n\n function onMouseMove(ev) {\n // (1) Ignore if the most closely hovered tooltip area is not this one (in case of nested tooltips)\n if (ev.target.closest('.wx-tooltip-area') !== areaNode.current) {\n isHovered.current = false;\n setMatch(null);\n clearTimeout(timer.current);\n return;\n }\n isHovered.current = true;\n\n const match = matchRef.current;\n\n // (2) If the cursor is still within the anchor element\n if (match?.anchor?.contains(ev.target)) {\n clearTimeout(timer.current);\n hiding.current = false;\n const result = resolver(ev.target, ev);\n if (result != null) {\n setMatch({\n result,\n anchor: ev.target,\n mouseX: ev.clientX,\n mouseY: ev.clientY,\n });\n return;\n }\n }\n\n // (3) Cursor left the anchor - walk for a new anchor\n if (match !== null) {\n const result = walk(ev.target, ev);\n if (!result) {\n if (!hiding.current) {\n hiding.current = true;\n debounce(() => {\n hiding.current = false;\n setMatch(null);\n });\n }\n } else {\n clearTimeout(timer.current);\n hiding.current = false;\n setMatch(result);\n setFirstAnchor(false);\n }\n } else {\n debounce(() => {\n setMatch(walk(ev.target, ev));\n setFirstAnchor(true);\n });\n }\n }\n\n function onMouseLeave() {\n debounce(() => {\n hiding.current = false;\n isHovered.current = false;\n setMatch(null);\n });\n }\n\n useEffect(() => {\n function onscroll() {\n clearTimeout(timer.current);\n setMatch(null);\n }\n\n window.addEventListener('scroll', onscroll, {\n capture: true,\n passive: true,\n });\n\n return () => {\n clearTimeout(timer.current);\n window.removeEventListener('scroll', onscroll, { capture: true });\n };\n }, []);\n\n const tooltipClassName = [\n 'wx-tooltip',\n css,\n arrow && position?.side === 'top' ? 'wx-arrow-top' : '',\n arrow && position?.side === 'bottom' ? 'wx-arrow-bottom' : '',\n arrow && position?.side === 'left' ? 'wx-arrow-left' : '',\n arrow && position?.side === 'right' ? 'wx-arrow-right' : '',\n !firstAnchor ? 'wx-tooltip-transition' : '',\n 'wx-aab5ZNfz',\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n ref={areaNode}\n className=\"wx-tooltip-area wx-aab5ZNfz\"\n role=\"none\"\n onMouseMove={onMouseMove}\n onMouseLeave={onMouseLeave}\n >\n {shouldRender ? (\n <Portal>\n <div\n className={tooltipClassName}\n role=\"tooltip\"\n ref={setTooltipNode}\n style={{\n translate: `${position?.x ?? 0}px ${position?.y ?? 0}px`,\n zIndex: position?.z ?? 20,\n visibility: !position ? 'hidden' : undefined,\n '--wx-arrow-offset': position?.arrowOffset ?? '50%',\n }}\n >\n <div className=\"wx-tooltip-wrapper wx-aab5ZNfz\">\n <div className=\"wx-tooltip-inner wx-aab5ZNfz\">\n {typeof match.result === 'string' ? (\n Content ? (\n <Content data={match.result} />\n ) : (\n <div className=\"wx-tooltip-text wx-aab5ZNfz\">\n {match.result}\n </div>\n )\n ) : Content ? (\n <Content {...match.result} />\n ) : (\n <div className=\"wx-tooltip-text wx-aab5ZNfz\">\n {match.result?.data}\n </div>\n )}\n </div>\n </div>\n </div>\n </Portal>\n ) : null}\n\n {children}\n </div>\n );\n}\n\nexport default Tooltip;\n","import './ModalArea.css';\n\nexport default function ModalArea({ children }) {\n return (\n <div className=\"wx-KgpO9N wx-modal\">\n <div className=\"wx-KgpO9N wx-window\">{children}</div>\n </div>\n );\n}\n","import { useRef, useEffect } from 'react';\nimport { clickOutside } from '@svar-ui/lib-dom';\nimport './SideArea.css';\n\nexport default function SideArea({ position = 'right', css = '', children, onCancel }) {\n const divRef = useRef(null);\n\n useEffect(() => {\n return clickOutside(divRef.current, onCancel).destroy;\n }, []);\n\n return (\n <div ref={divRef} className={`wx-2L733M wx-sidearea wx-pos-${position} ${css}`}>\n {children}\n </div>\n );\n}\n","import { useState, useEffect, useMemo, useRef } from 'react';\nimport './Avatar.css';\n\nconst DEFAULT_BG = '#dfe2e6';\nconst DEFAULT_FONT = '#2c2f3c';\n\n/** Overlap factor: each avatar after the first adds 75% of size (25% overlap). */\nconst OVERLAP_FACTOR = 0.75;\n\nfunction getInitials(name) {\n\tname = name?.trim() || '';\n\tif (!name) return '';\n\tconst words = name.split(/\\s+/);\n\treturn (words[0][0] + (words[1]?.[0] || '')).toUpperCase().slice(0, 2);\n}\n\nfunction getContrastColor(hex) {\n\tif (!hex) return DEFAULT_FONT;\n\tlet h = hex.replace('#', '');\n\tif (h.length === 3) h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];\n\tif (h.length !== 6) return DEFAULT_FONT;\n\tconst r = parseInt(h.slice(0, 2), 16) / 255;\n\tconst g = parseInt(h.slice(2, 4), 16) / 255;\n\tconst b = parseInt(h.slice(4, 6), 16) / 255;\n\tconst luminance = 0.299 * r + 0.587 * g + 0.114 * b;\n\treturn luminance > 0.5 ? DEFAULT_FONT : '#ffffff';\n}\n\nfunction Avatar(props) {\n\tconst { value, size = 32, limit, css = '' } = props;\n\n\tconst containerRef = useRef(null);\n\tconst [containerWidth, setContainerWidth] = useState(null);\n\n\tconst users = useMemo(() => {\n\t\tif (!value) return [];\n\t\treturn Array.isArray(value) ? value : [value];\n\t}, [value]);\n\n\t/** Max avatars that fit in container. Formula: width = size + (n-1) * size * 0.75. */\n\tconst maxFitting = useMemo(() => {\n\t\tif (containerWidth == null || containerWidth <= 0) {\n\t\t\treturn null;\n\t\t}\n\t\tconst n = 1 + (containerWidth / size - 1) / OVERLAP_FACTOR;\n\t\treturn Math.max(1, Math.floor(n));\n\t}, [containerWidth, size]);\n\n\tconst displayCount = useMemo(() => {\n\t\tconst cap = limit != null ? Math.min(users.length, limit) : users.length;\n\t\tif (maxFitting != null) {\n\t\t\treturn Math.min(cap, maxFitting);\n\t\t}\n\t\treturn cap;\n\t}, [users, limit, maxFitting]);\n\n\tconst displayUsers = useMemo(() => users.slice(0, displayCount), [users, displayCount]);\n\tconst overflowCount = useMemo(() => Math.max(0, users.length - displayCount), [users, displayCount]);\n\n\tuseEffect(() => {\n\t\tconst el = containerRef.current;\n\t\tif (!el) return;\n\t\tconst ro = new ResizeObserver(entries => {\n\t\t\tconst entry = entries[0];\n\t\t\tif (entry) setContainerWidth(entry.contentRect.width);\n\t\t});\n\t\tro.observe(el);\n\t\treturn () => ro.disconnect();\n\t}, []);\n\n\tconst fontSize = Math.round(size * 0.4);\n\tconst avatarBaseStyle = {\n\t\twidth: size + 'px',\n\t\theight: size + 'px',\n\t\tminWidth: size + 'px',\n\t\tminHeight: size + 'px',\n\t\tfontSize: fontSize + 'px',\n\t};\n\n\tfunction getAvatarItemStyle(user, index) {\n\t\tconst margin = index === 0 ? '0' : `${size * -0.25}px`;\n\t\tconst bg = user.avatar ? 'transparent' : user.color || DEFAULT_BG;\n\t\tconst color = user.avatar\n\t\t\t? 'transparent'\n\t\t\t: getContrastColor(user.color || DEFAULT_BG);\n\t\treturn { marginLeft: margin, backgroundColor: bg, color };\n\t}\n\n\treturn (\n\t\t<div className={`wx-avatar-root wx-aadkRiRf ${css}`} ref={containerRef}>\n\t\t\t{displayUsers.length > 0 && (\n\t\t\t\t<div className=\"wx-avatar-stack wx-aadkRiRf\">\n\t\t\t\t\t{displayUsers.map((user, index) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={user.id}\n\t\t\t\t\t\t\tclassName={[\n\t\t\t\t\t\t\t\t'wx-avatar',\n\t\t\t\t\t\t\t\t'wx-avatar-item',\n\t\t\t\t\t\t\t\tindex === displayUsers.length - 1 && overflowCount > 0\n\t\t\t\t\t\t\t\t\t? 'wx-avatar-overflow'\n\t\t\t\t\t\t\t\t\t: '',\n\t\t\t\t\t\t\t\t'wx-aadkRiRf',\n\t\t\t\t\t\t\t].filter(Boolean).join(' ')}\n\t\t\t\t\t\t\tstyle={{ ...avatarBaseStyle, ...getAvatarItemStyle(user, index) }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{user.avatar ? (\n\t\t\t\t\t\t\t\t<img src={user.avatar} alt=\"\" loading=\"lazy\" />\n\t\t\t\t\t\t\t) : getInitials(user.name) ? (\n\t\t\t\t\t\t\t\t<span className=\"wx-aadkRiRf\">{getInitials(user.name)}</span>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t{index === displayUsers.length - 1 && overflowCount > 0 && (\n\t\t\t\t\t\t\t\t<span className=\"wx-avatar-overflow-badge wx-aadkRiRf\">\n\t\t\t\t\t\t\t\t\t+{overflowCount}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nexport default Avatar;\n","import './FontRoboto.css';\nexport default function render() {\n return <></>;\n}\n","import { theme } from '../context';\nimport RobotoFont from './FontRoboto';\nimport './Material.css';\nexport default function render(props) {\n const { fonts = true, children } = props;\n\n return (\n <theme.Provider value=\"material\">\n <>\n {children && <div className=\"wx-theme wx-material-theme\">{children}</div>}\n\n {fonts && (\n <>\n <link\n rel=\"preconnect\"\n href=\"https://cdn.svar.dev\"\n crossOrigin=\"true\"\n />\n <RobotoFont />\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.svar.dev/fonts/wxi/wx-icons.css\"\n />\n </>\n )}\n </>\n </theme.Provider>\n );\n}\n","import './FontOpenSans.css';\nexport default function render() {\n return <></>;\n}\n","import { theme } from '../context';\nimport FontOpenSans from './FontOpenSans';\nimport './Willow.css';\nexport default function render(props) {\n const { fonts = true, children } = props;\n\n return (\n <theme.Provider value=\"willow\">\n <>\n {children && children && (\n <div className=\"wx-theme wx-willow-theme\">{children}</div>\n )}\n\n {fonts && (\n <>\n <link\n rel=\"preconnect\"\n href=\"https://cdn.svar.dev\"\n crossOrigin=\"true\"\n />\n <FontOpenSans />\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.svar.dev/fonts/wxi/wx-icons.css\"\n />\n </>\n )}\n </>\n </theme.Provider>\n );\n}\n","import { theme } from '../context';\nimport FontOpenSans from './FontOpenSans';\nimport './WillowDark.css';\nexport default function render(props) {\n const { fonts = true, children } = props;\n\n return (\n <theme.Provider value=\"willow-dark\">\n <>\n {children && children && (\n <div className=\"wx-theme wx-willow-dark-theme\">{children}</div>\n )}\n\n {fonts && (\n <>\n <link\n rel=\"preconnect\"\n href=\"https://cdn.svar.dev\"\n crossOrigin=\"true\"\n />\n <FontOpenSans />\n <link\n rel=\"stylesheet\"\n href=\"https://cdn.svar.dev/fonts/wxi/wx-icons.css\"\n />\n </>\n )}\n </>\n </theme.Provider>\n );\n}\n","import { uid } from '@svar-ui/lib-dom';\n\nexport function popupContainer(node) {\n const id = uid();\n node.setAttribute('data-wx-portal-root', id);\n}\n","export { default as TextArea } from './components/TextArea.jsx';\nexport { default as Button } from './components/Button.jsx';\nexport { default as Checkbox } from './components/Checkbox.jsx';\nexport { default as CheckboxGroup } from './components/CheckboxGroup.jsx';\nexport { default as ColorSelect } from './components/ColorSelect.jsx';\nexport { default as ColorBoard } from './components/ColorBoard.jsx';\nexport { default as ColorPicker } from './components/ColorPicker.jsx';\nexport { default as Combo } from './components/Combo.jsx';\nexport { default as DatePicker } from './components/DatePicker.jsx';\nexport { default as DateRangePicker } from './components/DateRangePicker.jsx';\nexport { default as Fullscreen } from './components/Fullscreen.jsx';\nexport { default as Icon } from './components/Icon.jsx';\nexport { default as MultiCombo } from './components/MultiCombo.jsx';\nexport { default as Popup } from './components/Popup.jsx';\nexport { default as Dropdown } from './components/Dropdown.jsx';\nexport { default as Pager } from './components/Pager.jsx';\nexport { default as RadioButton } from './components/RadioButton.jsx';\nexport { default as RadioButtonGroup } from './components/RadioButtonGroup.jsx';\nexport { default as RichSelect } from './components/RichSelect.jsx';\nexport { default as Segmented } from './components/Segmented.jsx';\nexport { default as Select } from './components/Select.jsx';\nexport { default as Slider } from './components/Slider.jsx';\nexport { default as Switch } from './components/Switch.jsx';\nexport { default as Tabs } from './components/Tabs.jsx';\nexport { default as Text } from './components/Text.jsx';\nexport { default as Counter } from './components/Counter.jsx';\nexport { default as Globals } from './Globals.jsx';\nexport { default as Field } from './components/Field.jsx';\nexport { default as Calendar } from './components/Calendar.jsx';\nexport { default as Month } from './components/calendar/Month.jsx';\nexport { default as RangeCalendar } from './components/RangeCalendar.jsx';\nexport { default as TimePicker } from './components/TimePicker.jsx';\nexport { default as Tooltip } from './components/Tooltip.jsx';\nexport { default as TwoState } from './components/TwoState.jsx';\nexport { default as Modal } from './components/Modal.jsx';\nexport { default as ModalArea } from './components/ModalArea.jsx';\nexport { default as SideArea } from './components/SideArea.jsx';\nexport { default as Portal } from './components/Portal.jsx';\nexport { default as Avatar } from './components/Avatar.jsx';\n\nexport { default as Material } from './themes/Material.jsx';\nexport { default as Willow } from './themes/Willow.jsx';\nexport { default as WillowDark } from './themes/WillowDark.jsx';\n\nexport { default as Locale } from './Locale.jsx';\nexport { locale } from '@svar-ui/lib-dom';\n\nexport { popupContainer } from './components/helpers/popup';\nexport { default as SuggestDropdown } from './components/helpers/SuggestDropdown.jsx';\n\nexport { en } from '@svar-ui/core-locales';\nexport * as context from './context.js';\n\nimport { env, setEnv } from '@svar-ui/lib-dom';\nsetEnv(env);\n"],"names":["theme","createContext","helpers","i18n","fieldId","useInputId","id","contextId","useContext","inputId","useState","uid","TextArea","propValue","placeholder","title","tooltip","disabled","error","readonly","css","onChange","value","setValue","useWritableProp","handleInput","useCallback","e","newValue","ontextchange","inputRef","useRef","useEffect","handler","node","jsx","Button","type","icon","text","children","onClick","buttonCss","useMemo","cssType","a","x","handleClick","ev","jsxs","Checkbox","label","inputValue","valueProp","handlerChange","target","CheckboxGroup","options","handleChange","obj","option","Portal","initialTheme","portalRef","componentRef","targetRef","setTargetRef","contextTheme","themeContext","getParentRoot","env","Fragment","createPortal","p","root","Popup","left","top","at","parent","width","onCancel","trackScroll","setX","y","setY","w","setW","visible","setVisible","self","onCancelRef","getWidth","calcWidth","match","updatePosition","result","calculatePosition","useLayoutEffect","onScroll","resizeObserver","getAbsParent","down","clickOutside","InlineDropdown","positionProp","alignProp","autoFit","nodeRef","position","setPosition","align","setAlign","nodeCoords","bodyCoords","Dropdown","inline","props","setTarget","defaultColors","ColorSelect","colors","clear","dropdown","currentValue","setCurrentValue","popup","setPopup","selectColor","color","unselectColor","handlePopup","index","sliderMove","config","slider","moveBlockSlider","moveLineSlider","move","up","dx","dy","coords","colorTransformator","number","length","str","rgb","arr","v","n","hex","rgbPairs","r","g","b","h","s","hi","f","q","t","min","max","hexValidation","parseColor","defaultLocale","locale","en","BLOCK","LINE","ColorBoard","button","_","blockRef","colorLineRef","blockTop","setBlockTop","blockLeft","setBlockLeft","hueColor","setHueColor","lineLeft","setLineLeft","setInputValue","moveBlockSliderRef","moveLineSliderRef","blockColor","height","_sValue","_vValue","pxX","pxY","newHue","setSlidersPosition","newColor","handleSelect","keydown","isSliderBlock","isSliderLine","code","destroy","d","cssScope","ColorPicker","propertyValue","getListHandlers","navIndex","isVisible","virtualized","list","navCallback","selectCallback","init","l","o","c","setNav","scrollTo","next","navigate","dir","locateID","overscan","ItemContent","memo","data","checkboxes","itemTemplate","snippet","ListContent","visibleItems","visibleRange","measureRefCallback","visibleIndex","SuggestDropdown","items","onSelect","onReady","multiselect","rest","initialScrolled","setNavIndex","navIndexRef","scrollTop","setScrollTop","itemHeight","setItemHeight","isItemHeightInitialized","itemsRef","valueRef","itemHeightRef","selectItem","currentItems","currentNavIndex","nextValue","nextId","i","selectItemRef","scrollToVirtualized","idx","newScrollTop","listRefCallback","el","navigateVirtualized","keydownVirtualized","isTargetVisibleTop","isTargetVisibleBottom","dropdownKey","prevItemsRef","handleScroll","displayedItemsCount","start","end","item","offsetTop","totalHeight","Combo","textOptions","textField","kids","filterActive","setFilterActive","textInput","setTextInput","inputElement","hasFocus","filteredOptions","ready","doSelect","effects","selected","selectByEvent","doUnselect","selectByText","chunk","res","handleFocus","handleBlur","List","Text","propsValue","focus","select","cssString","hasLeftIcon","timer","oninput","clearValue","inputType","Header","date","part","onShift","calendar","formats","year","dateToString","getDuodecade","yearFormat","changeType","Month","current","markers","weekStart","weekdays","dv","dm","dd","ranges","isWeekEnd","getStart","getEnd","lastTime","selectDate","days","curMonth","day","mark","delegateRef","delegateHandler","delegateClick","Year","currentProp","defaultDate","setCurrent","months","monthNum","selectMonth","month","newCurrent","done","getPartValue","handleMonthClick","Duodecade","currentState","valueState","years","selectYears","selectYear","yearVal","containerRef","configs","nextMonth","prevMonth","nextYear","prevYear","nextDuodecade","prevDuodecade","defaultButtons","getButtonValue","btn","Panel","onCurrentChange","buttons","setType","buttonsList","oncancel","onShiftLocal","diff","onChangeLocal","CalendarView","Component","words","optional","fixCurrent","force","Calendar","onCurrentChangeLocal","Locale","toDateDropdown","DatePicker","format","editable","calendarLocale","dateFormat","doChange","skipEvent","formattedValue","onchangeHandler","input","addMonth","rPrev","initLeft","startVal","currentVal","RangeCalendar","startProp","endProp","setStart","setEnd","leftCurrent","setLeftCurrent","rightCurrent","setRightCurrent","onLeft","newLeft","onRight","newRight","selectChange","final","doChangeStart","doChangeEnd","DateRangePicker","doInputChange","av","val","Fullscreen","hotkey","toggleButton","inFullscreen","setInFullscreen","toggleFullscreen","prev","useHotkeys","setFullscreenState","Icon","defaultValue","MultiCombo","keepText","setText","setFocus","filterOptions","onready","onselect","remove","onClickHandler","tag","Pager","total","initialPageSize","initialValue","pageSize","setPageSize","pageCount","from","to","setInnerValue","setActivePage","onPageSizeInput","RadioButton","externalValue","name","fallbackId","useId","internalValue","setInternalValue","isControlled","RadioButtonGroup","RichSelect","unselect","Segmented","Select","event","Slider","step","previous","progress","bgStyle","onslider","style","Switch","Tabs","optionId","Counter","dec","inc","blur","tValue","Notice","notice","onRemove","Notices","Modal","header","footer","onConfirm","modal","onclick","pack","Globals","apiRef","setModal","notices","setNotices","useImperativeHandle","msg","modalObj","rej","GlobalsComponentWithRef","forwardRef","api","Field","required","TwoState","iconActive","textActive","active","typeStr","defValue","TimePicker","h12","maxH","maxM","timeFormat","zeroBased","formatTime","formatM","getNumber","formatH","update","safeValue","m","pm","hText","mText","textValue","click","togglePM","setHours","setMinutes","updateH","getSide","getAlign","split","readCSSPropertyInt","property","Tooltip","arrow","touch","overflow","delay","Content","defaultResolver","element","resolver","side","resolvedAt","areaNode","isHovered","tooltipNode","setTooltipNode","setMatch","firstAnchor","setFirstAnchor","matchRef","shouldRender","getPointOffset","getArrowSize","getArrowOffset","arrowSize","rect","body","bodyRect","anchorPoint","tooltipEdge","offset","anchorRect","realSide","arrowOffset","minZ","walk","hiding","debounce","fn","onMouseMove","onMouseLeave","onscroll","tooltipClassName","ModalArea","SideArea","divRef","DEFAULT_BG","DEFAULT_FONT","OVERLAP_FACTOR","getInitials","getContrastColor","Avatar","size","limit","containerWidth","setContainerWidth","users","maxFitting","displayCount","cap","displayUsers","overflowCount","ro","entries","entry","fontSize","avatarBaseStyle","getAvatarItemStyle","user","margin","bg","render","fonts","RobotoFont","FontOpenSans","popupContainer","setEnv"],"mappings":"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"}