@sertec/search-input
Version:
Sfera Search Input Component
1 lines • 626 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../node_modules/.pnpm/@sertec+input@0.0.12_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@sertec/input/dist/index.esm.js","../src/search-input.tsx","../../../node_modules/.pnpm/@sertec+select@0.0.23_@types+react@19.1.16_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/@sertec/select/dist/index.esm.js","../src/search-select.tsx","../src/search-select-async.tsx","../src/search-select-async-paginate.tsx"],"sourcesContent":["import { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { isValidElement, useId } from 'react';\n\nfunction Caption({ ref, type = 'info', message, className, value, readable, ...props }) {\n if (value === undefined || value === null || value === false) {\n return jsx(Fragment, {});\n }\n return type ? (jsx(\"div\", { ref: ref, className: [\n 'flex flex-col justify-center w-full truncate',\n '!text-caption group-has-[:disabled]:data-[readable=false]:!text-disabled',\n 'data-[caption-type=info]:text-label',\n 'data-[caption-type=required]:text-error',\n 'data-[caption-type=maxLength]:text-error',\n 'data-[caption-type=minLength]:text-error',\n 'data-[caption-type=max]:text-error',\n 'data-[caption-type=min]:text-error',\n 'data-[caption-type=pattern]:text-error',\n 'data-[caption-type=validate]:text-error',\n 'data-[caption-type=error]:text-error',\n 'data-[caption-type=warning]:text-warning',\n 'data-[caption-type=success]:text-success',\n className,\n ]\n .filter(Boolean)\n .join(' '), ...props, \"data-caption-type\": type, \"data-caption-value\": typeof value === 'boolean' ? `${value}` : value, \"data-readable\": readable ? 'true' : 'false', children: message && jsx(\"p\", { className: \"inline-block align-middle\", children: message }) })) : (jsx(Fragment, {}));\n}\n\nfunction Label({ label, required, className, readable, 'data-weight': dataWeight = 'normal', }) {\n return label ? (jsx(\"div\", { className: [\n 'flex',\n '!flex-col',\n 'justify-center',\n '!text-label-size',\n '!text-label-color',\n 'w-full',\n 'truncate',\n 'data-[weight=light]:font-light',\n 'data-[weight=semibold]:font-semibold',\n 'data-[weight=bold]:font-bold',\n 'data-[weight=normal]:font-normal',\n 'group-has-[:disabled]:data-[readable=false]:!text-disabled',\n className,\n ]\n .filter(Boolean)\n .join(' '), \"data-readable\": readable ? 'true' : 'false', \"data-weight\": dataWeight, children: jsxs(\"p\", { className: \"inline-block align-middle\", children: [label, typeof required === 'object' && required?.message && (jsxs(\"span\", { className: \"ml-1 !italic !text-outline\", children: [\"(\", required.message, \")\"] }))] }) })) : (jsx(Fragment, {}));\n}\n\nfunction getBorderEnabled(border, find) {\n const borderSplit = border.split('-');\n let borderTop = 'false';\n if (border === 'full') {\n borderTop = 'true';\n }\n else if (borderSplit.find((b) => b === find)) {\n borderTop = 'true';\n }\n return borderTop === 'true';\n}\n\nfunction InputWrapper({ ref, label, required, caption, children, htmlFor, requiredMessage, className, wrapperClassName, readable, 'data-rounded': rounded = 'full', 'data-border': border = 'full', 'data-padding-y': dataPaddingY = '2', 'data-padding-x': dataPaddingX = 'none', 'data-label-weight': datLabelaWeight, icon, ...props }) {\n function isIconObject(value) {\n return typeof value === 'object' && value !== null && ('left' in value || 'right' in value);\n }\n return (jsxs(\"label\", { ref: ref, className: ['group flex flex-col gap-1', className].filter(Boolean).join(' '), htmlFor: htmlFor, ...props, children: [jsx(Label, { label: label, readable: readable, required: requiredMessage ? { value: true, message: requiredMessage } : required, \"data-weight\": datLabelaWeight }), jsxs(\"div\", { className: [\n wrapperClassName,\n 'peer',\n 'grow',\n '!flex !flex-row items-center leading-none',\n '!bg-transparent',\n 'data-[padding-y=1]:py-1 data-[padding-x=2]:px-1',\n 'data-[padding-y=2]:py-2 data-[padding-x=2]:px-2',\n 'data-[padding-y=4]:py-4 data-[padding-x=4]:px-4',\n 'data-[padding-y=6]:py-6 data-[padding-x=6]:px-6',\n 'data-[padding-y=8]:py-8 data-[padding-x=8]:px-8',\n // ROUNDED\n 'data-[rounded=full]:rounded-lg',\n 'data-[rounded=none]:!rounded-0',\n 'data-[rounded=top]:!rounded-t-lg data-[rounded=top]:!border-b-transparent',\n 'data-[rounded=bottom]:!rounded-b-lg data-[rounded=bottom]:!border-t-transparent',\n 'data-[rounded=x]:!rounded-x-lg data-[rounded=x]:!border-y-transparent',\n 'data-[rounded=y]:!rounded-y-lg data-[rounded=y]:!border-x-transparent',\n 'data-[rounded=left-top]:!rounded-tl-lg',\n 'data-[rounded=left]:!rounded-l-lg',\n 'data-[rounded=right-top]:!rounded-tr-lg',\n 'data-[rounded=right]:!rounded-r-lg',\n // BORDER\n 'data-[border-top=true]:!border-t',\n 'data-[border-right=true]:!border-r',\n 'data-[border-bottom=true]:!border-b',\n 'data-[border-left=true]:!border-l',\n // BORDER TRANSPARENT\n 'data-[border-top=false]:!border-t-transparent',\n 'data-[border-right=false]:!border-r-transparent',\n 'data-[border-bottom=false]:!border-b-transparent',\n 'data-[border-left=false]:!border-l-transparent',\n // BORDER IS DISABLED\n 'data-[border-top=true]:has-[:disabled]:data-[readable=false]:!border-disabled',\n 'data-[border-right=true]:has-[:disabled]:data-[readable=false]:!border-disabled',\n 'data-[border-bottom=true]:has-[:disabled]:data-[readable=false]:!border-disabled',\n // BORDER IS FOCUS WITHIN\n 'data-[border-top=true]:group-focus-within:!border-t-primary',\n 'data-[border-right=true]:group-focus-within:!border-r-primary',\n 'data-[border-bottom=true]:group-focus-within:!border-b-primary',\n 'data-[border-left=true]:group-focus-within:!border-l-primary',\n 'data-[caption-type=none]:border-outline',\n 'data-[caption-type=info]:border-outline',\n 'data-[caption-type=required]:border-error',\n 'data-[caption-type=maxLength]:border-error',\n 'data-[caption-type=minLength]:border-error',\n 'data-[caption-type=max]:border-error',\n 'data-[caption-type=min]:border-error',\n 'data-[caption-type=pattern]:border-error',\n 'data-[caption-type=validate]:border-error',\n 'data-[caption-type=error]:border-error',\n 'data-[caption-type=warning]:border-warning',\n 'data-[caption-type=success]:border-success',\n ]\n .filter(Boolean)\n .join(' '), \"data-caption-type\": caption?.type || 'none', \"data-caption-value\": caption?.value === true ? 'true' : 'false', \"data-padding-y\": dataPaddingY, \"data-padding-x\": dataPaddingX, \"data-rounded\": rounded, \"data-border-top\": getBorderEnabled(border, 'top'), \"data-border-right\": getBorderEnabled(border, 'right'), \"data-border-bottom\": getBorderEnabled(border, 'bottom'), \"data-border-left\": getBorderEnabled(border, 'left'), \"data-readable\": readable ? 'true' : 'false', children: [isIconObject(icon) && icon.left, children, isIconObject(icon) && icon.right, !isIconObject(icon) &&\n (typeof icon === 'string' || typeof icon === 'number' || isValidElement(icon))\n ? icon\n : null] }), jsx(Caption, { ...caption, readable: readable })] }));\n}\n\nfunction Input({ id: propsId, label, caption, required, htmlFor, disabled, requiredMessage, className, icon, readable = false, 'data-justify': dataJustify, 'data-font-nums': dataFontNums = 'false', 'data-rounded': rounded = 'full', 'data-border': border = 'full', 'data-padding-l': dataPaddingL = '4', 'data-padding-r': dataPaddingR = '2', 'data-wrapper-padding-y': dataWrapperPaddingY = '2', 'data-wrapper-padding-x': dataWrapperPaddingX = 'none', 'data-variant-input': variantInput = 'input', 'data-font-weight-input': dataFontWeightInput = 'normal', 'data-label-weight': dataLabelWeight = 'normal', ...props }) {\n const generatedId = useId();\n const id = propsId ?? generatedId;\n return (jsx(InputWrapper, { label: label, caption: caption, required: required, htmlFor: htmlFor, requiredMessage: requiredMessage, className: className, icon: icon, readable: readable, \"data-border\": border, \"data-rounded\": rounded, \"data-padding-y\": dataWrapperPaddingY, \"data-padding-x\": dataWrapperPaddingX, \"data-label-weight\": dataLabelWeight, children: jsx(\"input\", { id: id, ...props, disabled: disabled, required: typeof required === 'object' ? required?.value : required, className: [\n 'peer',\n 'block w-full',\n '[appearance:textfield]',\n '[&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:appearance-none',\n 'text-input-size',\n 'data-[variant-input=input]:text-input-color',\n 'data-[variant-input=primary]:text-primary',\n 'data-[variant-input=secondary]:text-secondary',\n 'data-[variant-input=tertiary]:text-tertiary',\n 'data-[variant-input=base]:text-base',\n 'data-[variant-input=contrast]:text-contrast',\n 'data-[variant-input=success]:text-success',\n 'data-[variant-input=error]:text-error',\n 'data-[variant-input=warning]:text-warning',\n 'data-[variant-input=transparent]:text-transparent',\n 'data-[variant-input=tab-not-active]:text-tab-not-active',\n 'data-[font-weight-input=light]:font-light',\n 'data-[font-weight-input=semibold]:font-semibold',\n 'data-[font-weight-input=bold]:font-bold',\n 'data-[font-weight-input=normal]:font-normal',\n 'placeholder:!text-placeholder',\n 'disabled:placeholder:!text-disabled',\n 'placeholder:!font-sans',\n 'selection:bg-primary/20',\n '!appearance-none focus:!outline-none',\n 'focus:!outline-none',\n 'focus:!ring-0',\n 'bg-transparent',\n 'data-[readable=false]:disabled:!text-disabled',\n 'data-[padding-l=1]:!pl-1',\n 'data-[padding-r=1]:!pr-1',\n 'data-[padding-l=2]:!pl-2',\n 'data-[padding-r=2]:!pr-2',\n 'data-[padding-l=4]:!pl-4',\n 'data-[padding-r=4]:!pr-4',\n 'data-[padding-l=6]:!pl-6',\n 'data-[padding-r=6]:!pr-6',\n 'data-[padding-l=8]:!pl-8',\n 'data-[padding-r=8]:!pr-8',\n props.type === 'number' && 'font-mono tabular-nums',\n 'data-[font-nums=true]:!font-mono data-[font-nums=true]:tabular-nums',\n 'data-[justify=left]:!text-left',\n 'data-[justify=center]:!text-center',\n 'data-[justify=right]:!text-right !pr-4',\n ]\n .filter(Boolean)\n .join(' '), \"data-justify\": dataJustify, \"data-font-nums\": dataFontNums, \"data-padding-l\": dataPaddingL, \"data-padding-r\": dataPaddingR, \"data-variant-input\": variantInput, \"data-font-weight-input\": dataFontWeightInput, \"data-disabled\": disabled ? 'true' : 'false', \"data-readable\": readable ? 'true' : 'false' }) }));\n}\n\nfunction DecimalInput({ onChange = () => { }, onBlur = () => { }, decimal = 2, value: propValue, type = 'text', 'data-justify': dataJustify = 'right', 'data-font-nums': dataFontNums = 'true', ...props }) {\n const formatValue = (value) => {\n if (value === null ||\n value === undefined ||\n value === 'undefined' ||\n value === 'null' ||\n value === '') {\n return '';\n }\n const num = parseFloat(value.toString().replace(',', '.'));\n if (Number.isNaN(num)) {\n return '';\n }\n return num.toFixed(decimal).replace('.', ',');\n };\n return (jsx(Input, { ...props, type: type, value: propValue ? formatValue(propValue) : undefined, onChange: (e) => {\n let value = e.target.value.replace(/[^0-9.,]/g, '');\n value = value.replace(/^([.,]+)/, '');\n value = value.replace(/([.,])[.,]+/g, '$1');\n const parts = value.split(/[.,]/);\n if (parts.length > 2) {\n value = `${parts[0]},${parts.slice(1).join('')}`;\n }\n e.target.value = value;\n onChange(e);\n return e;\n }, onBlur: (e) => {\n const formatted = formatValue(e.target.value);\n e.target.value = formatted;\n onChange(e);\n onBlur(e);\n }, \"data-justify\": dataJustify, \"data-font-nums\": dataFontNums }));\n}\n\nfunction IntegerInput({ type = 'number', step = '1', onKeyDown, ...props }) {\n return (jsx(Input, { ...props, type: type, step: step, onKeyDown: (e) => {\n if (e.key === '.' || e.key === ',') {\n e.preventDefault();\n }\n onKeyDown?.(e);\n } }));\n}\n\nexport { DecimalInput, Input, IntegerInput };\n//# sourceMappingURL=index.esm.js.map\n","import { Children, isValidElement } from 'react';\nimport { Input } from '@sertec/input';\nimport { SearchInputProps } from './types.js';\n\nconst SEARCH_SELECT = 'SearchSelect';\nconst SEARCH_SELECT_ASYNC = 'SearchSelectAsync';\nconst SEARCH_SELECT_ASYNC_PAGINATE = 'SearchSelectAsyncPaginate';\nconst CONTROLLER = 'Controller';\n\nexport function SearchInput({\n className,\n classNameWrapper,\n 'data-rounded': rounded = 'left',\n 'data-border': border = 'left-top-bottom',\n 'data-padding-l': dataPaddingL = '2',\n 'data-padding-r': dataPaddingR = '4',\n 'data-wrapper-padding-y': dataWrapperPaddingY = '4',\n 'data-wrapper-padding-x': dataWrapperPaddingX = '4',\n children,\n ...props\n}: SearchInputProps) {\n const arr = Children.toArray(children || []);\n\n const selectorChild = arr.find(\n (child: any) =>\n isValidElement(child) &&\n child.type &&\n ((child.type as any).name === SEARCH_SELECT ||\n (child.type as any).name === SEARCH_SELECT_ASYNC ||\n (child.type as any).name === SEARCH_SELECT_ASYNC_PAGINATE ||\n (child.type as any).name === CONTROLLER),\n );\n\n return (\n <div className={['flex', classNameWrapper].filter(Boolean).join(' ')}>\n <Input\n {...props}\n className={[className, 'flex-1'].filter(Boolean).join(' ')}\n data-border={border}\n data-rounded={rounded}\n data-padding-l={dataPaddingL}\n data-padding-r={dataPaddingR}\n data-wrapper-padding-y={dataWrapperPaddingY}\n data-wrapper-padding-x={dataWrapperPaddingX}\n />\n {selectorChild}\n </div>\n );\n}\n","import { jsxs, jsx as jsx$1, Fragment as Fragment$1 } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport React__default, { useState, useCallback, forwardRef, useContext, useLayoutEffect, useRef, useMemo, createContext, Component, Fragment, useEffect, isValidElement, useId } from 'react';\nimport { createPortal } from 'react-dom';\n\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\n\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r);\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\n\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\n\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: true,\n configurable: true,\n writable: true\n }) : e[r] = t, e;\n}\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), true).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\n\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\n\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\n\nfunction _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\n\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = _objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var n = Object.getOwnPropertySymbols(e);\n for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\n\nvar _excluded$6 = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n var _ref$defaultInputValu = _ref.defaultInputValue,\n defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n propsInputValue = _ref.inputValue,\n propsMenuIsOpen = _ref.menuIsOpen,\n propsOnChange = _ref.onChange,\n propsOnInputChange = _ref.onInputChange,\n propsOnMenuClose = _ref.onMenuClose,\n propsOnMenuOpen = _ref.onMenuOpen,\n propsValue = _ref.value,\n restSelectProps = _objectWithoutProperties(_ref, _excluded$6);\n var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n _useState2 = _slicedToArray(_useState, 2),\n stateInputValue = _useState2[0],\n setStateInputValue = _useState2[1];\n var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n _useState4 = _slicedToArray(_useState3, 2),\n stateMenuIsOpen = _useState4[0],\n setStateMenuIsOpen = _useState4[1];\n var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n _useState6 = _slicedToArray(_useState5, 2),\n stateValue = _useState6[0],\n setStateValue = _useState6[1];\n var onChange = useCallback(function (value, actionMeta) {\n if (typeof propsOnChange === 'function') {\n propsOnChange(value, actionMeta);\n }\n setStateValue(value);\n }, [propsOnChange]);\n var onInputChange = useCallback(function (value, actionMeta) {\n var newValue;\n if (typeof propsOnInputChange === 'function') {\n newValue = propsOnInputChange(value, actionMeta);\n }\n setStateInputValue(newValue !== undefined ? newValue : value);\n }, [propsOnInputChange]);\n var onMenuOpen = useCallback(function () {\n if (typeof propsOnMenuOpen === 'function') {\n propsOnMenuOpen();\n }\n setStateMenuIsOpen(true);\n }, [propsOnMenuOpen]);\n var onMenuClose = useCallback(function () {\n if (typeof propsOnMenuClose === 'function') {\n propsOnMenuClose();\n }\n setStateMenuIsOpen(false);\n }, [propsOnMenuClose]);\n var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n var value = propsValue !== undefined ? propsValue : stateValue;\n return _objectSpread2(_objectSpread2({}, restSelectProps), {}, {\n inputValue: inputValue,\n menuIsOpen: menuIsOpen,\n onChange: onChange,\n onInputChange: onInputChange,\n onMenuClose: onMenuClose,\n onMenuOpen: onMenuOpen,\n value: value\n });\n}\n\nfunction _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\n\nfunction _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\n\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || false, o.configurable = true, \"value\" in o && (o.writable = true), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: false\n }), e;\n}\n\nfunction _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\n\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: true,\n configurable: true\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: false\n }), e && _setPrototypeOf(t, e);\n}\n\nfunction _getPrototypeOf(t) {\n return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, _getPrototypeOf(t);\n}\n\nfunction _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n })();\n}\n\nfunction _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\n\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return _assertThisInitialized(t);\n}\n\nfunction _createSuper(t) {\n var r = _isNativeReflectConstruct();\n return function () {\n var e,\n o = _getPrototypeOf(t);\n if (r) {\n var s = _getPrototypeOf(this).constructor;\n e = Reflect.construct(o, arguments, s);\n } else e = o.apply(this, arguments);\n return _possibleConstructorReturn(this, e);\n };\n}\n\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return _arrayLikeToArray(r);\n}\n\nfunction _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _toConsumableArray(r) {\n return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();\n}\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? true : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nvar MS = '-ms-';\nvar MOZ = '-moz-';\nvar WEBKIT = '-webkit-';\n\nvar COMMENT = 'comm';\nvar RULESET = 'rule';\nvar DECLARATION = 'decl';\nvar IMPORT = '@import';\nvar KEYFRAMES = '@keyframes';\nvar LAYER = '@layer';\n\n/**\n * @param {number}\n * @return {number}\n */\nvar abs = Math.abs;\n\n/**\n * @param {number}\n * @return {string}\n */\nvar from = String.fromCharCode;\n\n/**\n * @param {object}\n * @return {object}\n */\nvar assign = Object.assign;\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nfunction hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nfunction trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nfunction match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nfunction replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nfunction indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nfunction charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nfunction substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nfunction strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nfunction sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nfunction append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nfunction combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\nvar line = 1;\nvar column = 1;\nvar length = 0;\nvar position = 0;\nvar character = 0;\nvar characters = '';\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nfunction node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nfunction copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nfunction char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0;\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--;\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction next () {\n\tcharacter = position < length ? charat(characters, position++) : 0;\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++;\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nfunction peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nfunction caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nfunction slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nfunction token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nfunction alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nfunction dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nfunction delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nfunction whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext();\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nfunction escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nfunction delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character);\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type);\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext();\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nfunction commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nfunction identifier (index) {\n\twhile (!token(peek()))\n\t\tnext();\n\n\treturn slice(index, position)\n}\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nfunction compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nfunction parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0;\n\tvar offset = 0;\n\tvar length = pseudo;\n\tvar atrule = 0;\n\tvar property = 0;\n\tvar previous = 0;\n\tvar variable = 1;\n\tvar scanning = 1;\n\tvar ampersand = 1;\n\tvar character = 0;\n\tvar type = '';\n\tvar props = rules;\n\tvar children = rulesets;\n\tvar reference = rule;\n\tvar characters = type;\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1;\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character);\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous);\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7);\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations);\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/';\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand;\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0;\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '');\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations);\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';';\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets);\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children);\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo;\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous;\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable;\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1);\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1;\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next());\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++;\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0;\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nfunction ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1;\n\tvar rule = offset === 0 ? rules : [''];\n\tvar size = sizeof(rule);\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z;\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nfunction comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nfunction declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nfunction serialize (children, callback) {\n\tvar output = '';\n\tvar length = sizeof(children);\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || '';\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nfunction stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',');\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nfunction middleware (collection) {\n\tvar length = sizeof(collection);\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = '';\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || '';\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nfunction rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element);\n\t}\n}\n\nfunction memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value;\n var parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|