@consta/uikit 4.23.0 → 4.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SpoilerCanary/index.d.ts +1 -0
- package/SpoilerCanary/index.js +1 -0
- package/__internal__/src/components/AutoCompleteCanary/useAutoComplete.js +1 -1
- package/__internal__/src/components/AutoCompleteCanary/useAutoComplete.js.map +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevels/ContextMenuLevels.js +1 -1
- package/__internal__/src/components/ContextMenu/ContextMenuLevels/ContextMenuLevels.js.map +1 -1
- package/__internal__/src/components/ContextMenuDeprecated/ContextMenuDeprecated.js +1 -1
- package/__internal__/src/components/ContextMenuDeprecated/ContextMenuDeprecated.js.map +1 -1
- package/__internal__/src/components/SpoilerCanary/Spoiler.css +1 -1
- package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.js +1 -1
- package/__internal__/src/components/SpoilerCanary/SpoilerButton/SpoilerButton.js.map +1 -1
- package/__internal__/src/components/SpoilerCanary/SpoilerCanary.js +2 -0
- package/__internal__/src/components/SpoilerCanary/SpoilerCanary.js.map +1 -0
- package/__internal__/src/components/SpoilerCanary/index.d.ts +2 -1
- package/__internal__/src/components/SpoilerCanary/index.js +1 -1
- package/__internal__/src/components/SpoilerCanary/index.js.map +1 -1
- package/__internal__/src/components/SpoilerCanary/types.d.ts +20 -5
- package/__internal__/src/components/SpoilerCanary/types.js +1 -1
- package/__internal__/src/components/SpoilerCanary/types.js.map +1 -1
- package/__internal__/src/hooks/useBreakpoints/useBreakpoints.js +1 -1
- package/__internal__/src/hooks/useBreakpoints/useBreakpoints.js.map +1 -1
- package/__internal__/src/hooks/useComponentBreakpoints/useComponentBreakpoints.js +1 -1
- package/__internal__/src/hooks/useComponentBreakpoints/useComponentBreakpoints.js.map +1 -1
- package/__internal__/src/hooks/useRefs/useRefs.d.ts +2 -2
- package/__internal__/src/hooks/useRefs/useRefs.js.map +1 -1
- package/__internal__/src/hooks/useStyleProps/getStyleProps.d.ts +2 -0
- package/__internal__/src/hooks/useStyleProps/getStyleProps.js +2 -0
- package/__internal__/src/hooks/useStyleProps/getStyleProps.js.map +1 -0
- package/__internal__/src/hooks/useStyleProps/helpers.d.ts +2 -0
- package/__internal__/src/hooks/useStyleProps/helpers.js +2 -0
- package/__internal__/src/hooks/useStyleProps/helpers.js.map +1 -0
- package/__internal__/src/hooks/useStyleProps/index.d.ts +2 -0
- package/__internal__/src/hooks/useStyleProps/index.js +2 -0
- package/__internal__/src/hooks/useStyleProps/index.js.map +1 -0
- package/__internal__/src/hooks/useStyleProps/types.d.ts +1 -0
- package/__internal__/src/hooks/useStyleProps/types.js +2 -0
- package/__internal__/src/hooks/useStyleProps/types.js.map +1 -0
- package/__internal__/src/hooks/useStyleProps/useStyleProps.d.ts +3 -0
- package/__internal__/src/hooks/useStyleProps/useStyleProps.js +2 -0
- package/__internal__/src/hooks/useStyleProps/useStyleProps.js.map +1 -0
- package/__internal__/src/hooks/useThemeVars/index.d.ts +1 -0
- package/__internal__/src/hooks/useThemeVars/index.js +1 -1
- package/__internal__/src/hooks/useThemeVars/index.js.map +1 -1
- package/__internal__/src/hooks/useThemeVars/useThemeVars.d.ts +1 -1
- package/__internal__/src/hooks/useThemeVars/useThemeVars.js +1 -1
- package/__internal__/src/hooks/useThemeVars/useThemeVars.js.map +1 -1
- package/__internal__/src/mixs/MixSpace/MixSpace.js.map +1 -1
- package/__internal__/src/utils/object/index.d.ts +2 -0
- package/__internal__/src/utils/object/index.js +2 -0
- package/__internal__/src/utils/object/index.js.map +1 -0
- package/__internal__/src/utils/{object.js → object/isEmpty.js} +1 -1
- package/__internal__/src/utils/object/isEmpty.js.map +1 -0
- package/__internal__/src/utils/object/isEq.d.ts +1 -0
- package/__internal__/src/utils/object/isEq.js.map +1 -0
- package/package.json +1 -1
- package/useStyleProps/index.d.ts +1 -0
- package/useStyleProps/index.js +1 -0
- package/__internal__/src/components/SpoilerCanary/Spoiler.js +0 -2
- package/__internal__/src/components/SpoilerCanary/Spoiler.js.map +0 -1
- package/__internal__/src/hooks/useBreakpoints/isEq.d.ts +0 -2
- package/__internal__/src/hooks/useBreakpoints/isEq.js.map +0 -1
- package/__internal__/src/utils/object.js.map +0 -1
- /package/__internal__/src/components/SpoilerCanary/{Spoiler.d.ts → SpoilerCanary.d.ts} +0 -0
- /package/__internal__/src/utils/{object.d.ts → object/isEmpty.d.ts} +0 -0
- /package/__internal__/src/{hooks/useBreakpoints → utils/object}/isEq.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../__internal__/src/components/SpoilerCanary";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../__internal__/src/components/SpoilerCanary";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){throw a}),f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){h=!0,f=a}),f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useClickOutside}from"../../hooks/useClickOutside";import{useFlag}from"../../hooks/useFlag";import{useKeys}from"../../hooks/useKeys";import{getGroups}from"../../utils/getGroups";export function useAutoComplete(a){var b=a.items,c=a.dropdownRef,d=a.controlRef,e=a.disabled,f=void 0!==e&&e,g=a.getItemLabel,h=a.getItemKey,i=a.searchFunction,j=a.getItemGroupKey,k=a.groups,l=a.getGroupKey,m=a.onFocus,n=a.onBlur,o=a.searchValue,p=useRef(null),q=useFlag(),r=_slicedToArray(q,2),s=r[0],t=r[1],u=useState(0),v=_slicedToArray(u,2),w=v[0],x=v[1],y=function(a,b){return!!b&&-1!==g(a).toLocaleLowerCase().indexOf(b.toLocaleLowerCase())},z=useMemo(function(){return b.filter(function(a){return i?i(a,o||""):y(a,o||"")})},[o,b]),A=useMemo(function(){var a=getGroups(z,null!==k&&void 0!==k&&k.length?j:void 0,k,l,void 0);return a},[z,k,j,l]),B=useMemo(function(){return!!A.find(function(a){return 0<a.items.length})},[A]),C=useCallback(function(a){x(Math.min(Math.max(0,"function"==typeof a?a(w):a),z.length-1))},[z,w]),D=function(b,c){f||a.onChange({value:c,e:b})},E=function(a,b){b.preventDefault(),C(function(a){return a-1})},F=function(a,b){b.preventDefault(),C(function(a){return a+1})},G=useKeys({ArrowUp:E,ArrowDown:F,PageUp:E,PageDown:F,Home:E,End:F,Enter:function Enter(a,b){if(s){(o||z[w])&&b.preventDefault();var c=function(a){var b,c=0,d=_createForOfIteratorHelper(A);try{for(d.s();!(b=d.n()).done;){var e=b.value;if(e.items.length+c>a)return e.items[a-c];c+=e.items.length}}catch(a){d.e(a)}finally{d.f()}},d=c(w);d&&D(b,d)}},Escape:function Escape(){t.off()},Tab:function Tab(){t.off()}});useClickOutside({isActive:s,ignoreClicksInsideRefs:[c,d],handler:
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){throw a}),f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){h=!0,f=a}),f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useClickOutside}from"../../hooks/useClickOutside";import{useFlag}from"../../hooks/useFlag";import{useKeys}from"../../hooks/useKeys";import{getGroups}from"../../utils/getGroups";export function useAutoComplete(a){var b=a.items,c=a.dropdownRef,d=a.controlRef,e=a.disabled,f=void 0!==e&&e,g=a.getItemLabel,h=a.getItemKey,i=a.searchFunction,j=a.getItemGroupKey,k=a.groups,l=a.getGroupKey,m=a.onFocus,n=a.onBlur,o=a.searchValue,p=useRef(null),q=useFlag(),r=_slicedToArray(q,2),s=r[0],t=r[1],u=useState(0),v=_slicedToArray(u,2),w=v[0],x=v[1],y=function(a,b){return!!b&&-1!==g(a).toLocaleLowerCase().indexOf(b.toLocaleLowerCase())},z=useMemo(function(){return b.filter(function(a){return i?i(a,o||""):y(a,o||"")})},[o,b]),A=useMemo(function(){var a=getGroups(z,null!==k&&void 0!==k&&k.length?j:void 0,k,l,void 0);return a},[z,k,j,l]),B=useMemo(function(){return!!A.find(function(a){return 0<a.items.length})},[A]),C=useCallback(function(a){x(Math.min(Math.max(0,"function"==typeof a?a(w):a),z.length-1))},[z,w]),D=function(b,c){f||a.onChange({value:c,e:b})},E=function(a,b){b.preventDefault(),C(function(a){return a-1})},F=function(a,b){b.preventDefault(),C(function(a){return a+1})},G=useKeys({ArrowUp:E,ArrowDown:F,PageUp:E,PageDown:F,Home:E,End:F,Enter:function Enter(a,b){if(s){(o||z[w])&&b.preventDefault();var c=function(a){var b,c=0,d=_createForOfIteratorHelper(A);try{for(d.s();!(b=d.n()).done;){var e=b.value;if(e.items.length+c>a)return e.items[a-c];c+=e.items.length}}catch(a){d.e(a)}finally{d.f()}},d=c(w);d&&D(b,d)}},Escape:function Escape(){t.off()},Tab:function Tab(){t.off()}});useClickOutside({isActive:s,ignoreClicksInsideRefs:[c,d],handler:t.off}),useEffect(function(){if(f){var a;t.off(),null===(a=p.current)||void 0===a?void 0:a.blur()}},[f]);return{isOpen:!!(s&&B),visibleItems:A,getOptionProps:function getOptionProps(a){var b=a.index,c=a.item,d=h(c);return{onClick:function onClick(a){D(a,c)},onMouseEnter:function onMouseEnter(){C(b)},active:!1,hovered:b===w,key:d}},handleInputFocus:function handleInputFocus(a){f||(!s&&t.on(),"function"==typeof m&&m(a))},handleInputBlur:function handleInputBlur(a){if(s){var b;return void(null===(b=p.current)||void 0===b?void 0:b.focus())}"function"==typeof n&&n(a)},inputRef:p,getKeyProps:G,hasItems:B}}
|
|
2
2
|
//# sourceMappingURL=useAutoComplete.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAutoComplete.js","names":["useCallback","useEffect","useMemo","useRef","useState","useClickOutside","useFlag","useKeys","getGroups","useAutoComplete","params","items","dropdownRef","controlRef","disabled","getItemLabel","getItemKey","searchFunction","getItemGroupKey","groups","getGroupKey","onFocus","onBlur","searchValue","inputRef","isOpen","setIsOpen","highlightedIndex","setHighlightedIndex","searchFunctionDefault","item","toLocaleLowerCase","indexOf","filteredOptions","filter","visibleItems","resultGroups","length","hasItems","find","group","highlightIndex","indexForHighlight","Math","min","max","onChange","e","value","ArrowUp","_","preventDefault","old","ArrowDown","getKeyProps","PageUp","PageDown","Home","End","Enter","getItem","index","couter","Escape","off","Tab","isActive","ignoreClicksInsideRefs","handler","current","blur","getOptionProps","key","onClick","onMouseEnter","active","hovered","handleInputFocus","on","handleInputBlur","focus"],"sources":["../../../../../src/components/AutoCompleteCanary/useAutoComplete.ts"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useFlag } from '##/hooks/useFlag';\nimport { KeyHandler, useKeys } from '##/hooks/useKeys';\nimport { getGroups } from '##/utils/getGroups';\n\ntype IndexForHighlight = number | ((oldIndex: number) => number);\n\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\n\ntype OnChangeProp<ITEM> = (props: {\n value: ITEM | null;\n e: React.SyntheticEvent;\n}) => void;\n\ntype UseAutoCompleteProps<ITEM, GROUP> = {\n getItemGroupKey?: GetItemGroupKey<ITEM> | undefined;\n getGroupKey?: GetGroupKey<GROUP>;\n groups?: GROUP[];\n items: ITEM[];\n dropdownRef: React.MutableRefObject<HTMLDivElement | null>;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled?: boolean;\n getItemLabel: (item: ITEM) => string;\n getItemKey: (item: ITEM) => string | number;\n searchFunction?: (item: ITEM, searchValue: string) => boolean;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n searchValue?: string;\n onChange: OnChangeProp<ITEM>;\n};\n\ntype OptionProps<ITEM> = {\n index: number;\n item: ITEM;\n};\n\ntype GetOptionPropsResult = {\n onClick: (e: React.SyntheticEvent) => void;\n onMouseEnter: (e: React.SyntheticEvent) => void;\n active: boolean;\n hovered: boolean;\n key: string | number;\n};\n\nexport function useAutoComplete<ITEM, GROUP>(\n params: UseAutoCompleteProps<ITEM, GROUP>,\n) {\n const {\n items,\n dropdownRef,\n controlRef,\n disabled = false,\n getItemLabel,\n getItemKey,\n searchFunction,\n getItemGroupKey,\n groups,\n getGroupKey,\n onFocus,\n onBlur,\n searchValue,\n } = params;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [isOpen, setIsOpen] = useFlag();\n const [highlightedIndex, setHighlightedIndex] = useState<number>(0);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string) => {\n if (!searchValue) {\n return false;\n }\n return (\n getItemLabel(item)\n .toLocaleLowerCase()\n .indexOf(searchValue.toLocaleLowerCase()) !== -1\n );\n };\n\n const filteredOptions = useMemo(\n () =>\n items.filter((item) =>\n searchFunction\n ? searchFunction(item, searchValue || '')\n : searchFunctionDefault(item, searchValue || ''),\n ),\n [searchValue, items],\n );\n\n const visibleItems = useMemo(() => {\n const resultGroups = getGroups(\n filteredOptions,\n groups?.length ? getItemGroupKey : undefined,\n groups,\n getGroupKey,\n undefined,\n );\n\n return resultGroups;\n }, [filteredOptions, groups, getItemGroupKey, getGroupKey]);\n\n const hasItems = useMemo(() => {\n return !!visibleItems.find((group) => group.items.length > 0);\n }, [visibleItems]);\n\n const highlightIndex = useCallback(\n (indexForHighlight: IndexForHighlight) => {\n setHighlightedIndex(\n Math.min(\n Math.max(\n 0,\n typeof indexForHighlight === 'function'\n ? indexForHighlight(highlightedIndex)\n : indexForHighlight,\n ),\n filteredOptions.length - 1,\n ),\n );\n },\n [filteredOptions, highlightedIndex],\n );\n\n const onChange = (e: React.SyntheticEvent, item: ITEM) => {\n if (!disabled) {\n params.onChange({ value: item, e });\n }\n };\n\n // Prop Getters\n\n const ArrowUp: KeyHandler = (_, e): void => {\n e.preventDefault();\n highlightIndex((old) => old - 1);\n };\n\n const ArrowDown: KeyHandler = (_, e): void => {\n e.preventDefault();\n highlightIndex((old) => old + 1);\n };\n\n const Enter: KeyHandler = (_, e): void => {\n if (isOpen) {\n if (searchValue || filteredOptions[highlightedIndex]) {\n e.preventDefault();\n }\n\n const getItem = (index: number) => {\n let couter = 0;\n for (const group of visibleItems) {\n if (group.items.length + couter > index) {\n return group.items[index - couter];\n }\n couter += group.items.length;\n }\n return undefined;\n };\n\n const item = getItem(highlightedIndex);\n\n if (item) {\n onChange(e, item);\n }\n }\n };\n\n const Escape = (): void => {\n setIsOpen.off();\n };\n\n const Tab = (): void => {\n setIsOpen.off();\n };\n\n const getKeyProps = useKeys({\n ArrowUp,\n ArrowDown,\n PageUp: ArrowUp,\n PageDown: ArrowDown,\n Home: ArrowUp,\n End: ArrowDown,\n Enter,\n Escape,\n Tab,\n });\n\n const getOptionProps = ({\n index,\n item,\n }: OptionProps<ITEM>): GetOptionPropsResult => {\n const key = getItemKey(item);\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChange(e, item);\n },\n onMouseEnter: () => {\n highlightIndex(index);\n },\n active: false,\n hovered: index === highlightedIndex,\n key,\n };\n };\n\n useClickOutside({\n isActive: isOpen,\n ignoreClicksInsideRefs: [dropdownRef, controlRef],\n handler: () => {\n setIsOpen.off();\n },\n });\n\n useEffect(() => {\n if (disabled) {\n setIsOpen.off();\n inputRef.current?.blur();\n }\n }, [disabled]);\n\n const handleInputFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (!disabled) {\n if (!isOpen) {\n setIsOpen.on();\n }\n if (typeof onFocus === 'function') {\n onFocus(e);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (isOpen) {\n inputRef.current?.focus();\n return;\n }\n\n if (typeof onBlur === 'function') {\n onBlur(e);\n }\n };\n\n return {\n isOpen: Boolean(isOpen && hasItems),\n visibleItems,\n getOptionProps,\n handleInputFocus,\n handleInputBlur,\n inputRef,\n getKeyProps,\n hasItems,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useAutoComplete.js","names":["useCallback","useEffect","useMemo","useRef","useState","useClickOutside","useFlag","useKeys","getGroups","useAutoComplete","params","items","dropdownRef","controlRef","disabled","getItemLabel","getItemKey","searchFunction","getItemGroupKey","groups","getGroupKey","onFocus","onBlur","searchValue","inputRef","isOpen","setIsOpen","highlightedIndex","setHighlightedIndex","searchFunctionDefault","item","toLocaleLowerCase","indexOf","filteredOptions","filter","visibleItems","resultGroups","length","hasItems","find","group","highlightIndex","indexForHighlight","Math","min","max","onChange","e","value","ArrowUp","_","preventDefault","old","ArrowDown","getKeyProps","PageUp","PageDown","Home","End","Enter","getItem","index","couter","Escape","off","Tab","isActive","ignoreClicksInsideRefs","handler","current","blur","getOptionProps","key","onClick","onMouseEnter","active","hovered","handleInputFocus","on","handleInputBlur","focus"],"sources":["../../../../../src/components/AutoCompleteCanary/useAutoComplete.ts"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useFlag } from '##/hooks/useFlag';\nimport { KeyHandler, useKeys } from '##/hooks/useKeys';\nimport { getGroups } from '##/utils/getGroups';\n\ntype IndexForHighlight = number | ((oldIndex: number) => number);\n\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\n\ntype OnChangeProp<ITEM> = (props: {\n value: ITEM | null;\n e: React.SyntheticEvent;\n}) => void;\n\ntype UseAutoCompleteProps<ITEM, GROUP> = {\n getItemGroupKey?: GetItemGroupKey<ITEM> | undefined;\n getGroupKey?: GetGroupKey<GROUP>;\n groups?: GROUP[];\n items: ITEM[];\n dropdownRef: React.MutableRefObject<HTMLDivElement | null>;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled?: boolean;\n getItemLabel: (item: ITEM) => string;\n getItemKey: (item: ITEM) => string | number;\n searchFunction?: (item: ITEM, searchValue: string) => boolean;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n searchValue?: string;\n onChange: OnChangeProp<ITEM>;\n};\n\ntype OptionProps<ITEM> = {\n index: number;\n item: ITEM;\n};\n\ntype GetOptionPropsResult = {\n onClick: (e: React.SyntheticEvent) => void;\n onMouseEnter: (e: React.SyntheticEvent) => void;\n active: boolean;\n hovered: boolean;\n key: string | number;\n};\n\nexport function useAutoComplete<ITEM, GROUP>(\n params: UseAutoCompleteProps<ITEM, GROUP>,\n) {\n const {\n items,\n dropdownRef,\n controlRef,\n disabled = false,\n getItemLabel,\n getItemKey,\n searchFunction,\n getItemGroupKey,\n groups,\n getGroupKey,\n onFocus,\n onBlur,\n searchValue,\n } = params;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [isOpen, setIsOpen] = useFlag();\n const [highlightedIndex, setHighlightedIndex] = useState<number>(0);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string) => {\n if (!searchValue) {\n return false;\n }\n return (\n getItemLabel(item)\n .toLocaleLowerCase()\n .indexOf(searchValue.toLocaleLowerCase()) !== -1\n );\n };\n\n const filteredOptions = useMemo(\n () =>\n items.filter((item) =>\n searchFunction\n ? searchFunction(item, searchValue || '')\n : searchFunctionDefault(item, searchValue || ''),\n ),\n [searchValue, items],\n );\n\n const visibleItems = useMemo(() => {\n const resultGroups = getGroups(\n filteredOptions,\n groups?.length ? getItemGroupKey : undefined,\n groups,\n getGroupKey,\n undefined,\n );\n\n return resultGroups;\n }, [filteredOptions, groups, getItemGroupKey, getGroupKey]);\n\n const hasItems = useMemo(() => {\n return !!visibleItems.find((group) => group.items.length > 0);\n }, [visibleItems]);\n\n const highlightIndex = useCallback(\n (indexForHighlight: IndexForHighlight) => {\n setHighlightedIndex(\n Math.min(\n Math.max(\n 0,\n typeof indexForHighlight === 'function'\n ? indexForHighlight(highlightedIndex)\n : indexForHighlight,\n ),\n filteredOptions.length - 1,\n ),\n );\n },\n [filteredOptions, highlightedIndex],\n );\n\n const onChange = (e: React.SyntheticEvent, item: ITEM) => {\n if (!disabled) {\n params.onChange({ value: item, e });\n }\n };\n\n // Prop Getters\n\n const ArrowUp: KeyHandler = (_, e): void => {\n e.preventDefault();\n highlightIndex((old) => old - 1);\n };\n\n const ArrowDown: KeyHandler = (_, e): void => {\n e.preventDefault();\n highlightIndex((old) => old + 1);\n };\n\n const Enter: KeyHandler = (_, e): void => {\n if (isOpen) {\n if (searchValue || filteredOptions[highlightedIndex]) {\n e.preventDefault();\n }\n\n const getItem = (index: number) => {\n let couter = 0;\n for (const group of visibleItems) {\n if (group.items.length + couter > index) {\n return group.items[index - couter];\n }\n couter += group.items.length;\n }\n return undefined;\n };\n\n const item = getItem(highlightedIndex);\n\n if (item) {\n onChange(e, item);\n }\n }\n };\n\n const Escape = (): void => {\n setIsOpen.off();\n };\n\n const Tab = (): void => {\n setIsOpen.off();\n };\n\n const getKeyProps = useKeys({\n ArrowUp,\n ArrowDown,\n PageUp: ArrowUp,\n PageDown: ArrowDown,\n Home: ArrowUp,\n End: ArrowDown,\n Enter,\n Escape,\n Tab,\n });\n\n const getOptionProps = ({\n index,\n item,\n }: OptionProps<ITEM>): GetOptionPropsResult => {\n const key = getItemKey(item);\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChange(e, item);\n },\n onMouseEnter: () => {\n highlightIndex(index);\n },\n active: false,\n hovered: index === highlightedIndex,\n key,\n };\n };\n\n useClickOutside({\n isActive: isOpen,\n ignoreClicksInsideRefs: [dropdownRef, controlRef],\n handler: setIsOpen.off,\n });\n\n useEffect(() => {\n if (disabled) {\n setIsOpen.off();\n inputRef.current?.blur();\n }\n }, [disabled]);\n\n const handleInputFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (!disabled) {\n if (!isOpen) {\n setIsOpen.on();\n }\n if (typeof onFocus === 'function') {\n onFocus(e);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (isOpen) {\n inputRef.current?.focus();\n return;\n }\n\n if (typeof onBlur === 'function') {\n onBlur(e);\n }\n };\n\n return {\n isOpen: Boolean(isOpen && hasItems),\n visibleItems,\n getOptionProps,\n handleInputFocus,\n handleInputBlur,\n inputRef,\n getKeyProps,\n hasItems,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["items","anchorRef","position","direction","possibleDirections","offset","onClickOutside","getItemKey","getItemLabel","getItemSubMenu","style","spareDirection","subMenuDirection","isMobile","isOpen","setComponentSize","enableAnimationBack","disableAnimationBack"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React,{Fragment,useEffect,useState}from"react";import{Transition,TransitionGroup}from"react-transition-group";import{useClickOutside}from"../../../hooks/useClickOutside";import{useForkRef}from"../../../hooks/useForkRef";import{useMutableRef}from"../../../hooks/useMutableRef";import{useRefs}from"../../../hooks/useRefs";import{animateTimeout}from"../../../mixs/MixPopoverAnimate";import{clearTimers,ContextMenuLevel}from"../ContextMenuLevel";import{getLevels,withDefaultGetters}from"../helpers";import{contextMenuPropDefaultSubMenuDirection,contextMenuPropSubMenuDirections}from"../types";import{useSize}from"./useSize";var ContextMenuLevelsRender=function(a,b){var c=withDefaultGetters(a),d=c.items,e=c.anchorRef,f=c.position,g=c.direction,h=c.possibleDirections,i=c.offset,j=c.onClickOutside,k=c.getItemKey,l=c.getItemLabel,m=c.getItemSubMenu,n=c.style,o=c.spareDirection,p=c.subMenuDirection,q=void 0===p?contextMenuPropDefaultSubMenuDirection:p,r=c.isMobile,s=c.isOpen,t=c.setComponentSize,u=c.enableAnimationBack,v=c.disableAnimationBack,w=_objectWithoutProperties(c,_excluded),x=useMutableRef(s),y=[{items:d,anchorRef:e,position:f,direction:g,possibleDirections:h,offset:i}],z=useState(r?y:[]),A=_slicedToArray(z,2),B=A[0],C=A[1],D=useState(q),E=_slicedToArray(D,2),F=E[0],G=E[1],H=useState(-1),I=_slicedToArray(H,2),J=I[0],K=I[1],L=useRefs(B.length),M=function(a){var b=a.level,d=a.items,e=a.anchorRef,f=a.activeItem,g=a.parent,h=_toConsumableArray(B),i=h[b]&&1<h.length-b?h[b].direction:void 0;h[b]&&1<h.length-b&&i&&G(i),h[b-1].activeItem=f,h.splice(b),h.push({items:d,anchorRef:r?c.anchorRef:e,direction:r?c.direction:i||F,possibleDirections:r?c.possibleDirections:contextMenuPropSubMenuDirections,position:r?c.position:void 0,offset:r?c.offset:void 0,parent:g}),x.current?C(h):C([])},N=function(a){u();var b=_toConsumableArray(B);b.splice(a),b[a-1]=_objectSpread(_objectSpread({},b[a-1]),{},{activeItem:void 0}),C(b),v()};useClickOutside({isActive
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["items","anchorRef","position","direction","possibleDirections","offset","onClickOutside","getItemKey","getItemLabel","getItemSubMenu","style","spareDirection","subMenuDirection","isMobile","isOpen","setComponentSize","enableAnimationBack","disableAnimationBack"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React,{Fragment,useEffect,useState}from"react";import{Transition,TransitionGroup}from"react-transition-group";import{useClickOutside}from"../../../hooks/useClickOutside";import{useForkRef}from"../../../hooks/useForkRef";import{useMutableRef}from"../../../hooks/useMutableRef";import{useRefs}from"../../../hooks/useRefs";import{animateTimeout}from"../../../mixs/MixPopoverAnimate";import{clearTimers,ContextMenuLevel}from"../ContextMenuLevel";import{getLevels,withDefaultGetters}from"../helpers";import{contextMenuPropDefaultSubMenuDirection,contextMenuPropSubMenuDirections}from"../types";import{useSize}from"./useSize";var ContextMenuLevelsRender=function(a,b){var c=withDefaultGetters(a),d=c.items,e=c.anchorRef,f=c.position,g=c.direction,h=c.possibleDirections,i=c.offset,j=c.onClickOutside,k=c.getItemKey,l=c.getItemLabel,m=c.getItemSubMenu,n=c.style,o=c.spareDirection,p=c.subMenuDirection,q=void 0===p?contextMenuPropDefaultSubMenuDirection:p,r=c.isMobile,s=c.isOpen,t=c.setComponentSize,u=c.enableAnimationBack,v=c.disableAnimationBack,w=_objectWithoutProperties(c,_excluded),x=useMutableRef(s),y=[{items:d,anchorRef:e,position:f,direction:g,possibleDirections:h,offset:i}],z=useState(r?y:[]),A=_slicedToArray(z,2),B=A[0],C=A[1],D=useState(q),E=_slicedToArray(D,2),F=E[0],G=E[1],H=useState(-1),I=_slicedToArray(H,2),J=I[0],K=I[1],L=useRefs(B.length),M=function(a){var b=a.level,d=a.items,e=a.anchorRef,f=a.activeItem,g=a.parent,h=_toConsumableArray(B),i=h[b]&&1<h.length-b?h[b].direction:void 0;h[b]&&1<h.length-b&&i&&G(i),h[b-1].activeItem=f,h.splice(b),h.push({items:d,anchorRef:r?c.anchorRef:e,direction:r?c.direction:i||F,possibleDirections:r?c.possibleDirections:contextMenuPropSubMenuDirections,position:r?c.position:void 0,offset:r?c.offset:void 0,parent:g}),x.current?C(h):C([])},N=function(a){u();var b=_toConsumableArray(B);b.splice(a),b[a-1]=_objectSpread(_objectSpread({},b[a-1]),{},{activeItem:void 0}),C(b),v()};useClickOutside({isActive:j&&s,ignoreClicksInsideRefs:[].concat(_toConsumableArray(L),[e||{current:null}]),handler:j}),useEffect(function(){return clearTimers(),C(getLevels({levels:B,items:d,getItemKey:k,getItemSubMenu:m})),function(){return clearTimers()}},[d]);var O=useForkRef([L[0],b]);return useEffect(function(){C(y)},[f]),useEffect(function(){C(s?y:[])},[s]),useSize(L,t,r),React.createElement(TransitionGroup,{component:Fragment},B.map(function(a,b){var d="".concat(b,"-").concat(a.parent?k(a.parent):""),e=b!==B.length-1;return r&&e?React.createElement(Fragment,{key:b}):React.createElement(Transition,{key:d,timeout:animateTimeout,nodeRef:L[b]},function(d){return React.createElement(ContextMenuLevel,Object.assign({},w,a,{key:"".concat(b,"-").concat(a.parent?k(a.parent):""),isMobile:r,isOpen:s,style:_objectSpread(_objectSpread({},n),{zIndex:"number"==typeof(null===n||void 0===n?void 0:n.zIndex)?n.zIndex+1:void 0}),levelDepth:b,getItemLabel:l,addLevel:M,deleteLevel:N,onSetDirection:0<b?G:c.onSetDirection,hoveredParenLevel:J,setHoveredParenLevel:K,getItemSubMenu:m,getItemKey:k,ref:0===b?O:L[b],spareDirection:0===b?o:"rightStartUp",parent:r?a.parent:void 0,animate:d}))})}))};export var ContextMenuLevels=React.forwardRef(ContextMenuLevelsRender);
|
|
2
2
|
//# sourceMappingURL=ContextMenuLevels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenuLevels.js","names":["React","Fragment","useEffect","useState","Transition","TransitionGroup","useClickOutside","useForkRef","useMutableRef","useRefs","animateTimeout","clearTimers","ContextMenuLevel","getLevels","withDefaultGetters","contextMenuPropDefaultSubMenuDirection","contextMenuPropSubMenuDirections","useSize","ContextMenuLevelsRender","propsComponent","ref","props","items","anchorRef","position","direction","possibleDirections","offset","onClickOutside","getItemKey","getItemLabel","getItemSubMenu","style","spareDirection","subMenuDirection","subMenuDirectionProp","isMobile","isOpen","setComponentSize","enableAnimationBack","disableAnimationBack","otherProps","isOpenRef","defaultLevels","levels","setLevels","setSubMenuDirection","hoveredParenLevel","setHoveredParenLevel","levelsRefs","length","addLevel","level","activeItem","parent","newLevels","oldDirection","splice","push","current","deleteLevel","isActive","ignoreClicksInsideRefs","handler","e","firstLevelRef","map","index","key","last","animate","zIndex","onSetDirection","ContextMenuLevels","forwardRef"],"sources":["../../../../../../src/components/ContextMenu/ContextMenuLevels/ContextMenuLevels.tsx"],"sourcesContent":["import React, { Fragment, useEffect, useState } from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\n\nimport { Direction } from '##/components/Popover';\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { useRefs } from '##/hooks/useRefs';\nimport { animateTimeout } from '##/mixs/MixPopoverAnimate';\n\nimport { clearTimers, ContextMenuLevel } from '../ContextMenuLevel';\nimport { getLevels, withDefaultGetters } from '../helpers';\nimport {\n AddLevel,\n ContextMenuItemDefault,\n ContextMenuLevelsComponent,\n ContextMenuLevelsProps,\n contextMenuPropDefaultSubMenuDirection,\n contextMenuPropSubMenuDirections,\n Level,\n} from '../types';\nimport { useSize } from './useSize';\n\nconst ContextMenuLevelsRender = (\n propsComponent: ContextMenuLevelsProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const props = withDefaultGetters(propsComponent);\n const {\n items,\n anchorRef,\n position,\n direction,\n possibleDirections,\n offset,\n onClickOutside,\n getItemKey,\n getItemLabel,\n getItemSubMenu,\n style,\n spareDirection,\n subMenuDirection:\n subMenuDirectionProp = contextMenuPropDefaultSubMenuDirection,\n isMobile,\n isOpen,\n setComponentSize,\n enableAnimationBack,\n disableAnimationBack,\n ...otherProps\n } = props;\n\n const isOpenRef = useMutableRef(isOpen);\n\n type Item = typeof items[number];\n\n const defaultLevels: Level<ContextMenuItemDefault>[] = [\n {\n items,\n anchorRef,\n position,\n direction,\n possibleDirections,\n offset,\n },\n ];\n\n const [levels, setLevels] = useState<\n Level<ContextMenuItemDefault & { isParent?: boolean }>[]\n >(isMobile ? defaultLevels : []);\n const [subMenuDirection, setSubMenuDirection] =\n useState<Direction>(subMenuDirectionProp);\n const [hoveredParenLevel, setHoveredParenLevel] = useState<number>(-1);\n\n const levelsRefs = useRefs<HTMLDivElement>(levels.length);\n\n const addLevel: AddLevel<Item> = ({\n level,\n items,\n anchorRef,\n activeItem,\n parent,\n }) => {\n const newLevels: Level<ContextMenuItemDefault & { isParent?: boolean }>[] =\n [...levels];\n const oldDirection =\n newLevels[level] && newLevels.length - level > 1\n ? newLevels[level].direction\n : undefined;\n\n if (newLevels[level] && newLevels.length - level > 1 && oldDirection) {\n setSubMenuDirection(oldDirection);\n }\n\n newLevels[level - 1].activeItem = activeItem;\n newLevels.splice(level);\n newLevels.push({\n items,\n anchorRef: isMobile ? props.anchorRef : anchorRef,\n direction: isMobile ? props.direction : oldDirection || subMenuDirection,\n possibleDirections: isMobile\n ? props.possibleDirections\n : contextMenuPropSubMenuDirections,\n position: isMobile ? props.position : undefined,\n offset: isMobile ? props.offset : undefined,\n parent,\n });\n\n isOpenRef.current ? setLevels(newLevels) : setLevels([]);\n };\n\n const deleteLevel = (level: number) => {\n enableAnimationBack();\n const newLevels = [...levels];\n newLevels.splice(level);\n newLevels[level - 1] = { ...newLevels[level - 1], activeItem: undefined };\n setLevels(newLevels);\n disableAnimationBack();\n };\n\n useClickOutside({\n isActive: !!onClickOutside,\n ignoreClicksInsideRefs: [...levelsRefs, anchorRef || { current: null }],\n handler: (e) => onClickOutside?.(e),\n });\n\n useEffect(() => {\n clearTimers();\n setLevels(\n getLevels({\n levels,\n items,\n getItemKey,\n getItemSubMenu,\n }),\n );\n return () => clearTimers();\n }, [items]);\n\n const firstLevelRef = useForkRef([levelsRefs[0], ref]);\n\n useEffect(() => {\n setLevels(defaultLevels);\n }, [position]);\n\n useEffect(() => {\n setLevels(isOpen ? defaultLevels : []);\n }, [isOpen]);\n\n useSize(levelsRefs, setComponentSize, isMobile);\n\n return (\n <TransitionGroup component={Fragment}>\n {levels.map((level, index) => {\n const key = `${index}-${level.parent ? getItemKey(level.parent) : ''}`;\n\n const last = index !== levels.length - 1;\n\n if (isMobile && last) {\n return <Fragment key={index} />;\n }\n\n return (\n <Transition\n key={key}\n timeout={animateTimeout}\n nodeRef={levelsRefs[index]}\n >\n {(animate) => (\n <ContextMenuLevel\n {...otherProps}\n {...level}\n key={`${index}-${level.parent ? getItemKey(level.parent) : ''}`}\n isMobile={isMobile}\n isOpen={isOpen}\n style={{\n ...style,\n ...{\n zIndex:\n typeof style?.zIndex === 'number'\n ? style.zIndex + 1\n : undefined,\n },\n }}\n levelDepth={index}\n getItemLabel={getItemLabel}\n addLevel={addLevel}\n deleteLevel={deleteLevel}\n onSetDirection={\n index > 0 ? setSubMenuDirection : props.onSetDirection\n }\n hoveredParenLevel={hoveredParenLevel}\n setHoveredParenLevel={setHoveredParenLevel}\n getItemSubMenu={getItemSubMenu}\n getItemKey={getItemKey}\n ref={index === 0 ? firstLevelRef : levelsRefs[index]}\n spareDirection={index === 0 ? spareDirection : 'rightStartUp'}\n parent={isMobile ? level.parent : undefined}\n animate={animate}\n />\n )}\n </Transition>\n );\n })}\n </TransitionGroup>\n );\n};\n\nexport const ContextMenuLevels = React.forwardRef(\n ContextMenuLevelsRender,\n) as ContextMenuLevelsComponent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContextMenuLevels.js","names":["React","Fragment","useEffect","useState","Transition","TransitionGroup","useClickOutside","useForkRef","useMutableRef","useRefs","animateTimeout","clearTimers","ContextMenuLevel","getLevels","withDefaultGetters","contextMenuPropDefaultSubMenuDirection","contextMenuPropSubMenuDirections","useSize","ContextMenuLevelsRender","propsComponent","ref","props","items","anchorRef","position","direction","possibleDirections","offset","onClickOutside","getItemKey","getItemLabel","getItemSubMenu","style","spareDirection","subMenuDirection","subMenuDirectionProp","isMobile","isOpen","setComponentSize","enableAnimationBack","disableAnimationBack","otherProps","isOpenRef","defaultLevels","levels","setLevels","setSubMenuDirection","hoveredParenLevel","setHoveredParenLevel","levelsRefs","length","addLevel","level","activeItem","parent","newLevels","oldDirection","splice","push","current","deleteLevel","isActive","ignoreClicksInsideRefs","handler","firstLevelRef","map","index","key","last","animate","zIndex","onSetDirection","ContextMenuLevels","forwardRef"],"sources":["../../../../../../src/components/ContextMenu/ContextMenuLevels/ContextMenuLevels.tsx"],"sourcesContent":["import React, { Fragment, useEffect, useState } from 'react';\nimport { Transition, TransitionGroup } from 'react-transition-group';\n\nimport { Direction } from '##/components/Popover';\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { useRefs } from '##/hooks/useRefs';\nimport { animateTimeout } from '##/mixs/MixPopoverAnimate';\n\nimport { clearTimers, ContextMenuLevel } from '../ContextMenuLevel';\nimport { getLevels, withDefaultGetters } from '../helpers';\nimport {\n AddLevel,\n ContextMenuItemDefault,\n ContextMenuLevelsComponent,\n ContextMenuLevelsProps,\n contextMenuPropDefaultSubMenuDirection,\n contextMenuPropSubMenuDirections,\n Level,\n} from '../types';\nimport { useSize } from './useSize';\n\nconst ContextMenuLevelsRender = (\n propsComponent: ContextMenuLevelsProps,\n ref: React.Ref<HTMLDivElement>,\n) => {\n const props = withDefaultGetters(propsComponent);\n const {\n items,\n anchorRef,\n position,\n direction,\n possibleDirections,\n offset,\n onClickOutside,\n getItemKey,\n getItemLabel,\n getItemSubMenu,\n style,\n spareDirection,\n subMenuDirection:\n subMenuDirectionProp = contextMenuPropDefaultSubMenuDirection,\n isMobile,\n isOpen,\n setComponentSize,\n enableAnimationBack,\n disableAnimationBack,\n ...otherProps\n } = props;\n\n const isOpenRef = useMutableRef(isOpen);\n\n type Item = typeof items[number];\n\n const defaultLevels: Level<ContextMenuItemDefault>[] = [\n {\n items,\n anchorRef,\n position,\n direction,\n possibleDirections,\n offset,\n },\n ];\n\n const [levels, setLevels] = useState<\n Level<ContextMenuItemDefault & { isParent?: boolean }>[]\n >(isMobile ? defaultLevels : []);\n const [subMenuDirection, setSubMenuDirection] =\n useState<Direction>(subMenuDirectionProp);\n const [hoveredParenLevel, setHoveredParenLevel] = useState<number>(-1);\n\n const levelsRefs = useRefs<HTMLDivElement>(levels.length);\n\n const addLevel: AddLevel<Item> = ({\n level,\n items,\n anchorRef,\n activeItem,\n parent,\n }) => {\n const newLevels: Level<ContextMenuItemDefault & { isParent?: boolean }>[] =\n [...levels];\n const oldDirection =\n newLevels[level] && newLevels.length - level > 1\n ? newLevels[level].direction\n : undefined;\n\n if (newLevels[level] && newLevels.length - level > 1 && oldDirection) {\n setSubMenuDirection(oldDirection);\n }\n\n newLevels[level - 1].activeItem = activeItem;\n newLevels.splice(level);\n newLevels.push({\n items,\n anchorRef: isMobile ? props.anchorRef : anchorRef,\n direction: isMobile ? props.direction : oldDirection || subMenuDirection,\n possibleDirections: isMobile\n ? props.possibleDirections\n : contextMenuPropSubMenuDirections,\n position: isMobile ? props.position : undefined,\n offset: isMobile ? props.offset : undefined,\n parent,\n });\n\n isOpenRef.current ? setLevels(newLevels) : setLevels([]);\n };\n\n const deleteLevel = (level: number) => {\n enableAnimationBack();\n const newLevels = [...levels];\n newLevels.splice(level);\n newLevels[level - 1] = { ...newLevels[level - 1], activeItem: undefined };\n setLevels(newLevels);\n disableAnimationBack();\n };\n\n useClickOutside({\n isActive: onClickOutside && isOpen,\n ignoreClicksInsideRefs: [...levelsRefs, anchorRef || { current: null }],\n handler: onClickOutside,\n });\n\n useEffect(() => {\n clearTimers();\n setLevels(\n getLevels({\n levels,\n items,\n getItemKey,\n getItemSubMenu,\n }),\n );\n return () => clearTimers();\n }, [items]);\n\n const firstLevelRef = useForkRef([levelsRefs[0], ref]);\n\n useEffect(() => {\n setLevels(defaultLevels);\n }, [position]);\n\n useEffect(() => {\n setLevels(isOpen ? defaultLevels : []);\n }, [isOpen]);\n\n useSize(levelsRefs, setComponentSize, isMobile);\n\n return (\n <TransitionGroup component={Fragment}>\n {levels.map((level, index) => {\n const key = `${index}-${level.parent ? getItemKey(level.parent) : ''}`;\n\n const last = index !== levels.length - 1;\n\n if (isMobile && last) {\n return <Fragment key={index} />;\n }\n\n return (\n <Transition\n key={key}\n timeout={animateTimeout}\n nodeRef={levelsRefs[index]}\n >\n {(animate) => (\n <ContextMenuLevel\n {...otherProps}\n {...level}\n key={`${index}-${level.parent ? getItemKey(level.parent) : ''}`}\n isMobile={isMobile}\n isOpen={isOpen}\n style={{\n ...style,\n ...{\n zIndex:\n typeof style?.zIndex === 'number'\n ? style.zIndex + 1\n : undefined,\n },\n }}\n levelDepth={index}\n getItemLabel={getItemLabel}\n addLevel={addLevel}\n deleteLevel={deleteLevel}\n onSetDirection={\n index > 0 ? setSubMenuDirection : props.onSetDirection\n }\n hoveredParenLevel={hoveredParenLevel}\n setHoveredParenLevel={setHoveredParenLevel}\n getItemSubMenu={getItemSubMenu}\n getItemKey={getItemKey}\n ref={index === 0 ? firstLevelRef : levelsRefs[index]}\n spareDirection={index === 0 ? spareDirection : 'rightStartUp'}\n parent={isMobile ? level.parent : undefined}\n animate={animate}\n />\n )}\n </Transition>\n );\n })}\n </TransitionGroup>\n );\n};\n\nexport const ContextMenuLevels = React.forwardRef(\n ContextMenuLevelsRender,\n) as ContextMenuLevelsComponent;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["items","anchorRef","position","direction","possibleDirections","offset","getKey","getSubItems","subMenuDirection","getLabel","onClickOutside","spareDirection","style"];function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React,{createRef,forwardRef,useEffect,useMemo,useState}from"react";import{useClickOutside}from"../../hooks/useClickOutside/useClickOutside";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{directions}from"../Popover/Popover";import{clearTimers,ContextMenuLevel}from"./ContextMenuLevel/ContextMenuLevel";import{contextMenuPropDefaultSubMenuDirection,contextMenuPropSubMenuDirections}from"./helpers";export var ContextMenu=forwardRef(function(a,b){var c=a.items,d=a.anchorRef,e=a.position,f=a.direction,g=a.possibleDirections,h=void 0===g?directions:g,i=a.offset,j=a.getKey,k=a.getSubItems,l=a.subMenuDirection,m=void 0===l?contextMenuPropDefaultSubMenuDirection:l,n=a.getLabel,o=a.onClickOutside,p=a.spareDirection,q=a.style,r=_objectWithoutProperties(a,_excluded),s=j||n,t=useState([{items:c,anchorRef:d,position:e,direction:f,possibleDirections:h,offset:i}]),u=_slicedToArray(t,2),v=u[0],w=u[1],x=useState(m),y=_slicedToArray(x,2),z=y[0],A=y[1],B=useState(-1),C=_slicedToArray(B,2),D=C[0],E=C[1],F=function(a,b,c,d){var e,f=Array.from(v);f[a]&&1<f.length-a&&(e=f[a].direction,e&&A(e)),f[a-1].activeItem=d,f.splice(a),f.push({items:b,anchorRef:c,direction:e||z,possibleDirections:contextMenuPropSubMenuDirections}),w(f)},G=function(a){var b=Array.from(v);b.splice(a),b[a-1]=_objectSpread(_objectSpread({},b[a-1]),{},{activeItem:void 0}),w(b)},H=useMemo(function constructItemRefs(){for(var a=[],b=0;b<v.length;b++)a[b]=createRef();return a},[v]),I=useForkRef([H[0],b]);return useClickOutside({isActive:!!o,ignoreClicksInsideRefs:[].concat(_toConsumableArray(H),[d||{current:null}]),handler:
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["items","anchorRef","position","direction","possibleDirections","offset","getKey","getSubItems","subMenuDirection","getLabel","onClickOutside","spareDirection","style"];function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React,{createRef,forwardRef,useEffect,useMemo,useState}from"react";import{useClickOutside}from"../../hooks/useClickOutside/useClickOutside";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{directions}from"../Popover/Popover";import{clearTimers,ContextMenuLevel}from"./ContextMenuLevel/ContextMenuLevel";import{contextMenuPropDefaultSubMenuDirection,contextMenuPropSubMenuDirections}from"./helpers";export var ContextMenu=forwardRef(function(a,b){var c=a.items,d=a.anchorRef,e=a.position,f=a.direction,g=a.possibleDirections,h=void 0===g?directions:g,i=a.offset,j=a.getKey,k=a.getSubItems,l=a.subMenuDirection,m=void 0===l?contextMenuPropDefaultSubMenuDirection:l,n=a.getLabel,o=a.onClickOutside,p=a.spareDirection,q=a.style,r=_objectWithoutProperties(a,_excluded),s=j||n,t=useState([{items:c,anchorRef:d,position:e,direction:f,possibleDirections:h,offset:i}]),u=_slicedToArray(t,2),v=u[0],w=u[1],x=useState(m),y=_slicedToArray(x,2),z=y[0],A=y[1],B=useState(-1),C=_slicedToArray(B,2),D=C[0],E=C[1],F=function(a,b,c,d){var e,f=Array.from(v);f[a]&&1<f.length-a&&(e=f[a].direction,e&&A(e)),f[a-1].activeItem=d,f.splice(a),f.push({items:b,anchorRef:c,direction:e||z,possibleDirections:contextMenuPropSubMenuDirections}),w(f)},G=function(a){var b=Array.from(v);b.splice(a),b[a-1]=_objectSpread(_objectSpread({},b[a-1]),{},{activeItem:void 0}),w(b)},H=useMemo(function constructItemRefs(){for(var a=[],b=0;b<v.length;b++)a[b]=createRef();return a},[v]),I=useForkRef([H[0],b]);return useClickOutside({isActive:!!o,ignoreClicksInsideRefs:[].concat(_toConsumableArray(H),[d||{current:null}]),handler:o}),useEffect(function(){function b(a,c){var d,e=_createForOfIteratorHelper(a);try{for(e.s();!(d=e.n()).done;){var f=d.value;if(s(f)===c)return f;var g="function"==typeof k&&k(f);if(g){var h=b(g,c);if(h)return h}}}catch(a){e.e(a)}finally{e.f()}}clearTimers();var c=v.map(function(c){return _objectSpread(_objectSpread({},c),{},{items:c.items.map(function(c){return b(a.items,s(c))})})});return w(c),function(){return clearTimers()}},[a.items,k,s]),React.createElement(React.Fragment,null,v.map(function(b,c){var d=0<c?A:a.onSetDirection;return React.createElement(ContextMenuLevel,Object.assign({},r,{style:_objectSpread(_objectSpread({},q),"number"==typeof(null===q||void 0===q?void 0:q.zIndex)&&{zIndex:q.zIndex+c}),offset:b.offset,key:c,items:b.items,level:c,addLevel:F,deleteLevel:G,anchorRef:b.anchorRef,position:b.position,activeItem:b.activeItem,direction:b.direction,possibleDirections:b.possibleDirections,onSetDirection:d,hoveredParenLevel:D,setHoveredParenLevel:E,getSubItems:k,getLabel:n,ref:0===c?I:H[c],spareDirection:0===c?p:"rightStartUp"}))}))});
|
|
2
2
|
//# sourceMappingURL=ContextMenuDeprecated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextMenuDeprecated.js","names":["React","createRef","forwardRef","useEffect","useMemo","useState","useClickOutside","useForkRef","directions","clearTimers","ContextMenuLevel","contextMenuPropDefaultSubMenuDirection","contextMenuPropSubMenuDirections","ContextMenu","props","ref","items","anchorRef","position","direction","possibleDirections","offset","getKeyProp","getKey","getSubItems","subMenuDirection","propSubMenuDirection","getLabel","onClickOutside","spareDirection","style","otherProps","levels","setLevels","setSubMenuDirection","hoveredParenLevel","setHoveredParenLevel","addLevel","level","activeItem","oldDirection","newLevels","Array","from","length","splice","push","deleteLevel","levelsRefs","constructItemRefs","refs","i","firstLevelRef","isActive","ignoreClicksInsideRefs","current","handler","e","find","key","item","subItems","subItem","map","index","onSetDirection","zIndex"],"sources":["../../../../../src/components/ContextMenuDeprecated/ContextMenuDeprecated.tsx"],"sourcesContent":["import React, {\n createRef,\n forwardRef,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '../../hooks/useClickOutside/useClickOutside';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { Direction, directions } from '../Popover/Popover';\nimport {\n clearTimers,\n ContextMenuLevel,\n} from './ContextMenuLevel/ContextMenuLevel';\nimport {\n AddLevel,\n ContextMenuComponent,\n contextMenuPropDefaultSubMenuDirection,\n contextMenuPropSubMenuDirections,\n DeleteLevel,\n Level,\n} from './helpers';\n\nexport const ContextMenu: ContextMenuComponent = forwardRef((props, ref) => {\n const {\n items,\n anchorRef,\n position,\n direction,\n possibleDirections = directions,\n offset,\n getKey: getKeyProp,\n getSubItems,\n subMenuDirection:\n propSubMenuDirection = contextMenuPropDefaultSubMenuDirection,\n getLabel,\n onClickOutside,\n spareDirection,\n style,\n ...otherProps\n } = props;\n\n type Item = typeof items[number];\n\n const getKey = getKeyProp || getLabel;\n\n const defaultLevels = [\n {\n items,\n anchorRef,\n position,\n direction,\n possibleDirections,\n offset,\n },\n ] as Level<Item>[];\n\n const [levels, setLevels] = useState<Level<Item>[]>(defaultLevels);\n const [subMenuDirection, setSubMenuDirection] =\n useState<Direction>(propSubMenuDirection);\n const [hoveredParenLevel, setHoveredParenLevel] = useState<number>(-1);\n\n const addLevel: AddLevel<Item> = (level, items, anchorRef, activeItem) => {\n const newLevels = Array.from(levels);\n\n let oldDirection: Direction | undefined;\n\n if (newLevels[level] && newLevels.length - level > 1) {\n oldDirection = newLevels[level].direction;\n\n if (oldDirection) {\n setSubMenuDirection(oldDirection);\n }\n }\n\n newLevels[level - 1].activeItem = activeItem;\n newLevels.splice(level);\n newLevels.push({\n items,\n anchorRef,\n direction: oldDirection || subMenuDirection,\n possibleDirections: contextMenuPropSubMenuDirections,\n });\n setLevels(newLevels);\n };\n\n const deleteLevel: DeleteLevel = (level) => {\n const newLevels = Array.from(levels);\n newLevels.splice(level);\n newLevels[level - 1] = { ...newLevels[level - 1], activeItem: undefined };\n setLevels(newLevels);\n };\n\n const constructItemRefs: () => React.RefObject<HTMLDivElement>[] = () => {\n const refs: React.RefObject<HTMLDivElement>[] = [];\n\n for (let i = 0; i < levels.length; i++) {\n refs[i] = createRef<HTMLDivElement>();\n }\n\n return refs;\n };\n\n const levelsRefs = useMemo(constructItemRefs, [levels]);\n\n const firstLevelRef = useForkRef([levelsRefs[0], ref]);\n\n useClickOutside({\n isActive: !!onClickOutside,\n ignoreClicksInsideRefs: [...levelsRefs, anchorRef || { current: null }],\n handler: (e) => onClickOutside && onClickOutside(e),\n });\n\n useEffect(() => {\n // из-за отложенного рендера закрытия подпунктов меню\n // может возникнуть ситуация когда таймер еще не успел отработать и вызвать рендер на закрытие меню,\n // и если в этот изменяется props.items в компоненте, то сразу после рендера который вызван сменой props.items\n // вызовется отложенный что приведет к неверному рендеру, который должен был вызваться до изменения props.items\n // По этому останавливаем отложенный перерендр закрытия, чтобы избежать ошибки\n clearTimers();\n // пересобираем levels при изменении пропсов\n function find(items: Item[], key: string | number): Item | undefined {\n for (const item of items) {\n if (getKey(item) === key) {\n return item;\n }\n const subItems = typeof getSubItems === 'function' && getSubItems(item);\n if (subItems) {\n const subItem = find(subItems, key);\n if (subItem) {\n return subItem;\n }\n }\n }\n return undefined;\n }\n\n const newLevels = levels.map((level) => {\n return {\n ...level,\n items: level.items.map((item) => find(props.items, getKey(item))),\n };\n });\n\n // привел к типа м так как TS не понимает что по ключу всегда найдется нужный нам item\n setLevels(newLevels as Level<Item>[]);\n return () => clearTimers();\n }, [props.items, getSubItems, getKey]);\n\n return (\n <>\n {levels.map((level, index) => {\n const onSetDirection =\n index > 0 ? setSubMenuDirection : props.onSetDirection;\n\n return (\n <ContextMenuLevel\n {...otherProps}\n style={{\n ...style,\n ...(typeof style?.zIndex === 'number' && {\n zIndex: style.zIndex + index,\n }),\n }}\n offset={level.offset}\n key={index}\n items={level.items}\n level={index}\n addLevel={addLevel}\n deleteLevel={deleteLevel}\n anchorRef={level.anchorRef}\n position={level.position}\n activeItem={level.activeItem}\n direction={level.direction}\n possibleDirections={level.possibleDirections}\n onSetDirection={onSetDirection}\n hoveredParenLevel={hoveredParenLevel}\n setHoveredParenLevel={setHoveredParenLevel}\n getSubItems={getSubItems}\n getLabel={getLabel}\n ref={index === 0 ? firstLevelRef : levelsRefs[index]}\n spareDirection={index === 0 ? spareDirection : 'rightStartUp'}\n />\n );\n })}\n </>\n );\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContextMenuDeprecated.js","names":["React","createRef","forwardRef","useEffect","useMemo","useState","useClickOutside","useForkRef","directions","clearTimers","ContextMenuLevel","contextMenuPropDefaultSubMenuDirection","contextMenuPropSubMenuDirections","ContextMenu","props","ref","items","anchorRef","position","direction","possibleDirections","offset","getKeyProp","getKey","getSubItems","subMenuDirection","propSubMenuDirection","getLabel","onClickOutside","spareDirection","style","otherProps","levels","setLevels","setSubMenuDirection","hoveredParenLevel","setHoveredParenLevel","addLevel","level","activeItem","oldDirection","newLevels","Array","from","length","splice","push","deleteLevel","levelsRefs","constructItemRefs","refs","i","firstLevelRef","isActive","ignoreClicksInsideRefs","current","handler","find","key","item","subItems","subItem","map","index","onSetDirection","zIndex"],"sources":["../../../../../src/components/ContextMenuDeprecated/ContextMenuDeprecated.tsx"],"sourcesContent":["import React, {\n createRef,\n forwardRef,\n useEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '../../hooks/useClickOutside/useClickOutside';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { Direction, directions } from '../Popover/Popover';\nimport {\n clearTimers,\n ContextMenuLevel,\n} from './ContextMenuLevel/ContextMenuLevel';\nimport {\n AddLevel,\n ContextMenuComponent,\n contextMenuPropDefaultSubMenuDirection,\n contextMenuPropSubMenuDirections,\n DeleteLevel,\n Level,\n} from './helpers';\n\nexport const ContextMenu: ContextMenuComponent = forwardRef((props, ref) => {\n const {\n items,\n anchorRef,\n position,\n direction,\n possibleDirections = directions,\n offset,\n getKey: getKeyProp,\n getSubItems,\n subMenuDirection:\n propSubMenuDirection = contextMenuPropDefaultSubMenuDirection,\n getLabel,\n onClickOutside,\n spareDirection,\n style,\n ...otherProps\n } = props;\n\n type Item = typeof items[number];\n\n const getKey = getKeyProp || getLabel;\n\n const defaultLevels = [\n {\n items,\n anchorRef,\n position,\n direction,\n possibleDirections,\n offset,\n },\n ] as Level<Item>[];\n\n const [levels, setLevels] = useState<Level<Item>[]>(defaultLevels);\n const [subMenuDirection, setSubMenuDirection] =\n useState<Direction>(propSubMenuDirection);\n const [hoveredParenLevel, setHoveredParenLevel] = useState<number>(-1);\n\n const addLevel: AddLevel<Item> = (level, items, anchorRef, activeItem) => {\n const newLevels = Array.from(levels);\n\n let oldDirection: Direction | undefined;\n\n if (newLevels[level] && newLevels.length - level > 1) {\n oldDirection = newLevels[level].direction;\n\n if (oldDirection) {\n setSubMenuDirection(oldDirection);\n }\n }\n\n newLevels[level - 1].activeItem = activeItem;\n newLevels.splice(level);\n newLevels.push({\n items,\n anchorRef,\n direction: oldDirection || subMenuDirection,\n possibleDirections: contextMenuPropSubMenuDirections,\n });\n setLevels(newLevels);\n };\n\n const deleteLevel: DeleteLevel = (level) => {\n const newLevels = Array.from(levels);\n newLevels.splice(level);\n newLevels[level - 1] = { ...newLevels[level - 1], activeItem: undefined };\n setLevels(newLevels);\n };\n\n const constructItemRefs: () => React.RefObject<HTMLDivElement>[] = () => {\n const refs: React.RefObject<HTMLDivElement>[] = [];\n\n for (let i = 0; i < levels.length; i++) {\n refs[i] = createRef<HTMLDivElement>();\n }\n\n return refs;\n };\n\n const levelsRefs = useMemo(constructItemRefs, [levels]);\n\n const firstLevelRef = useForkRef([levelsRefs[0], ref]);\n\n useClickOutside({\n isActive: !!onClickOutside,\n ignoreClicksInsideRefs: [...levelsRefs, anchorRef || { current: null }],\n handler: onClickOutside,\n });\n\n useEffect(() => {\n // из-за отложенного рендера закрытия подпунктов меню\n // может возникнуть ситуация когда таймер еще не успел отработать и вызвать рендер на закрытие меню,\n // и если в этот изменяется props.items в компоненте, то сразу после рендера который вызван сменой props.items\n // вызовется отложенный что приведет к неверному рендеру, который должен был вызваться до изменения props.items\n // По этому останавливаем отложенный перерендр закрытия, чтобы избежать ошибки\n clearTimers();\n // пересобираем levels при изменении пропсов\n function find(items: Item[], key: string | number): Item | undefined {\n for (const item of items) {\n if (getKey(item) === key) {\n return item;\n }\n const subItems = typeof getSubItems === 'function' && getSubItems(item);\n if (subItems) {\n const subItem = find(subItems, key);\n if (subItem) {\n return subItem;\n }\n }\n }\n return undefined;\n }\n\n const newLevels = levels.map((level) => {\n return {\n ...level,\n items: level.items.map((item) => find(props.items, getKey(item))),\n };\n });\n\n // привел к типа м так как TS не понимает что по ключу всегда найдется нужный нам item\n setLevels(newLevels as Level<Item>[]);\n return () => clearTimers();\n }, [props.items, getSubItems, getKey]);\n\n return (\n <>\n {levels.map((level, index) => {\n const onSetDirection =\n index > 0 ? setSubMenuDirection : props.onSetDirection;\n\n return (\n <ContextMenuLevel\n {...otherProps}\n style={{\n ...style,\n ...(typeof style?.zIndex === 'number' && {\n zIndex: style.zIndex + index,\n }),\n }}\n offset={level.offset}\n key={index}\n items={level.items}\n level={index}\n addLevel={addLevel}\n deleteLevel={deleteLevel}\n anchorRef={level.anchorRef}\n position={level.position}\n activeItem={level.activeItem}\n direction={level.direction}\n possibleDirections={level.possibleDirections}\n onSetDirection={onSetDirection}\n hoveredParenLevel={hoveredParenLevel}\n setHoveredParenLevel={setHoveredParenLevel}\n getSubItems={getSubItems}\n getLabel={getLabel}\n ref={index === 0 ? firstLevelRef : levelsRefs[index]}\n spareDirection={index === 0 ? spareDirection : 'rightStartUp'}\n />\n );\n })}\n </>\n );\n});\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.canary--Spoiler{width:100%}.canary--Spoiler-
|
|
1
|
+
.canary--Spoiler{width:100%}.canary--Spoiler-Content{overflow:hidden;position:relative;width:var(--spoiler-content-width,100%)}.canary--Spoiler-Content_mode_blur{max-height:var(--spoiler-content-max-height,auto)}.canary--Spoiler-Content_mode_blur:after{background:linear-gradient(to bottom,transparent 0,var(--color-bg-default) 100%);bottom:0;content:"";height:min(100%,var(--space-6xl));left:0;pointer-events:none;position:absolute;right:0}.canary--Spoiler-Content_mode_lineClamp{-webkit-line-clamp:var(--spoiler-content-line-clamp,none);-webkit-box-orient:vertical;display:-webkit-box}.canary--Spoiler-Content_hidden{left:-300vw;pointer-events:none;position:fixed;top:-300vh;visibility:hidden}.canary--Spoiler-ButtonWrapper{display:flex}.canary--Spoiler-ButtonWrapper_align_left{justify-content:left}.canary--Spoiler-ButtonWrapper_align_center{justify-content:center}.canary--Spoiler-ButtonWrapper_align_right{justify-content:right}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["size","lessIcon","lessLabel","moreIcon","moreLabel","className","open","as"];import"./SpoilerButton.css";import{AnimateIconSwitcher}from"@consta/icons/AnimateIconSwitcher";import React from"react";import{IconArrowDown}from"../../../icons/IconArrowDown";import{cnCanary}from"../../../utils/bem";import{forwardRefWithAs}from"../../../utils/types/PropsWithAsAttributes";import{Text}from"../../Text";import{defaultSpoilerPropSize}from"../types";export var cnSpoilerButton=cnCanary("SpoilerButton");var spoilerIconSizeMap={l:"m",m:"s",s:"s",xs:"xs"};export var SpoilerButton=forwardRefWithAs(function(a,b){var c=a.size,d=void 0===c?defaultSpoilerPropSize:c,e=a.lessIcon,f=a.lessLabel,g=void 0===f?"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043C\u0435\u043D\u044C\u0448\u0435":f,h=a.moreIcon,i=void 0===h?IconArrowDown:h,j=a.moreLabel,k=void 0===j?"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435":j,l=a.className,m=a.open,n=a.as,o=void 0===n?"div":n,p=_objectWithoutProperties(a,_excluded);return React.createElement(o,Object.assign({
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["size","lessIcon","lessLabel","moreIcon","moreLabel","className","open","as"];import"./SpoilerButton.css";import{AnimateIconSwitcher}from"@consta/icons/AnimateIconSwitcher";import React from"react";import{IconArrowDown}from"../../../icons/IconArrowDown";import{cnCanary}from"../../../utils/bem";import{forwardRefWithAs}from"../../../utils/types/PropsWithAsAttributes";import{Text}from"../../Text";import{defaultSpoilerPropSize}from"../types";export var cnSpoilerButton=cnCanary("SpoilerButton");var spoilerIconSizeMap={l:"m",m:"s",s:"s",xs:"xs"};export var SpoilerButton=forwardRefWithAs(function(a,b){var c=a.size,d=void 0===c?defaultSpoilerPropSize:c,e=a.lessIcon,f=a.lessLabel,g=void 0===f?"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043C\u0435\u043D\u044C\u0448\u0435":f,h=a.moreIcon,i=void 0===h?IconArrowDown:h,j=a.moreLabel,k=void 0===j?"\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0431\u043E\u043B\u044C\u0448\u0435":j,l=a.className,m=a.open,n=a.as,o=void 0===n?"div":n,p=_objectWithoutProperties(a,_excluded);return React.createElement(o,Object.assign({},p,{className:cnSpoilerButton({size:d},[l]),ref:b}),React.createElement(Text,{className:cnSpoilerButton("Label"),size:d,as:"span"},m?g:k),React.createElement(AnimateIconSwitcher,{className:cnSpoilerButton("Icon"),startIcon:i,endIcon:e,active:m,endDirection:e?void 0:180,size:spoilerIconSizeMap[d]}))});
|
|
2
2
|
//# sourceMappingURL=SpoilerButton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpoilerButton.js","names":["AnimateIconSwitcher","React","IconArrowDown","cnCanary","forwardRefWithAs","Text","defaultSpoilerPropSize","cnSpoilerButton","spoilerIconSizeMap","l","m","s","xs","SpoilerButton","props","ref","size","lessIcon","lessLabel","moreIcon","moreLabel","className","open","as","otherProps"],"sources":["../../../../../../src/components/SpoilerCanary/SpoilerButton/SpoilerButton.tsx"],"sourcesContent":["import './SpoilerButton.css';\n\nimport { AnimateIconSwitcher } from '@consta/icons/AnimateIconSwitcher';\nimport React from 'react';\n\nimport { IconPropSize } from '##/icons/Icon';\nimport { IconArrowDown } from '##/icons/IconArrowDown';\nimport { cnCanary } from '##/utils/bem';\nimport { forwardRefWithAs } from '##/utils/types/PropsWithAsAttributes';\n\nimport { Text } from '../../Text';\nimport {\n defaultSpoilerPropSize,\n SpoilerButtonProps,\n SpoilerPropSize,\n} from '../types';\n\nexport const cnSpoilerButton = cnCanary('SpoilerButton');\n\nconst spoilerIconSizeMap: Record<SpoilerPropSize, IconPropSize> = {\n l: 'm',\n m: 's',\n s: 's',\n xs: 'xs',\n};\n\nexport const SpoilerButton = forwardRefWithAs<SpoilerButtonProps>(\n (props, ref) => {\n const {\n size = defaultSpoilerPropSize,\n lessIcon,\n lessLabel = 'Показать меньше',\n moreIcon = IconArrowDown,\n moreLabel = 'Показать больше',\n className,\n open,\n as = 'div',\n ...otherProps\n } = props;\n\n const Tag = as as string;\n\n return (\n <Tag\n
|
|
1
|
+
{"version":3,"file":"SpoilerButton.js","names":["AnimateIconSwitcher","React","IconArrowDown","cnCanary","forwardRefWithAs","Text","defaultSpoilerPropSize","cnSpoilerButton","spoilerIconSizeMap","l","m","s","xs","SpoilerButton","props","ref","size","lessIcon","lessLabel","moreIcon","moreLabel","className","open","as","otherProps"],"sources":["../../../../../../src/components/SpoilerCanary/SpoilerButton/SpoilerButton.tsx"],"sourcesContent":["import './SpoilerButton.css';\n\nimport { AnimateIconSwitcher } from '@consta/icons/AnimateIconSwitcher';\nimport React from 'react';\n\nimport { IconPropSize } from '##/icons/Icon';\nimport { IconArrowDown } from '##/icons/IconArrowDown';\nimport { cnCanary } from '##/utils/bem';\nimport { forwardRefWithAs } from '##/utils/types/PropsWithAsAttributes';\n\nimport { Text } from '../../Text';\nimport {\n defaultSpoilerPropSize,\n SpoilerButtonProps,\n SpoilerPropSize,\n} from '../types';\n\nexport const cnSpoilerButton = cnCanary('SpoilerButton');\n\nconst spoilerIconSizeMap: Record<SpoilerPropSize, IconPropSize> = {\n l: 'm',\n m: 's',\n s: 's',\n xs: 'xs',\n};\n\nexport const SpoilerButton = forwardRefWithAs<SpoilerButtonProps>(\n (props, ref) => {\n const {\n size = defaultSpoilerPropSize,\n lessIcon,\n lessLabel = 'Показать меньше',\n moreIcon = IconArrowDown,\n moreLabel = 'Показать больше',\n className,\n open,\n as = 'div',\n ...otherProps\n } = props;\n\n const Tag = as as string;\n\n return (\n <Tag\n {...otherProps}\n className={cnSpoilerButton({ size }, [className])}\n ref={ref}\n >\n <Text className={cnSpoilerButton('Label')} size={size} as=\"span\">\n {open ? lessLabel : moreLabel}\n </Text>\n <AnimateIconSwitcher\n className={cnSpoilerButton('Icon')}\n startIcon={moreIcon}\n endIcon={lessIcon}\n active={open}\n endDirection={lessIcon ? undefined : 180}\n size={spoilerIconSizeMap[size]}\n />\n </Tag>\n );\n },\n);\n"],"mappings":"kLAAA,4BAEA,OAASA,mBAAT,KAAoC,mCAApC,CACA,MAAOC,MAAP,KAAkB,OAAlB,CAGA,OAASC,aAAT,oCACA,OAASC,QAAT,0BACA,OAASC,gBAAT,kDAEA,OAASC,IAAT,kBACA,OACEC,sBADF,gBAMA,MAAO,IAAMC,gBAAe,CAAGJ,QAAQ,CAAC,eAAD,CAAhC,CAEP,GAAMK,mBAAyD,CAAG,CAChEC,CAAC,CAAE,GAD6D,CAEhEC,CAAC,CAAE,GAF6D,CAGhEC,CAAC,CAAE,GAH6D,CAIhEC,EAAE,CAAE,IAJ4D,CAAlE,CAOA,MAAO,IAAMC,cAAa,CAAGT,gBAAgB,CAC3C,SAACU,CAAD,CAAQC,CAAR,CAAgB,OAWVD,CAXU,CAEZE,IAFY,CAEZA,CAFY,YAELV,sBAFK,GAGZW,CAHY,CAWVH,CAXU,CAGZG,QAHY,GAWVH,CAXU,CAIZI,SAJY,CAIZA,CAJY,YAIA,uFAJA,KAWVJ,CAXU,CAKZK,QALY,CAKZA,CALY,YAKDjB,aALC,KAWVY,CAXU,CAMZM,SANY,CAMZA,CANY,YAMA,uFANA,GAOZC,CAPY,CAWVP,CAXU,CAOZO,SAPY,CAQZC,CARY,CAWVR,CAXU,CAQZQ,IARY,GAWVR,CAXU,CASZS,EATY,CASZA,CATY,YASP,KATO,GAUTC,CAVS,0BAWVV,CAXU,YAed,MACE,qBAHUS,CAGV,kBACMC,CADN,EAEE,SAAS,CAAEjB,eAAe,CAAC,CAAES,IAAI,CAAJA,CAAF,CAAD,CAAW,CAACK,CAAD,CAAX,CAF5B,CAGE,GAAG,CAAEN,CAHP,GAKE,oBAAC,IAAD,EAAM,SAAS,CAAER,eAAe,CAAC,OAAD,CAAhC,CAA2C,IAAI,CAAES,CAAjD,CAAuD,EAAE,CAAC,MAA1D,EACGM,CAAI,CAAGJ,CAAH,CAAeE,CADtB,CALF,CAQE,oBAAC,mBAAD,EACE,SAAS,CAAEb,eAAe,CAAC,MAAD,CAD5B,CAEE,SAAS,CAAEY,CAFb,CAGE,OAAO,CAAEF,CAHX,CAIE,MAAM,CAAEK,CAJV,CAKE,YAAY,CAAEL,CAAQ,QAAe,GALvC,CAME,IAAI,CAAET,kBAAkB,CAACQ,CAAD,CAN1B,EARF,CAkBH,CAnC0C,CAAtC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["preview","maxHeight","content","size","lessIcon","lessLabel","children","moreIcon","moreLabel","className","lineClamp","buttonIndent","buttonAlign","style"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Spoiler.css";import React,{forwardRef}from"react";import{Text}from"../Text";import{getElementSize}from"../../hooks/useComponentSize";import{useFlag}from"../../hooks/useFlag";import{useForkRef}from"../../hooks/useForkRef";import{useRefs}from"../../hooks/useRefs";import{useResizeObserved}from"../../hooks/useResizeObserved";import{cnMixSpace}from"../../mixs/MixSpace";import{cnCanary}from"../../utils/bem";import{SpoilerButton}from"./SpoilerButton";import{defaultSpoilerPropButtonAlign,defaultSpoilerPropSize}from"./types";export var cnSpoiler=cnCanary("Spoiler");var spoilerOffsetMap={xs:"xs",s:"s",m:"m",l:"m"},getContent=function(a){var b=a.children,c=a.content,d=a.preview,e=a.lineClamp;return e?["lineClamp",b,b]:b?["blur",b,b]:["toggle",d,c]};export var Spoiler=forwardRef(function(a,b){var c=a.preview,d=a.maxHeight,e=a.content,f=a.size,g=void 0===f?defaultSpoilerPropSize:f,h=a.lessIcon,i=a.lessLabel,j=a.children,k=a.moreIcon,l=a.moreLabel,m=a.className,n=a.lineClamp,o=a.buttonIndent,p=a.buttonAlign,q=void 0===p?defaultSpoilerPropButtonAlign:p,r=a.style,s=_objectWithoutProperties(a,_excluded),t=useFlag(),u=_slicedToArray(t,2),v=u[0],w=u[1],x=getContent(a,v),y=_slicedToArray(x,3),z=y[0],A=y[1],B=y[2],C=useRefs(3),D=useResizeObserved(C,getElementSize),E=D[1].height>D[0].height;return React.createElement("div",Object.assign({},s,{className:cnSpoiler({size:g},[m]),ref:useForkRef([b,C[2]]),style:_objectSpread(_objectSpread(_objectSpread(_objectSpread({},r),"number"==typeof d&&_defineProperty({},"--spoiler-content-max-height","".concat(d,"px"))),"number"==typeof n&&_defineProperty({},"--spoiler-content-line-clamp",n)),"number"==typeof D[2].width&&_defineProperty({},"--spoiler-content-width","".concat(D[2].width,"px")))}),React.createElement(Text,{ref:C[0],className:cnSpoiler("Content",{mode:z,hidden:v||!E}),size:g},A),React.createElement(Text,{ref:C[1],className:cnSpoiler("Content",{hidden:!v&&E}),size:g},B),E&&React.createElement("div",{className:cnSpoiler("ButtonWrapper",{align:q},[cnMixSpace({mT:"undefined"==typeof o?spoilerOffsetMap[g]:o})])},React.createElement(SpoilerButton,{className:cnSpoiler("Button"),lessIcon:h,lessLabel:i,moreIcon:k,moreLabel:l,onClick:w.toggle,open:v,size:g})))});
|
|
2
|
+
//# sourceMappingURL=SpoilerCanary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpoilerCanary.js","names":["React","forwardRef","Text","getElementSize","useFlag","useForkRef","useRefs","useResizeObserved","cnMixSpace","cnCanary","SpoilerButton","defaultSpoilerPropButtonAlign","defaultSpoilerPropSize","cnSpoiler","spoilerOffsetMap","xs","s","m","l","getContent","children","content","preview","lineClamp","Spoiler","props","ref","maxHeight","size","lessIcon","lessLabel","moreIcon","moreLabel","className","buttonIndent","buttonAlign","style","otherProps","isOpen","setIsOpen","mode","previewContent","fullContent","refs","sizes","visibleMoreButton","height","width","hidden","align","mT","toggle"],"sources":["../../../../../src/components/SpoilerCanary/SpoilerCanary.tsx"],"sourcesContent":["import './Spoiler.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { Text } from '##/components/Text';\nimport { getElementSize } from '##/hooks/useComponentSize';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { useRefs } from '##/hooks/useRefs';\nimport { useResizeObserved } from '##/hooks/useResizeObserved';\nimport { cnMixSpace, Space } from '##/mixs/MixSpace';\nimport { cnCanary } from '##/utils/bem';\n\nimport { SpoilerButton } from './SpoilerButton';\nimport {\n defaultSpoilerPropButtonAlign,\n defaultSpoilerPropSize,\n SpoilerMode,\n SpoilerProps,\n SpoilerPropSize,\n} from './types';\n\nexport const cnSpoiler = cnCanary('Spoiler');\n\nconst spoilerOffsetMap: Record<SpoilerPropSize, Space> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n\nconst getContent = (\n { children, content, preview, lineClamp }: SpoilerProps,\n isOpen: boolean,\n): [SpoilerMode, React.ReactNode, React.ReactNode] => {\n if (lineClamp) {\n return ['lineClamp', children, children];\n }\n if (children) {\n return ['blur', children, children];\n }\n return ['toggle', preview, content];\n};\n\nexport const Spoiler = forwardRef<HTMLDivElement, SpoilerProps>(\n (props, ref) => {\n const {\n preview,\n maxHeight,\n content,\n size = defaultSpoilerPropSize,\n lessIcon,\n lessLabel,\n children,\n moreIcon,\n moreLabel,\n className,\n lineClamp,\n buttonIndent,\n buttonAlign = defaultSpoilerPropButtonAlign,\n style,\n ...otherProps\n } = props;\n\n const [isOpen, setIsOpen] = useFlag();\n const [mode, previewContent, fullContent] = getContent(props, isOpen);\n const refs = useRefs<HTMLDivElement>(3);\n const sizes = useResizeObserved(refs, getElementSize);\n const visibleMoreButton = sizes[1].height > sizes[0].height;\n\n return (\n <div\n {...otherProps}\n className={cnSpoiler({ size }, [className])}\n ref={useForkRef([ref, refs[2]])}\n style={{\n ...style,\n ...(typeof maxHeight === 'number' && {\n ['--spoiler-content-max-height' as string]: `${maxHeight}px`,\n }),\n ...(typeof lineClamp === 'number' && {\n ['--spoiler-content-line-clamp' as string]: lineClamp,\n }),\n ...(typeof sizes[2].width === 'number' && {\n ['--spoiler-content-width' as string]: `${sizes[2].width}px`,\n }),\n }}\n >\n <Text\n ref={refs[0]}\n className={cnSpoiler('Content', {\n mode,\n hidden: isOpen || !visibleMoreButton,\n })}\n size={size}\n >\n {previewContent}\n </Text>\n <Text\n ref={refs[1]}\n className={cnSpoiler('Content', {\n hidden: !isOpen && visibleMoreButton,\n })}\n size={size}\n >\n {fullContent}\n </Text>\n {visibleMoreButton && (\n <div\n className={cnSpoiler('ButtonWrapper', { align: buttonAlign }, [\n cnMixSpace({\n mT:\n typeof buttonIndent === 'undefined'\n ? spoilerOffsetMap[size]\n : buttonIndent,\n }),\n ])}\n >\n <SpoilerButton\n className={cnSpoiler('Button')}\n lessIcon={lessIcon}\n lessLabel={lessLabel}\n moreIcon={moreIcon}\n moreLabel={moreLabel}\n onClick={setIsOpen.toggle}\n open={isOpen}\n size={size}\n />\n </div>\n )}\n </div>\n );\n },\n);\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export*from"./
|
|
1
|
+
export*from"./SpoilerCanary";export*from"./SpoilerButton";export*from"./types";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/SpoilerCanary/index.ts"],"sourcesContent":["export * from './
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/SpoilerCanary/index.ts"],"sourcesContent":["export * from './SpoilerCanary';\nexport * from './SpoilerButton';\nexport * from './types';\n"],"mappings":"AAAA,6BACA,6BACA"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { IconComponent } from '@consta/icons/Icon';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import { Space } from "../../mixs/MixSpace";
|
|
3
4
|
import { PropsWithHTMLAttributes } from "../../utils/types/PropsWithHTMLAttributes";
|
|
4
|
-
export declare const spolierPropSize: readonly ["
|
|
5
|
+
export declare const spolierPropSize: readonly ["xs", "s", "m", "l"];
|
|
5
6
|
export declare type SpoilerPropSize = typeof spolierPropSize[number];
|
|
6
|
-
export declare const defaultSpoilerPropSize
|
|
7
|
+
export declare const defaultSpoilerPropSize = "m";
|
|
8
|
+
export declare const spolierPropButtonAlign: readonly ["left", "center", "right"];
|
|
9
|
+
export declare type SpoilerPropButtonAlign = typeof spolierPropButtonAlign[number];
|
|
10
|
+
export declare const defaultSpoilerPropButtonAlign: "left";
|
|
7
11
|
export declare type SpoilerModeProp = 'dots' | 'blur';
|
|
8
12
|
export declare type SpoilerButtonProps = {
|
|
9
13
|
size?: SpoilerPropSize;
|
|
@@ -19,14 +23,25 @@ export declare type SpoilerProps = Omit<PropsWithHTMLAttributes<{
|
|
|
19
23
|
lessIcon?: IconComponent;
|
|
20
24
|
moreLabel?: string;
|
|
21
25
|
moreIcon?: IconComponent;
|
|
26
|
+
buttonIndent?: Space;
|
|
27
|
+
buttonAlign?: SpoilerPropButtonAlign;
|
|
22
28
|
}, HTMLDivElement>, 'children'> & ({
|
|
23
29
|
preview: React.ReactNode;
|
|
24
|
-
|
|
30
|
+
content: React.ReactNode;
|
|
25
31
|
maxHeight?: never;
|
|
26
32
|
children?: never;
|
|
33
|
+
lineClamp?: never;
|
|
27
34
|
} | {
|
|
28
35
|
preview?: never;
|
|
29
|
-
|
|
36
|
+
content?: never;
|
|
30
37
|
children: React.ReactNode;
|
|
31
|
-
maxHeight
|
|
38
|
+
maxHeight: number;
|
|
39
|
+
lineClamp?: never;
|
|
40
|
+
} | {
|
|
41
|
+
preview?: never;
|
|
42
|
+
content?: never;
|
|
43
|
+
children: React.ReactNode;
|
|
44
|
+
maxHeight?: never;
|
|
45
|
+
lineClamp: number;
|
|
32
46
|
});
|
|
47
|
+
export declare type SpoilerMode = 'lineClamp' | 'blur' | 'toggle';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export var spolierPropSize=["
|
|
1
|
+
export var spolierPropSize=["xs","s","m","l"];export var defaultSpoilerPropSize="m";export var spolierPropButtonAlign=["left","center","right"];export var defaultSpoilerPropButtonAlign=spolierPropButtonAlign[0];
|
|
2
2
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["spolierPropSize","defaultSpoilerPropSize"],"sources":["../../../../../src/components/SpoilerCanary/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport const spolierPropSize = ['
|
|
1
|
+
{"version":3,"file":"types.js","names":["spolierPropSize","defaultSpoilerPropSize","spolierPropButtonAlign","defaultSpoilerPropButtonAlign"],"sources":["../../../../../src/components/SpoilerCanary/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { Space } from '##/mixs/MixSpace';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport const spolierPropSize = ['xs', 's', 'm', 'l'] as const;\nexport type SpoilerPropSize = typeof spolierPropSize[number];\nexport const defaultSpoilerPropSize = 'm';\n\nexport const spolierPropButtonAlign = ['left', 'center', 'right'] as const;\nexport type SpoilerPropButtonAlign = typeof spolierPropButtonAlign[number];\nexport const defaultSpoilerPropButtonAlign = spolierPropButtonAlign[0];\n\nexport type SpoilerModeProp = 'dots' | 'blur';\n\nexport type SpoilerButtonProps = {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n open?: boolean;\n};\n\nexport type SpoilerProps = Omit<\n PropsWithHTMLAttributes<\n {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n buttonIndent?: Space;\n buttonAlign?: SpoilerPropButtonAlign;\n },\n HTMLDivElement\n >,\n 'children'\n> &\n (\n | {\n preview: React.ReactNode;\n content: React.ReactNode;\n maxHeight?: never;\n children?: never;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight: number;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight?: never;\n lineClamp: number;\n }\n );\n\nexport type SpoilerMode = 'lineClamp' | 'blur' | 'toggle';\n"],"mappings":"AAMA,MAAO,IAAMA,gBAAe,CAAG,CAAC,IAAD,CAAO,GAAP,CAAY,GAAZ,CAAiB,GAAjB,CAAxB,CAEP,MAAO,IAAMC,uBAAsB,CAAG,GAA/B,CAEP,MAAO,IAAMC,uBAAsB,CAAG,CAAC,MAAD,CAAS,QAAT,CAAmB,OAAnB,CAA/B,CAEP,MAAO,IAAMC,8BAA6B,CAAGD,sBAAsB,CAAC,CAAD,CAA5D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useLayoutEffect,useState}from"react";import{isEq}from"
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useLayoutEffect,useState}from"react";import{isEq}from"../../utils/object";import{mapping}from"./mapping";var defaultPoints=["5xs","4xs","3xs","2xs","xs","s","m","l","xl","2xl","3xl","4xl","5xl"],defaultMap={"5xs":320,"4xs":360,"3xs":480,"2xs":720,xs:960,s:1020,m:1200,l:1400,xl:1600,"2xl":1800,"3xl":2e3,"4xl":2200,"5xl":2400};export var useBreakpoints=function(a){var b=a||defaultMap,c=useState(function(){return mapping(window.innerWidth,b)}),d=_slicedToArray(c,2),e=d[0],f=d[1];return useLayoutEffect(function(){var a=function(){var a=mapping(window.innerWidth,b);f(function(b){return isEq(b,a)?b:a})};return window.addEventListener("resize",a),function(){return window.removeEventListener("resize",a)}},[]),e};
|
|
2
2
|
//# sourceMappingURL=useBreakpoints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBreakpoints.js","names":["useLayoutEffect","useState","isEq","mapping","defaultPoints","defaultMap","useBreakpoints","map","pointsMap","window","innerWidth","points","setSetPoints","subscribe","newPoints","state","addEventListener","removeEventListener"],"sources":["../../../../../src/hooks/useBreakpoints/useBreakpoints.ts"],"sourcesContent":["import { useLayoutEffect, useState } from 'react';\n\nimport { isEq } from '
|
|
1
|
+
{"version":3,"file":"useBreakpoints.js","names":["useLayoutEffect","useState","isEq","mapping","defaultPoints","defaultMap","useBreakpoints","map","pointsMap","window","innerWidth","points","setSetPoints","subscribe","newPoints","state","addEventListener","removeEventListener"],"sources":["../../../../../src/hooks/useBreakpoints/useBreakpoints.ts"],"sourcesContent":["import { useLayoutEffect, useState } from 'react';\n\nimport { isEq } from '##/utils/object';\n\nimport { mapping } from './mapping';\nimport { Map, Returned } from './types';\n\nconst defaultPoints = [\n '5xs',\n '4xs',\n '3xs',\n '2xs',\n 'xs',\n 's',\n 'm',\n 'l',\n 'xl',\n '2xl',\n '3xl',\n '4xl',\n '5xl',\n] as const;\n\ntype DefaultPoints = typeof defaultPoints[number];\n\nconst defaultMap: Map<DefaultPoints> = {\n '5xs': 320,\n '4xs': 360,\n '3xs': 480,\n '2xs': 720,\n 'xs': 960,\n 's': 1020,\n 'm': 1200,\n 'l': 1400,\n 'xl': 1600,\n '2xl': 1800,\n '3xl': 2000,\n '4xl': 2200,\n '5xl': 2400,\n};\n\nexport const useBreakpoints = <POINTS extends string = DefaultPoints>(\n map?: Map<POINTS>,\n) => {\n const pointsMap = map || (defaultMap as Map<POINTS>);\n\n const [points, setSetPoints] = useState<Returned<POINTS>>(() =>\n mapping(window.innerWidth, pointsMap),\n );\n\n useLayoutEffect(() => {\n const subscribe = () => {\n const newPoints = mapping(window.innerWidth, pointsMap);\n\n setSetPoints((state) => (isEq(state, newPoints) ? state : newPoints));\n };\n\n window.addEventListener('resize', subscribe);\n\n return () => window.removeEventListener('resize', subscribe);\n }, []);\n\n return points;\n};\n"],"mappings":"iEAAA,OAASA,eAAT,CAA0BC,QAA1B,KAA0C,OAA1C,CAEA,OAASC,IAAT,0BAEA,OAASC,OAAT,iB,GAGMC,cAAa,CAAG,CACpB,KADoB,CAEpB,KAFoB,CAGpB,KAHoB,CAIpB,KAJoB,CAKpB,IALoB,CAMpB,GANoB,CAOpB,GAPoB,CAQpB,GARoB,CASpB,IAToB,CAUpB,KAVoB,CAWpB,KAXoB,CAYpB,KAZoB,CAapB,KAboB,C,CAkBhBC,UAA8B,CAAG,CACrC,MAAO,GAD8B,CAErC,MAAO,GAF8B,CAGrC,MAAO,GAH8B,CAIrC,MAAO,GAJ8B,CAKrC,GAAM,GAL+B,CAMrC,EAAK,IANgC,CAOrC,EAAK,IAPgC,CAQrC,EAAK,IARgC,CASrC,GAAM,IAT+B,CAUrC,MAAO,IAV8B,CAWrC,MAAO,GAX8B,CAYrC,MAAO,IAZ8B,CAarC,MAAO,IAb8B,C,CAgBvC,MAAO,IAAMC,eAAc,CAAG,SAC5BC,CAD4B,CAEzB,IACGC,EAAS,CAAGD,CAAG,EAAKF,UADvB,GAG4BJ,QAAQ,CAAmB,iBACxDE,QAAO,CAACM,MAAM,CAACC,UAAR,CAAoBF,CAApB,CADiD,CAAnB,CAHpC,uBAGIG,CAHJ,MAGYC,CAHZ,MAmBH,MAZAZ,gBAAe,CAAC,UAAM,CACpB,GAAMa,EAAS,CAAG,UAAM,CACtB,GAAMC,EAAS,CAAGX,OAAO,CAACM,MAAM,CAACC,UAAR,CAAoBF,CAApB,CAAzB,CAEAI,CAAY,CAAC,SAACG,CAAD,QAAYb,KAAI,CAACa,CAAD,CAAQD,CAAR,CAAJ,CAAyBC,CAAzB,CAAiCD,CAA7C,CAAD,CACb,CAJD,CAQA,MAFAL,OAAM,CAACO,gBAAP,CAAwB,QAAxB,CAAkCH,CAAlC,CAEA,CAAO,iBAAMJ,OAAM,CAACQ,mBAAP,CAA2B,QAA3B,CAAqCJ,CAArC,CAAN,CACR,CAVc,CAUZ,EAVY,CAYf,CAAOF,CACR,CAtBM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useLayoutEffect,useState}from"react";import{
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useLayoutEffect,useState}from"react";import{mapping}from"../useBreakpoints/mapping";import{useMutableRef}from"../useMutableRef";import{isEq}from"../../utils/object/isEq";var getWidth=function(a){var b;return(null===(b=a.current)||void 0===b?void 0:b.getBoundingClientRect().width)||0};export var useComponentBreakpoints=function(a,b){var c=useState(function(){return mapping(getWidth(a),b)}),d=_slicedToArray(c,2),e=d[0],f=d[1],g=useMutableRef(b);return useLayoutEffect(function(){var b=new ResizeObserver(function(){var b=mapping(getWidth(a),g.current);f(function(a){return isEq(a,b)?a:b})});return a.current&&b.observe(a.current),function(){b.disconnect()}},[a.current]),e};
|
|
2
2
|
//# sourceMappingURL=useComponentBreakpoints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useComponentBreakpoints.js","names":["useLayoutEffect","useState","
|
|
1
|
+
{"version":3,"file":"useComponentBreakpoints.js","names":["useLayoutEffect","useState","mapping","useMutableRef","isEq","getWidth","ref","current","getBoundingClientRect","width","useComponentBreakpoints","map","points","setSetPoints","mapRef","resizeObserver","ResizeObserver","newPoints","state","observe","disconnect"],"sources":["../../../../../src/hooks/useComponentBreakpoints/useComponentBreakpoints.ts"],"sourcesContent":["import { useLayoutEffect, useState } from 'react';\n\nimport { mapping } from '##/hooks/useBreakpoints/mapping';\nimport { Map, Returned } from '##/hooks/useBreakpoints/types';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { isEq } from '##/utils/object/isEq';\n\nconst getWidth = (ref: React.RefObject<HTMLElement | SVGGraphicsElement>) =>\n ref.current?.getBoundingClientRect().width || 0;\n\nexport const useComponentBreakpoints = <POINTS extends string>(\n ref: React.RefObject<HTMLElement | SVGGraphicsElement>,\n map: Map<POINTS>,\n) => {\n const [points, setSetPoints] = useState<Returned<POINTS>>(() =>\n mapping(getWidth(ref), map),\n );\n\n const mapRef = useMutableRef(map);\n\n useLayoutEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n const newPoints = mapping(getWidth(ref), mapRef.current);\n setSetPoints((state) => (isEq(state, newPoints) ? state : newPoints));\n });\n\n ref.current && resizeObserver.observe(ref.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [ref.current]);\n\n return points;\n};\n"],"mappings":"iEAAA,OAASA,eAAT,CAA0BC,QAA1B,KAA0C,OAA1C,CAEA,OAASC,OAAT,iCAEA,OAASC,aAAT,wBACA,OAASC,IAAT,+BAEA,GAAMC,SAAQ,CAAG,SAACC,CAAD,cACf,WAAAA,CAAG,CAACC,OAAJ,uBAAaC,qBAAb,GAAqCC,KAArC,GAA8C,CAD/B,CAAjB,CAGA,MAAO,IAAMC,wBAAuB,CAAG,SACrCJ,CADqC,CAErCK,CAFqC,CAGlC,OAC4BV,QAAQ,CAAmB,iBACxDC,QAAO,CAACG,QAAQ,CAACC,CAAD,CAAT,CAAgBK,CAAhB,CADiD,CAAnB,CADpC,uBACIC,CADJ,MACYC,CADZ,MAKGC,CAAM,CAAGX,aAAa,CAACQ,CAAD,CALzB,CAoBH,MAbAX,gBAAe,CAAC,UAAM,CACpB,GAAMe,EAAc,CAAG,GAAIC,eAAJ,CAAmB,UAAM,CAC9C,GAAMC,EAAS,CAAGf,OAAO,CAACG,QAAQ,CAACC,CAAD,CAAT,CAAgBQ,CAAM,CAACP,OAAvB,CAAzB,CACAM,CAAY,CAAC,SAACK,CAAD,QAAYd,KAAI,CAACc,CAAD,CAAQD,CAAR,CAAJ,CAAyBC,CAAzB,CAAiCD,CAA7C,CAAD,CACb,CAHsB,CAAvB,CAOA,MAFAX,EAAG,CAACC,OAAJ,EAAeQ,CAAc,CAACI,OAAf,CAAuBb,CAAG,CAACC,OAA3B,CAEf,CAAO,UAAM,CACXQ,CAAc,CAACK,UAAf,EACD,CACF,CAXc,CAWZ,CAACd,CAAG,CAACC,OAAL,CAXY,CAaf,CAAOK,CACR,CAxBM"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
declare type Return<T, E extends number | string[]> = E extends string[] ? Record<E[number], React.RefObject<T>> : Array<React.RefObject<T>>;
|
|
3
|
-
export declare const useRefs: <T, E extends number | string[] = number>(elements: E, deps?: unknown[]) => Return<T, E>;
|
|
2
|
+
declare type Return<T, E extends number | string[] | readonly string[]> = E extends string[] ? Record<E[number], React.RefObject<T>> : E extends readonly string[] ? Record<E[number], React.RefObject<T>> : Array<React.RefObject<T>>;
|
|
3
|
+
export declare const useRefs: <T, E extends number | readonly string[] | string[] = number>(elements: E, deps?: unknown[]) => Return<T, E>;
|
|
4
4
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRefs.js","names":["createRef","useMemo","isNotNumber","value","useRefs","elements","deps","obj","index","length","Array","fill","map","join"],"sources":["../../../../../src/hooks/useRefs/useRefs.ts"],"sourcesContent":["import { createRef, useMemo } from 'react';\n\nconst isNotNumber = <T>(value: T): value is Exclude<T, number> =>\n typeof value !== 'number';\n\ntype Return
|
|
1
|
+
{"version":3,"file":"useRefs.js","names":["createRef","useMemo","isNotNumber","value","useRefs","elements","deps","obj","index","length","Array","fill","map","join"],"sources":["../../../../../src/hooks/useRefs/useRefs.ts"],"sourcesContent":["import { createRef, useMemo } from 'react';\n\nconst isNotNumber = <T>(value: T): value is Exclude<T, number> =>\n typeof value !== 'number';\n\ntype Return<\n T,\n E extends number | string[] | readonly string[],\n> = E extends string[]\n ? Record<E[number], React.RefObject<T>>\n : E extends readonly string[]\n ? Record<E[number], React.RefObject<T>>\n : Array<React.RefObject<T>>;\n\nexport const useRefs = <\n T,\n E extends number | string[] | readonly string[] = number,\n>(\n elements: E,\n deps: unknown[] = [],\n): Return<T, E> =>\n useMemo(() => {\n if (isNotNumber(elements)) {\n const obj: Record<string, React.RefObject<T>> = {};\n for (let index = 0; index < elements.length; index++) {\n obj[elements[index]] = createRef<T>();\n }\n\n return obj as Return<T, E>;\n }\n\n return new Array(elements as number)\n .fill(null)\n .map(() => createRef<T>()) as unknown as Return<T, E>;\n }, [typeof elements === 'number' ? elements : elements.join('-'), ...deps]);\n"],"mappings":"yEAAA,OAASA,SAAT,CAAoBC,OAApB,KAAmC,OAAnC,CAEA,GAAMC,YAAW,CAAG,SAAIC,CAAJ,QACD,QAAjB,QAAOA,EADW,CAApB,CAYA,MAAO,IAAMC,QAAO,CAAG,SAIrBC,CAJqB,KAKrBC,EALqB,wDAKH,EALG,OAOrBL,QAAO,CAAC,UAAM,CACZ,GAAIC,WAAW,CAACG,CAAD,CAAf,CAA2B,CAEzB,OADME,EAAuC,CAAG,EAChD,CAASC,CAAK,CAAG,CAAjB,CAAoBA,CAAK,CAAGH,CAAQ,CAACI,MAArC,CAA6CD,CAAK,EAAlD,CACED,CAAG,CAACF,CAAQ,CAACG,CAAD,CAAT,CAAH,CAAuBR,SAAS,EAAhC,CAGF,MAAOO,EACR,CAED,MAAWG,MAAJ,CAAUL,CAAV,EACJM,IADI,CACC,IADD,EAEJC,GAFI,CAEA,iBAAMZ,UAAS,EAAf,CAFA,CAGR,CAbM,EAaiB,QAApB,QAAOK,EAAP,CAA+BA,CAA/B,CAA0CA,CAAQ,CAACQ,IAAT,CAAc,GAAd,CAbvC,4BAa8DP,CAb9D,GAPc,CAAhB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{varIsArray,varIsString}from"./helpers";export var getStyleProps=function(a,b){if(varIsString(b))return getComputedStyle(a).getPropertyValue(b);if(varIsArray(b)){for(var c={},d=getComputedStyle(a),e=0;e<b.length;e++)c[b[e]]=d.getPropertyValue(b[e]);return c}return""};
|
|
2
|
+
//# sourceMappingURL=getStyleProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getStyleProps.js","names":["varIsArray","varIsString","getStyleProps","element","props","getComputedStyle","getPropertyValue","value","style","index","length"],"sources":["../../../../../src/hooks/useStyleProps/getStyleProps.ts"],"sourcesContent":["import { varIsArray, varIsString } from './helpers';\nimport { Value } from './types';\n\nexport const getStyleProps = <\n StyleProps extends string | string[] | readonly string[] = string,\n>(\n element: HTMLElement | SVGElement,\n props: StyleProps,\n): Value<StyleProps> => {\n if (varIsString(props)) {\n return getComputedStyle(element).getPropertyValue(props) as Value<\n typeof props\n >;\n }\n if (varIsArray(props)) {\n const value: Record<string, string> = {};\n const style = getComputedStyle(element);\n for (let index = 0; index < props.length; index++) {\n value[props[index]] = style.getPropertyValue(props[index]);\n }\n return value as Value<StyleProps>;\n }\n return '' as Value<StyleProps>;\n};\n"],"mappings":"AAAA,OAASA,UAAT,CAAqBC,WAArB,iBAGA,MAAO,IAAMC,cAAa,CAAG,SAG3BC,CAH2B,CAI3BC,CAJ2B,CAKL,CACtB,GAAIH,WAAW,CAACG,CAAD,CAAf,CACE,MAAOC,iBAAgB,CAACF,CAAD,CAAhB,CAA0BG,gBAA1B,CAA2CF,CAA3C,CAAP,CAIF,GAAIJ,UAAU,CAACI,CAAD,CAAd,CAAuB,CAGrB,OAFMG,EAA6B,CAAG,EAEtC,CADMC,CAAK,CAAGH,gBAAgB,CAACF,CAAD,CAC9B,CAASM,CAAK,CAAG,CAAjB,CAAoBA,CAAK,CAAGL,CAAK,CAACM,MAAlC,CAA0CD,CAAK,EAA/C,CACEF,CAAK,CAACH,CAAK,CAACK,CAAD,CAAN,CAAL,CAAsBD,CAAK,CAACF,gBAAN,CAAuBF,CAAK,CAACK,CAAD,CAA5B,CAAtB,CAEF,MAAOF,EACR,CACD,MAAO,EACR,CApBM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["varIsArray","v","Array","isArray","varIsString"],"sources":["../../../../../src/hooks/useStyleProps/helpers.ts"],"sourcesContent":["export const varIsArray = <V extends string | string[] | readonly string[]>(\n v: V,\n): v is Exclude<V, string> => Array.isArray(v);\n\nexport const varIsString = <V extends string | string[] | readonly string[]>(\n v: V,\n): v is Exclude<V, string[] | readonly string[]> => typeof v === 'string';\n"],"mappings":"AAAA,MAAO,IAAMA,WAAU,CAAG,SACxBC,CADwB,QAEIC,MAAK,CAACC,OAAN,CAAcF,CAAd,CAFJ,CAAnB,CAIP,MAAO,IAAMG,YAAW,CAAG,SACzBH,CADyB,QAEsC,QAAb,QAAOA,EAFhC,CAApB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/hooks/useStyleProps/index.ts"],"sourcesContent":["export * from './useStyleProps';\nexport * from './getStyleProps';\n"],"mappings":"AAAA,6BACA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare type Value<V extends string | string[] | readonly string[]> = V extends string[] ? Record<V[number], string> : V extends readonly string[] ? Record<V[number], string> : string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../../src/hooks/useStyleProps/types.ts"],"sourcesContent":["export type Value<V extends string | string[] | readonly string[]> =\n V extends string[]\n ? Record<V[number], string>\n : V extends readonly string[]\n ? Record<V[number], string>\n : string;\n"],"mappings":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Value } from './types';
|
|
3
|
+
export declare const useStyleProps: <Element_1 extends HTMLElement | SVGElement = HTMLDivElement, StyleProps extends string | readonly string[] | string[] = string>(props: StyleProps) => [import("react").RefObject<Element_1>, Value<StyleProps>];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useEffect,useRef,useState}from"react";import{generateDeps,useTheme}from"../../components/Theme";import{isEq}from"../../utils/object";import{getStyleProps}from"./getStyleProps";import{varIsArray}from"./helpers";var isEqState=function(a,b){return"string"==typeof a||"string"==typeof b?a===b:isEq(a,b)},getCssVarsHash=function(a){if(varIsArray(a))a.join();else return a;return""};export var useStyleProps=function(a){var b=useTheme(),c=b.theme,d=useRef(null),e=useState(varIsArray(a)?{}:""),f=_slicedToArray(e,2),g=f[0],h=f[1];return useEffect(function(){h(function(b){var c=d.current?getStyleProps(d.current,a):void 0;return"undefined"==typeof c||isEqState(g,c)?b:c})},[generateDeps(c),d.current,getCssVarsHash(a)]),[d,g]};
|
|
2
|
+
//# sourceMappingURL=useStyleProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStyleProps.js","names":["useEffect","useRef","useState","generateDeps","useTheme","isEq","getStyleProps","varIsArray","isEqState","state","newState","getCssVarsHash","vars","join","useStyleProps","props","theme","ref","value","setValue","current"],"sources":["../../../../../src/hooks/useStyleProps/useStyleProps.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { generateDeps, useTheme } from '##/components/Theme';\nimport { isEq } from '##/utils/object';\n\nimport { getStyleProps } from './getStyleProps';\nimport { varIsArray } from './helpers';\nimport { Value } from './types';\n\nconst isEqState = <K extends string, V extends unknown>(\n state: Record<K, V> | string,\n newState: Record<K, V> | string,\n) => {\n if (typeof state === 'string' || typeof newState === 'string') {\n return state === newState;\n }\n return isEq(state, newState);\n};\n\nconst getCssVarsHash = (\n vars: string | string[] | readonly string[],\n): string => {\n if (varIsArray(vars)) {\n vars.join();\n } else {\n return vars;\n }\n return '';\n};\n\nexport const useStyleProps = <\n Element extends HTMLElement | SVGElement = HTMLDivElement,\n StyleProps extends string | string[] | readonly string[] = string,\n>(\n props: StyleProps,\n): [React.RefObject<Element>, Value<StyleProps>] => {\n const { theme } = useTheme();\n const ref = useRef<Element>(null);\n const [value, setValue] = useState<Value<StyleProps>>(\n varIsArray(props) ? ({} as Value<StyleProps>) : ('' as Value<StyleProps>),\n );\n\n useEffect(() => {\n setValue((state) => {\n const newState = ref.current\n ? getStyleProps(ref.current, props)\n : undefined;\n\n if (typeof newState !== 'undefined' && !isEqState(value, newState)) {\n return newState;\n }\n\n return state;\n });\n }, [generateDeps(theme), ref.current, getCssVarsHash(props)]);\n\n return [ref, value];\n};\n"],"mappings":"iEAAA,OAASA,SAAT,CAAoBC,MAApB,CAA4BC,QAA5B,KAA4C,OAA5C,CAEA,OAASC,YAAT,CAAuBC,QAAvB,8BACA,OAASC,IAAT,0BAEA,OAASC,aAAT,uBACA,OAASC,UAAT,iB,GAGMC,UAAS,CAAG,SAChBC,CADgB,CAEhBC,CAFgB,CAGb,OACkB,QAAjB,QAAOD,EAAP,EAAiD,QAApB,QAAOC,EADrC,CAEMD,CAAK,GAAKC,CAFhB,CAIIL,IAAI,CAACI,CAAD,CAAQC,CAAR,CACZ,C,CAEKC,cAAc,CAAG,SACrBC,CADqB,CAEV,CACX,GAAIL,UAAU,CAACK,CAAD,CAAd,CACEA,CAAI,CAACC,IAAL,EADF,KAGE,OAAOD,EAAP,CAEF,MAAO,EACR,C,CAED,MAAO,IAAME,cAAa,CAAG,SAI3BC,CAJ2B,CAKuB,OAChCX,QAAQ,EADwB,CAC1CY,CAD0C,GAC1CA,KAD0C,CAE5CC,CAAG,CAAGhB,MAAM,CAAU,IAAV,CAFgC,GAGxBC,QAAQ,CAChCK,UAAU,CAACQ,CAAD,CAAV,CAAqB,EAArB,CAAiD,EADjB,CAHgB,uBAG3CG,CAH2C,MAGpCC,CAHoC,MAqBlD,MAdAnB,UAAS,CAAC,UAAM,CACdmB,CAAQ,CAAC,SAACV,CAAD,CAAW,CAClB,GAAMC,EAAQ,CAAGO,CAAG,CAACG,OAAJ,CACbd,aAAa,CAACW,CAAG,CAACG,OAAL,CAAcL,CAAd,CADA,OAAjB,CADkB,MAKM,WAApB,QAAOL,EAAP,EAAoCF,SAAS,CAACU,CAAD,CAAQR,CAAR,CAL/B,CASXD,CATW,CAMTC,CAIV,CAVO,CAWT,CAZQ,CAYN,CAACP,YAAY,CAACa,CAAD,CAAb,CAAsBC,CAAG,CAACG,OAA1B,CAAmCT,cAAc,CAACI,CAAD,CAAjD,CAZM,CAcT,CAAO,CAACE,CAAD,CAAMC,CAAN,CACR,CA3BM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export*from"./useThemeVars";
|
|
1
|
+
export*from"./useThemeVars";export{defaultVars}from"./helpers";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/hooks/useThemeVars/index.ts"],"sourcesContent":["export * from './useThemeVars';\n"],"mappings":"AAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["defaultVars"],"sources":["../../../../../src/hooks/useThemeVars/index.ts"],"sourcesContent":["export * from './useThemeVars';\n\nexport { defaultVars } from './helpers';\n"],"mappings":"AAAA,4BAEA,OAASA,WAAT"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { defaultVars } from './helpers';
|
|
2
|
-
export { defaultVars } from './helpers';
|
|
3
2
|
export declare type Vars = {
|
|
4
3
|
readonly color: {
|
|
5
4
|
readonly primary: readonly string[];
|
|
@@ -56,3 +55,4 @@ export declare const useThemeVars: <T extends Vars = {
|
|
|
56
55
|
readonly space: readonly ["--space-3xs", "--space-2xs", "--space-xs", "--space-s", "--space-m", "--space-l", "--space-xl", "--space-2xl", "--space-3xl", "--space-4xl", "--space-5xl", "--space-6xl"];
|
|
57
56
|
readonly shadow: readonly ["--shadow-group", "--shadow-layer", "--shadow-modal"];
|
|
58
57
|
}>(options?: UseThemeVarsOptions<T> | undefined) => ThemeVars<T>;
|
|
58
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import{useMemo}from"react";import{cnTheme,useTheme}from"../../components/Theme/Theme";import{
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import{useMemo}from"react";import{cnTheme,useTheme}from"../../components/Theme/Theme";import{getStyleProps}from"../useStyleProps";import{defaultVars}from"./helpers";var addElements=function(){for(var a=[],b=0;b<arguments.length;b++){var c=0>b||arguments.length<=b?void 0:arguments[b],d=document.createElement("div");d.setAttribute("class",cnTheme(c)),document.body.append(d),a.push(d)}return a},removeElements=function(a){for(var b=0;b<a.length;b++)document.body.removeChild(a[b])};export var useThemeVars=function(a){var b=(null===a||void 0===a?void 0:a.vars)||defaultVars,c=useTheme(),d=c.theme;return useMemo(function(){var a=addElements(_objectSpread(_objectSpread({},d),{},{color:d.color.primary}),{color:d.color.accent},{color:d.color.invert}),c={color:{primary:getStyleProps(a[0],b.color.primary),accent:getStyleProps(a[1],b.color.accent),invert:getStyleProps(a[2],b.color.invert)},control:getStyleProps(a[0],b.control),font:getStyleProps(a[0],b.font),size:getStyleProps(a[0],b.size),space:getStyleProps(a[0],b.space),shadow:getStyleProps(a[0],b.shadow)};return removeElements(a),c},[d.color.primary,d.color.accent,d.color.invert,d.control,d.font,d.size,d.space,d.shadow].concat(_toConsumableArray(null!==a&&void 0!==a&&a.deps?a.deps:[])))};
|
|
2
2
|
//# sourceMappingURL=useThemeVars.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useThemeVars.js","names":["useMemo","cnTheme","useTheme","
|
|
1
|
+
{"version":3,"file":"useThemeVars.js","names":["useMemo","cnTheme","useTheme","getStyleProps","defaultVars","addElements","elements","index","length","mods","element","document","createElement","setAttribute","body","append","push","removeElements","array","removeChild","useThemeVars","options","variables","vars","theme","color","primary","accent","invert","themeVars","control","font","size","space","shadow","deps"],"sources":["../../../../../src/hooks/useThemeVars/useThemeVars.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport { useMemo } from 'react';\n\nimport { cnTheme, useTheme } from '##/components/Theme/Theme';\nimport { getStyleProps } from '##/hooks/useStyleProps';\n\nimport { defaultVars } from './helpers';\n\nexport type Vars = {\n readonly color: {\n readonly primary: readonly string[];\n readonly accent: readonly string[];\n readonly invert: readonly string[];\n };\n readonly control: readonly string[];\n readonly font: readonly string[];\n readonly size: readonly string[];\n readonly space: readonly string[];\n readonly shadow: readonly string[];\n};\n\nexport type ThemeVars<T extends Vars = typeof defaultVars> = {\n color: {\n primary: { [key in T['color']['primary'][number]]: string };\n accent: { [key in T['color']['accent'][number]]: string };\n invert: { [key in T['color']['invert'][number]]: string };\n };\n control: { [key in T['control'][number]]: string };\n font: { [key in T['font'][number]]: string };\n size: { [key in T['size'][number]]: string };\n space: { [key in T['space'][number]]: string };\n shadow: { [key in T['shadow'][number]]: string };\n};\n\ntype UseThemeVarsOptions<T> = {\n vars?: T;\n deps?: [];\n};\n\nconst addElements = (...array: {}[]): HTMLDivElement[] => {\n const elements: HTMLDivElement[] = [];\n for (let index = 0; index < array.length; index++) {\n const mods = array[index];\n const element = document.createElement('div');\n element.setAttribute('class', cnTheme(mods));\n document.body.append(element);\n elements.push(element);\n }\n return elements;\n};\n\nconst removeElements = (array: HTMLDivElement[]) => {\n for (let index = 0; index < array.length; index++) {\n document.body.removeChild(array[index]);\n }\n};\n\nexport const useThemeVars = <T extends Vars = typeof defaultVars>(\n options?: UseThemeVarsOptions<T>,\n) => {\n const variables = options?.vars || defaultVars;\n\n const { theme } = useTheme();\n\n return useMemo(() => {\n const elements = addElements(\n {\n ...theme,\n color: theme.color.primary,\n },\n { color: theme.color.accent },\n { color: theme.color.invert },\n );\n\n const themeVars = {\n color: {\n primary: getStyleProps(elements[0], variables.color.primary),\n accent: getStyleProps(elements[1], variables.color.accent),\n invert: getStyleProps(elements[2], variables.color.invert),\n },\n control: getStyleProps(elements[0], variables.control),\n font: getStyleProps(elements[0], variables.font),\n size: getStyleProps(elements[0], variables.size),\n space: getStyleProps(elements[0], variables.space),\n shadow: getStyleProps(elements[0], variables.shadow),\n } as ThemeVars<T>;\n\n removeElements(elements);\n\n return themeVars;\n }, [\n theme.color.primary,\n theme.color.accent,\n theme.color.invert,\n theme.control,\n theme.font,\n theme.size,\n theme.space,\n theme.shadow,\n ...(options?.deps ? options.deps : []),\n ]);\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MixSpace.js","names":["cn","cnSpace","cnMixSpace","
|
|
1
|
+
{"version":3,"file":"MixSpace.js","names":["cn","cnSpace","cnMixSpace","p","m","pV","pH","mV","mH","mT","mL","mR","mB","pT","pL","pR","pB"],"sources":["../../../../../src/mixs/MixSpace/MixSpace.tsx"],"sourcesContent":["import './MixSpace.css';\n\nimport { cn } from '##/utils/bem';\n\nexport type Space =\n | 0\n | 'auto'\n | 'm'\n | '3xs'\n | '2xs'\n | 'xs'\n | 's'\n | 'l'\n | 'xl'\n | '2xl'\n | '3xl'\n | '4xl'\n | '5xl'\n | '6xl';\n\nexport type MixSpaceProps = {\n p?: Space;\n m?: Space;\n pV?: Space;\n pH?: Space;\n mV?: Space;\n mH?: Space;\n mT?: Space;\n mL?: Space;\n mR?: Space;\n mB?: Space;\n pT?: Space;\n pL?: Space;\n pR?: Space;\n pB?: Space;\n};\n\ntype CnMixSpace = (props: MixSpaceProps) => string;\n\nconst cnSpace = cn('MixSpace');\n\nexport const cnMixSpace: CnMixSpace = ({\n p,\n m,\n pV,\n pH,\n mV,\n mH,\n mT,\n mL,\n mR,\n mB,\n pT,\n pL,\n pR,\n pB,\n}) =>\n cnSpace({\n pT: pT || pV || p,\n pL: pL || pH || p,\n pR: pR || pH || p,\n pB: pB || pV || p,\n mT: mT || mV || m,\n mL: mL || mH || m,\n mR: mR || mH || m,\n mB: mB || mV || m,\n });\n"],"mappings":"AAAA,uBAEA,OAASA,EAAT,uBAqCA,GAAMC,QAAO,CAAGD,EAAE,CAAC,UAAD,CAAlB,CAEA,MAAO,IAAME,WAAsB,CAAG,eACpCC,EADoC,GACpCA,CADoC,CAEpCC,CAFoC,GAEpCA,CAFoC,CAGpCC,CAHoC,GAGpCA,EAHoC,CAIpCC,CAJoC,GAIpCA,EAJoC,CAKpCC,CALoC,GAKpCA,EALoC,CAMpCC,CANoC,GAMpCA,EANoC,CAOpCC,CAPoC,GAOpCA,EAPoC,CAQpCC,CARoC,GAQpCA,EARoC,CASpCC,CAToC,GASpCA,EAToC,CAUpCC,CAVoC,GAUpCA,EAVoC,CAWpCC,CAXoC,GAWpCA,EAXoC,CAYpCC,CAZoC,GAYpCA,EAZoC,CAapCC,CAboC,GAapCA,EAboC,CAcpCC,CAdoC,GAcpCA,EAdoC,OAgBpCf,QAAO,CAAC,CACNY,EAAE,CAAEA,CAAE,EAAIR,CAAN,EAAYF,CADV,CAENW,EAAE,CAAEA,CAAE,EAAIR,CAAN,EAAYH,CAFV,CAGNY,EAAE,CAAEA,CAAE,EAAIT,CAAN,EAAYH,CAHV,CAINa,EAAE,CAAEA,CAAE,EAAIX,CAAN,EAAYF,CAJV,CAKNM,EAAE,CAAEA,CAAE,EAAIF,CAAN,EAAYH,CALV,CAMNM,EAAE,CAAEA,CAAE,EAAIF,CAAN,EAAYJ,CANV,CAONO,EAAE,CAAEA,CAAE,EAAIH,CAAN,EAAYJ,CAPV,CAQNQ,EAAE,CAAEA,CAAE,EAAIL,CAAN,EAAYH,CARV,CAAD,CAhB6B,CAA/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/utils/object/index.ts"],"sourcesContent":["export * from './isEmpty';\nexport * from './isEq';\n"],"mappings":"AAAA,uBACA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export var isEmpty=function(a){for(var b in a)return!1;return!0};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=isEmpty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEmpty.js","names":["isEmpty","obj","_"],"sources":["../../../../../src/utils/object/isEmpty.ts"],"sourcesContent":["export const isEmpty = (obj: {}) => {\n // eslint-disable-next-line guard-for-in, no-unreachable-loop\n for (const _ in obj) {\n return false;\n }\n return true;\n};\n"],"mappings":"AAAA,MAAO,IAAMA,QAAO,CAAG,SAACC,CAAD,CAAa,CAElC,IAAK,GAAMC,EAAX,GAAgBD,EAAhB,CACE,SAEF,QACD,CANM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isEq: <K extends string, V extends unknown>(state: Record<K, V>, newState: Record<K, V>) => boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEq.js","names":["isEq","state","newState","key"],"sources":["../../../../../src/utils/object/isEq.ts"],"sourcesContent":["export const isEq = <K extends string, V extends unknown>(\n state: Record<K, V>,\n newState: Record<K, V>,\n) => {\n for (const key in newState) {\n if (state[key] !== newState[key]) {\n return false;\n }\n }\n return true;\n};\n"],"mappings":"AAAA,MAAO,IAAMA,KAAI,CAAG,SAClBC,CADkB,CAElBC,CAFkB,CAGf,CACH,IAAK,GAAMC,EAAX,GAAkBD,EAAlB,CACE,GAAID,CAAK,CAACE,CAAD,CAAL,GAAeD,CAAQ,CAACC,CAAD,CAA3B,CACE,SAGJ,QACD,CAVM"}
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../__internal__/src/hooks/useStyleProps";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../__internal__/src/hooks/useStyleProps";
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["preview","maxHeight","fullText","size","lessIcon","lessLabel","children","moreIcon","moreLabel","className"];import"./Spoiler.css";import React,{forwardRef}from"react";import{Text}from"../Text";import{useFlag}from"../../hooks/useFlag";import{cnMixSpace}from"../../mixs/MixSpace";import{cnCanary}from"../../utils/bem";import{SpoilerButton}from"./SpoilerButton";import{defaultSpoilerPropSize}from"./types";export var cnSpoiler=cnCanary("Spoiler");var spoilerOffsetMap={xs:"xs",s:"s",m:"m",l:"m"},getContent=function(a,b){return a.children?{mode:"blur",content:a.children}:{mode:"dots",content:b?a.fullText:a.preview}};export var Spoiler=forwardRef(function(a,b){var c=a.preview,d=a.maxHeight,e=void 0===d?96:d,f=a.fullText,g=a.size,h=void 0===g?defaultSpoilerPropSize:g,i=a.lessIcon,j=a.lessLabel,k=a.children,l=a.moreIcon,m=a.moreLabel,n=a.className,o=_objectWithoutProperties(a,_excluded),p=useFlag(),q=_slicedToArray(p,2),r=q[0],s=q[1],t=getContent(a,r),u=t.mode,v=t.content;return React.createElement("div",Object.assign({ref:b,className:cnSpoiler({size:h},[n])},o),React.createElement(Text,{className:cnSpoiler("Wrapper",{mode:u,open:r}),size:h,style:_defineProperty({},"--spoiler-content-height","".concat(e,"px"))},v),React.createElement(SpoilerButton,{className:cnSpoiler("Button",[cnMixSpace({mT:spoilerOffsetMap[h]})]),lessIcon:i,lessLabel:j,moreIcon:l,moreLabel:m,onClick:s.toggle,open:r,size:h}))});
|
|
2
|
-
//# sourceMappingURL=Spoiler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Spoiler.js","names":["React","forwardRef","Text","useFlag","cnMixSpace","cnCanary","SpoilerButton","defaultSpoilerPropSize","cnSpoiler","spoilerOffsetMap","xs","s","m","l","getContent","props","isOpen","children","mode","content","fullText","preview","Spoiler","ref","maxHeight","size","lessIcon","lessLabel","moreIcon","moreLabel","className","otherProps","setIsOpen","open","mT","toggle"],"sources":["../../../../../src/components/SpoilerCanary/Spoiler.tsx"],"sourcesContent":["import './Spoiler.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { Text } from '##/components/Text';\nimport { useFlag } from '##/hooks/useFlag';\nimport { cnMixSpace, Space } from '##/mixs/MixSpace';\nimport { cnCanary } from '##/utils/bem';\n\nimport { SpoilerButton } from './SpoilerButton';\nimport { defaultSpoilerPropSize, SpoilerProps, SpoilerPropSize } from './types';\n\nexport const cnSpoiler = cnCanary('Spoiler');\n\nconst spoilerOffsetMap: Record<SpoilerPropSize, Space> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n\nconst getContent = (props: SpoilerProps, isOpen: boolean) => {\n if (props.children) {\n return {\n mode: 'blur',\n content: props.children,\n };\n }\n return {\n mode: 'dots',\n content: isOpen ? props.fullText : props.preview,\n };\n};\n\nexport const Spoiler = forwardRef<HTMLDivElement, SpoilerProps>(\n (props, ref) => {\n const {\n preview,\n maxHeight = 96,\n fullText,\n size = defaultSpoilerPropSize,\n lessIcon,\n lessLabel,\n children,\n moreIcon,\n moreLabel,\n className,\n ...otherProps\n } = props;\n\n const [isOpen, setIsOpen] = useFlag();\n\n const { mode, content } = getContent(props, isOpen);\n\n return (\n <div\n ref={ref}\n className={cnSpoiler({ size }, [className])}\n {...otherProps}\n >\n <Text\n className={cnSpoiler('Wrapper', { mode, open: isOpen })}\n size={size}\n style={{\n ['--spoiler-content-height' as string]: `${maxHeight}px`,\n }}\n >\n {content}\n </Text>\n <SpoilerButton\n className={cnSpoiler('Button', [\n cnMixSpace({ mT: spoilerOffsetMap[size] }),\n ])}\n lessIcon={lessIcon}\n lessLabel={lessLabel}\n moreIcon={moreIcon}\n moreLabel={moreLabel}\n onClick={setIsOpen.toggle}\n open={isOpen}\n size={size}\n />\n </div>\n );\n },\n);\n"],"mappings":"sVAAA,sBAEA,MAAOA,MAAP,EAAgBC,UAAhB,KAAkC,OAAlC,CAEA,OAASC,IAAT,eACA,OAASC,OAAT,2BACA,OAASC,UAAT,2BACA,OAASC,QAAT,uBAEA,OAASC,aAAT,uBACA,OAASC,sBAAT,eAEA,MAAO,IAAMC,UAAS,CAAGH,QAAQ,CAAC,SAAD,CAA1B,C,GAEDI,iBAAgD,CAAG,CACvDC,EAAE,CAAE,IADmD,CAEvDC,CAAC,CAAE,GAFoD,CAGvDC,CAAC,CAAE,GAHoD,CAIvDC,CAAC,CAAE,GAJoD,C,CAOnDC,UAAU,CAAG,SAACC,CAAD,CAAsBC,CAAtB,CAA0C,OACvDD,EAAK,CAACE,QADiD,CAElD,CACLC,IAAI,CAAE,MADD,CAELC,OAAO,CAAEJ,CAAK,CAACE,QAFV,CAFkD,CAOpD,CACLC,IAAI,CAAE,MADD,CAELC,OAAO,CAAEH,CAAM,CAAGD,CAAK,CAACK,QAAT,CAAoBL,CAAK,CAACM,OAFpC,CAIR,C,CAED,MAAO,IAAMC,QAAO,CAAGrB,UAAU,CAC/B,SAACc,CAAD,CAAQQ,CAAR,CAAgB,IAEZF,EAFY,CAaVN,CAbU,CAEZM,OAFY,GAaVN,CAbU,CAGZS,SAHY,CAGZA,CAHY,YAGA,EAHA,GAIZJ,CAJY,CAaVL,CAbU,CAIZK,QAJY,GAaVL,CAbU,CAKZU,IALY,CAKZA,CALY,YAKLlB,sBALK,GAMZmB,CANY,CAaVX,CAbU,CAMZW,QANY,CAOZC,CAPY,CAaVZ,CAbU,CAOZY,SAPY,CAQZV,CARY,CAaVF,CAbU,CAQZE,QARY,CASZW,CATY,CAaVb,CAbU,CASZa,QATY,CAUZC,CAVY,CAaVd,CAbU,CAUZc,SAVY,CAWZC,CAXY,CAaVf,CAbU,CAWZe,SAXY,CAYTC,CAZS,0BAaVhB,CAbU,cAecZ,OAAO,EAfrB,uBAePa,CAfO,MAeCgB,CAfD,QAiBYlB,UAAU,CAACC,CAAD,CAAQC,CAAR,CAjBtB,CAiBNE,CAjBM,GAiBNA,IAjBM,CAiBAC,CAjBA,GAiBAA,OAjBA,CAmBd,MACE,0CACE,GAAG,CAAEI,CADP,CAEE,SAAS,CAAEf,SAAS,CAAC,CAAEiB,IAAI,CAAJA,CAAF,CAAD,CAAW,CAACK,CAAD,CAAX,CAFtB,EAGMC,CAHN,EAKE,oBAAC,IAAD,EACE,SAAS,CAAEvB,SAAS,CAAC,SAAD,CAAY,CAAEU,IAAI,CAAJA,CAAF,CAAQe,IAAI,CAAEjB,CAAd,CAAZ,CADtB,CAEE,IAAI,CAAES,CAFR,CAGE,KAAK,oBACF,0BADE,WACwCD,CADxC,OAHP,EAOGL,CAPH,CALF,CAcE,oBAAC,aAAD,EACE,SAAS,CAAEX,SAAS,CAAC,QAAD,CAAW,CAC7BJ,UAAU,CAAC,CAAE8B,EAAE,CAAEzB,gBAAgB,CAACgB,CAAD,CAAtB,CAAD,CADmB,CAAX,CADtB,CAIE,QAAQ,CAAEC,CAJZ,CAKE,SAAS,CAAEC,CALb,CAME,QAAQ,CAAEC,CANZ,CAOE,SAAS,CAAEC,CAPb,CAQE,OAAO,CAAEG,CAAS,CAACG,MARrB,CASE,IAAI,CAAEnB,CATR,CAUE,IAAI,CAAES,CAVR,EAdF,CA4BH,CAjD8B,CAA1B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isEq.js","names":["isEq","state","newState","key"],"sources":["../../../../../src/hooks/useBreakpoints/isEq.ts"],"sourcesContent":["import { Returned } from './types';\n\nexport const isEq = <POINTS extends string>(\n state: Returned<POINTS>,\n newState: Returned<POINTS>,\n) => {\n for (const key in newState) {\n if (state[key] !== newState[key]) {\n return false;\n }\n }\n return true;\n};\n"],"mappings":"AAEA,MAAO,IAAMA,KAAI,CAAG,SAClBC,CADkB,CAElBC,CAFkB,CAGf,CACH,IAAK,GAAMC,EAAX,GAAkBD,EAAlB,CACE,GAAID,CAAK,CAACE,CAAD,CAAL,GAAeD,CAAQ,CAACC,CAAD,CAA3B,CACE,SAGJ,QACD,CAVM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"object.js","names":["isEmpty","obj","_"],"sources":["../../../../src/utils/object.ts"],"sourcesContent":["export const isEmpty = (obj: {}) => {\n // eslint-disable-next-line guard-for-in, no-unreachable-loop\n for (const _ in obj) {\n return false;\n }\n return true;\n};\n"],"mappings":"AAAA,MAAO,IAAMA,QAAO,CAAG,SAACC,CAAD,CAAa,CAElC,IAAK,GAAMC,EAAX,GAAgBD,EAAhB,CACE,SAEF,QACD,CANM"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|