@sproutsocial/seeds-react-hooks 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/index.d.mts +66 -0
  2. package/dist/index.d.ts +66 -0
  3. package/dist/index.js +19 -0
  4. package/dist/index.mjs +10 -0
  5. package/package.json +8 -13
  6. package/__flow__/index.flow.js +0 -8
  7. package/__flow__/index.js +0 -3
  8. package/__flow__/useInteractiveColor/useInteractiveColor.flow.js +0 -3
  9. package/__flow__/useMultiselect/useMultiselect.flow.js +0 -17
  10. package/__flow__/useMutationObserver/useMutationObserver.flow.js +0 -19
  11. package/__flow__/useSelect/useSelect.flow.js +0 -10
  12. package/__flow__/useTextContent/useTextContent.flow.js +0 -21
  13. package/__flow__/useWhyDidYouUpdate/useWhyDidYouUpdate.flow.js +0 -3
  14. package/commonjs/index.flow.js +0 -71
  15. package/commonjs/index.js +0 -82
  16. package/commonjs/index.js.flow +0 -3
  17. package/commonjs/useInteractiveColor/useInteractiveColor.flow.js +0 -1
  18. package/commonjs/useInteractiveColor/useInteractiveColor.js +0 -32
  19. package/commonjs/useMeasure/useMeasure.js +0 -65
  20. package/commonjs/useMultiselect/useMultiselect.flow.js +0 -1
  21. package/commonjs/useMultiselect/useMultiselect.js +0 -77
  22. package/commonjs/useMutationObserver/useMutationObserver.flow.js +0 -1
  23. package/commonjs/useMutationObserver/useMutationObserver.js +0 -58
  24. package/commonjs/useSelect/useSelect.flow.js +0 -1
  25. package/commonjs/useSelect/useSelect.js +0 -38
  26. package/commonjs/useTextContent/useTextContent.flow.js +0 -25
  27. package/commonjs/useTextContent/useTextContent.js +0 -26
  28. package/commonjs/useWhyDidYouUpdate/useWhyDidYouUpdate.flow.js +0 -1
  29. package/commonjs/useWhyDidYouUpdate/useWhyDidYouUpdate.js +0 -46
  30. package/dist/types/index.d.ts +0 -8
  31. package/dist/types/index.d.ts.map +0 -1
  32. package/dist/types/useInteractiveColor/useInteractiveColor.d.ts +0 -9
  33. package/dist/types/useInteractiveColor/useInteractiveColor.d.ts.map +0 -1
  34. package/dist/types/useMeasure/useMeasure.d.ts +0 -14
  35. package/dist/types/useMeasure/useMeasure.d.ts.map +0 -1
  36. package/dist/types/useMultiselect/useMultiselect.d.ts +0 -11
  37. package/dist/types/useMultiselect/useMultiselect.d.ts.map +0 -1
  38. package/dist/types/useMutationObserver/useMutationObserver.d.ts +0 -18
  39. package/dist/types/useMutationObserver/useMutationObserver.d.ts.map +0 -1
  40. package/dist/types/useSelect/useSelect.d.ts +0 -10
  41. package/dist/types/useSelect/useSelect.d.ts.map +0 -1
  42. package/dist/types/useTextContent/useTextContent.d.ts +0 -5
  43. package/dist/types/useTextContent/useTextContent.d.ts.map +0 -1
  44. package/dist/types/useWhyDidYouUpdate/useWhyDidYouUpdate.d.ts +0 -2
  45. package/dist/types/useWhyDidYouUpdate/useWhyDidYouUpdate.d.ts.map +0 -1
  46. package/lib/index.flow.js +0 -6
  47. package/lib/index.js +0 -7
  48. package/lib/index.js.flow +0 -3
  49. package/lib/useInteractiveColor/useInteractiveColor.flow.js +0 -0
  50. package/lib/useInteractiveColor/useInteractiveColor.js +0 -27
  51. package/lib/useMeasure/useMeasure.js +0 -59
  52. package/lib/useMultiselect/useMultiselect.flow.js +0 -0
  53. package/lib/useMultiselect/useMultiselect.js +0 -71
  54. package/lib/useMutationObserver/useMutationObserver.flow.js +0 -0
  55. package/lib/useMutationObserver/useMutationObserver.js +0 -51
  56. package/lib/useSelect/useSelect.flow.js +0 -0
  57. package/lib/useSelect/useSelect.js +0 -32
  58. package/lib/useTextContent/useTextContent.flow.js +0 -23
  59. package/lib/useTextContent/useTextContent.js +0 -20
  60. package/lib/useWhyDidYouUpdate/useWhyDidYouUpdate.flow.js +0 -0
  61. package/lib/useWhyDidYouUpdate/useWhyDidYouUpdate.js +0 -40
@@ -0,0 +1,66 @@
1
+ import { RefObject } from 'react';
2
+
3
+ interface DOMRectObject {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ top: number;
9
+ right: number;
10
+ bottom: number;
11
+ left: number;
12
+ }
13
+ declare function useMeasure<TElement extends Element>(ref: RefObject<TElement>): Readonly<DOMRectObject>;
14
+
15
+ type TypeSingleSelectProps<T extends string> = {
16
+ initialValue?: T | "";
17
+ onChange?: (value: string | T) => any;
18
+ };
19
+ declare const useSelect: <T extends string>({ initialValue, onChange: userOnChange, }?: TypeSingleSelectProps<T>) => {
20
+ value: string | T;
21
+ onChange: (newValue: string) => void;
22
+ };
23
+
24
+ type TypeMultiSelectProps<T extends string> = {
25
+ initialValue?: T[];
26
+ onChange?: (value: Array<string | T>) => any;
27
+ };
28
+ declare const useMultiselect: <T extends string>({ initialValue, onChange: userOnChange, }?: TypeMultiSelectProps<T>) => {
29
+ value: (string | T)[];
30
+ onChange: (newValue: string) => void;
31
+ onClear: () => void;
32
+ };
33
+
34
+ type TypeMutationObserverInitRequired = {
35
+ childList: true;
36
+ } | {
37
+ attributes: true;
38
+ } | {
39
+ characterData: true;
40
+ };
41
+ type TypeMutationObserverInit = {
42
+ subtree?: boolean;
43
+ attributeOldValue?: boolean;
44
+ characterDataOldValue?: boolean;
45
+ attributeFilter?: Array<string>;
46
+ } & TypeMutationObserverInitRequired;
47
+ type TypeMutationObserverCallback = (mutationList?: MutationRecord[], observer?: MutationObserver) => any;
48
+ declare function useMutationObserver(targetNode: Node | null, config: TypeMutationObserverInit, callback?: TypeMutationObserverCallback): undefined;
49
+ declare function useMutationObserverOnce(targetNode: Node | null, config: TypeMutationObserverInit, callback: TypeMutationObserverCallback): undefined;
50
+
51
+ type textContentRef = ((node: Node) => void) & {
52
+ current?: string;
53
+ };
54
+ declare function useTextContent(initial: string): textContentRef;
55
+
56
+ declare function useWhyDidYouUpdate(name: string, props: object): void;
57
+
58
+ /**
59
+ * The useInteractiveColor hook has context of theme mode (light or dark)
60
+ * and can be used to lighten or darken a color dynamically
61
+ *
62
+ * note: colors are limited to our theme colors
63
+ */
64
+ declare const useInteractiveColor: (themeColor: string) => string;
65
+
66
+ export { type textContentRef, useInteractiveColor, useMeasure, useMultiselect, useMutationObserver, useMutationObserverOnce, useSelect, useTextContent, useWhyDidYouUpdate };
@@ -0,0 +1,66 @@
1
+ import { RefObject } from 'react';
2
+
3
+ interface DOMRectObject {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ top: number;
9
+ right: number;
10
+ bottom: number;
11
+ left: number;
12
+ }
13
+ declare function useMeasure<TElement extends Element>(ref: RefObject<TElement>): Readonly<DOMRectObject>;
14
+
15
+ type TypeSingleSelectProps<T extends string> = {
16
+ initialValue?: T | "";
17
+ onChange?: (value: string | T) => any;
18
+ };
19
+ declare const useSelect: <T extends string>({ initialValue, onChange: userOnChange, }?: TypeSingleSelectProps<T>) => {
20
+ value: string | T;
21
+ onChange: (newValue: string) => void;
22
+ };
23
+
24
+ type TypeMultiSelectProps<T extends string> = {
25
+ initialValue?: T[];
26
+ onChange?: (value: Array<string | T>) => any;
27
+ };
28
+ declare const useMultiselect: <T extends string>({ initialValue, onChange: userOnChange, }?: TypeMultiSelectProps<T>) => {
29
+ value: (string | T)[];
30
+ onChange: (newValue: string) => void;
31
+ onClear: () => void;
32
+ };
33
+
34
+ type TypeMutationObserverInitRequired = {
35
+ childList: true;
36
+ } | {
37
+ attributes: true;
38
+ } | {
39
+ characterData: true;
40
+ };
41
+ type TypeMutationObserverInit = {
42
+ subtree?: boolean;
43
+ attributeOldValue?: boolean;
44
+ characterDataOldValue?: boolean;
45
+ attributeFilter?: Array<string>;
46
+ } & TypeMutationObserverInitRequired;
47
+ type TypeMutationObserverCallback = (mutationList?: MutationRecord[], observer?: MutationObserver) => any;
48
+ declare function useMutationObserver(targetNode: Node | null, config: TypeMutationObserverInit, callback?: TypeMutationObserverCallback): undefined;
49
+ declare function useMutationObserverOnce(targetNode: Node | null, config: TypeMutationObserverInit, callback: TypeMutationObserverCallback): undefined;
50
+
51
+ type textContentRef = ((node: Node) => void) & {
52
+ current?: string;
53
+ };
54
+ declare function useTextContent(initial: string): textContentRef;
55
+
56
+ declare function useWhyDidYouUpdate(name: string, props: object): void;
57
+
58
+ /**
59
+ * The useInteractiveColor hook has context of theme mode (light or dark)
60
+ * and can be used to lighten or darken a color dynamically
61
+ *
62
+ * note: colors are limited to our theme colors
63
+ */
64
+ declare const useInteractiveColor: (themeColor: string) => string;
65
+
66
+ export { type textContentRef, useInteractiveColor, useMeasure, useMultiselect, useMutationObserver, useMutationObserverOnce, useSelect, useTextContent, useWhyDidYouUpdate };
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var seedsReactUtilities = require('@sproutsocial/seeds-react-utilities');
5
+ var polished = require('polished');
6
+ var styledComponents = require('styled-components');
7
+
8
+ var v=Object.freeze({x:0,y:0,width:0,height:0,top:0,right:0,bottom:0,left:0});function q(r){let[t,e]=react.useState(v);return react.useLayoutEffect(()=>{if(!r.current||!("ResizeObserver"in window))return;let n=new ResizeObserver(([o])=>{let{x:u,y:a,width:i,height:p,top:m,right:b,bottom:d,left:g}=o.contentRect;e({x:u,y:a,width:i,height:p,top:m,right:b,bottom:d,left:g});});return n.observe(r.current),()=>{n.disconnect();}},[r]),t}var U=({initialValue:r="",onChange:t=()=>{}}={initialValue:"",onChange:()=>{}})=>{let[e,s]=react.useState(r),n=react.useCallback(o=>{o!==e&&(s(o),t(o));},[t,e]);return {value:e,onChange:n}};var R=(r,t)=>{let e=new Set(r);switch(t.type){case"reset":return new Set;case"toggle_item":default:return t.value&&(e.has(t.value)?e.delete(t.value):e.add(t.value)),e}},K=({initialValue:r=[],onChange:t=()=>{}}={initialValue:[],onChange:()=>{}})=>{let[e,s]=react.useReducer(R,new Set(r)),n=i=>Array.from(i),o=react.useCallback(i=>{s({type:"toggle_item",value:i});},[s]),u=react.useRef(!0);react.useEffect(()=>{if(u.current){u.current=!1;return}t(n(e));},[t,e]);let a=react.useCallback(()=>{s({type:"reset"});},[s]);return {value:n(e),onChange:o,onClear:a}};var E=r=>r;function k(r,t,e=E){if(!seedsReactUtilities.canUseDOM())return;let[s,n]=react.useState(void 0),o=react.useMemo(()=>new MutationObserver((u,a)=>{let i=e(u,a);n(i);}),[e]);return react.useEffect(()=>{if(r)return o.observe(r,t),()=>{o.disconnect();}},[r,t,o]),s}function H(r,t,e){let[s,n]=react.useState(!0),u=k(s?r:null,t,e);return u!==void 0&&s&&n(!1),u}function X(r){let[t,e]=react.useState(r),s=react.useCallback(n=>{n&&n.textContent!==null&&e(n.textContent);},[]);return s.current=t,s}function ee(r,t){let e=react.useRef({});react.useEffect(()=>{if(e.current){let s=Object.keys({...e.current,...t}),n={};s.forEach(o=>{e.current[o]!==t[o]&&(n[o]={from:e.current[o],to:t[o]});}),Object.keys(n).length&&console.log("[why-did-you-update]",r,n);}e.current=t;});}var oe=r=>{if(!styledComponents.useTheme())throw new Error("useInteractiveColor() must be used within a Styled Components ThemeProvider");return styledComponents.useTheme().mode==="dark"?polished.lighten(.2,r):polished.darken(.2,r)};
9
+
10
+ exports.useInteractiveColor = oe;
11
+ exports.useMeasure = q;
12
+ exports.useMultiselect = K;
13
+ exports.useMutationObserver = k;
14
+ exports.useMutationObserverOnce = H;
15
+ exports.useSelect = U;
16
+ exports.useTextContent = X;
17
+ exports.useWhyDidYouUpdate = ee;
18
+ //# sourceMappingURL=out.js.map
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VNZWFzdXJlL3VzZU1lYXN1cmUudHMiLCIuLi9zcmMvdXNlU2VsZWN0L3VzZVNlbGVjdC50cyIsIi4uL3NyYy91c2VNdWx0aXNlbGVjdC91c2VNdWx0aXNlbGVjdC50cyIsIi4uL3NyYy91c2VNdXRhdGlvbk9ic2VydmVyL3VzZU11dGF0aW9uT2JzZXJ2ZXIudHMiLCIuLi9zcmMvdXNlVGV4dENvbnRlbnQvdXNlVGV4dENvbnRlbnQudHMiLCIuLi9zcmMvdXNlV2h5RGlkWW91VXBkYXRlL3VzZVdoeURpZFlvdVVwZGF0ZS50cyIsIi4uL3NyYy91c2VJbnRlcmFjdGl2ZUNvbG9yL3VzZUludGVyYWN0aXZlQ29sb3IudHMiXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJpbml0aWFsQm91bmRzIiwidXNlTWVhc3VyZSIsInJlZiIsImJvdW5kcyIsInNldENvbnRlbnRSZWN0IiwicmVzaXplT2JzZXJ2ZXIiLCJlbnRyeSIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJ1c2VDYWxsYmFjayIsInVzZVNlbGVjdCIsImluaXRpYWxWYWx1ZSIsInVzZXJPbkNoYW5nZSIsInZhbHVlIiwic2V0VmFsdWUiLCJvbkNoYW5nZSIsIm5ld1ZhbHVlIiwidXNlRWZmZWN0IiwidXNlUmVkdWNlciIsInVzZVJlZiIsInZhbHVlUmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwibmV3U3RhdGUiLCJ1c2VNdWx0aXNlbGVjdCIsImRpc3BhdGNoIiwiZ2V0QXJyYXlWYWx1ZSIsImlzRmlyc3RSdW4iLCJvbkNsZWFyIiwiY2FuVXNlRE9NIiwidXNlTWVtbyIsImRlZmF1bHRDYWxsYmFjayIsIm11dGF0aW9uTGlzdCIsInVzZU11dGF0aW9uT2JzZXJ2ZXIiLCJ0YXJnZXROb2RlIiwiY29uZmlnIiwiY2FsbGJhY2siLCJvYnNlcnZlciIsInJlc3VsdCIsInVzZU11dGF0aW9uT2JzZXJ2ZXJPbmNlIiwiaXNPYnNlcnZpbmciLCJzZXRPYnNlcnZpbmciLCJ1c2VUZXh0Q29udGVudCIsImluaXRpYWwiLCJ0ZXh0Q29udGVudCIsInNldFRleHRDb250ZW50Iiwibm9kZSIsInVzZVdoeURpZFlvdVVwZGF0ZSIsIm5hbWUiLCJwcm9wcyIsInByZXZpb3VzUHJvcHMiLCJhbGxLZXlzIiwiY2hhbmdlc09iaiIsImtleSIsImRhcmtlbiIsImxpZ2h0ZW4iLCJ1c2VUaGVtZSIsInVzZUludGVyYWN0aXZlQ29sb3IiLCJ0aGVtZUNvbG9yIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFTLFlBQUFBLEVBQVUsbUJBQUFDLE1BQXVDLFFBWTFELElBQU1DLEVBQWdCLE9BQU8sT0FBTyxDQUNsQyxFQUFHLEVBQ0gsRUFBRyxFQUNILE1BQU8sRUFDUCxPQUFRLEVBQ1IsSUFBSyxFQUNMLE1BQU8sRUFDUCxPQUFRLEVBQ1IsS0FBTSxDQUNSLENBQUMsRUFFTSxTQUFTQyxFQUFxQ0MsRUFBMEIsQ0FDN0UsR0FBTSxDQUFDQyxFQUFRQyxDQUFjLEVBQzNCTixFQUFrQ0UsQ0FBYSxFQUVqRCxPQUFBRCxFQUFnQixJQUFNLENBR3BCLEdBQ0UsQ0FIY0csRUFBSSxTQUtsQixFQUFFLG1CQUFvQixRQUV0QixPQUdGLElBQU1HLEVBQWlCLElBQUksZUFBZSxDQUFDLENBQUNDLENBQUssSUFBTSxDQUNyRCxHQUFNLENBQUUsRUFBQUMsRUFBRyxFQUFBQyxFQUFHLE1BQUFDLEVBQU8sT0FBQUMsRUFBUSxJQUFBQyxFQUFLLE1BQUFDLEVBQU8sT0FBQUMsRUFBUSxLQUFBQyxDQUFLLEVBQ3BEUixFQUFNLFlBQ1JGLEVBQWUsQ0FDYixFQUFBRyxFQUNBLEVBQUFDLEVBQ0EsTUFBQUMsRUFDQSxPQUFBQyxFQUNBLElBQUFDLEVBQ0EsTUFBQUMsRUFDQSxPQUFBQyxFQUNBLEtBQUFDLENBQ0YsQ0FBQyxDQUNILENBQUMsRUFDRCxPQUFBVCxFQUFlLFFBQVFILEVBQUksT0FBTyxFQUUzQixJQUFNLENBQ1hHLEVBQWUsV0FBVyxDQUM1QixD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QUFDLENBQ0gsQ0NuQ0EsT0FBUyxVQUFBSyxFQUFRLFdBQUFDLE1BQWUsV0FDaEMsT0FBUyxZQUFBQyxNQUFnQixvQkFTekIsSUFBTUMsR0FBdUJDLEdBQStCLENBRTFELEdBQUksQ0FBQ0YsRUFBUyxFQUNaLE1BQU0sSUFBSSxNQUNSLDZFQUNGLEVBUUYsT0FKeUJBLEVBQVMsRUFDVixPQUdOLE9BQ1RELEVBQVEsR0FBS0csQ0FBVSxFQUd2QkosRUFBTyxHQUFLSSxDQUFVLENBRWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUxheW91dEVmZmVjdCwgdHlwZSBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW50ZXJmYWNlIERPTVJlY3RPYmplY3Qge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICByaWdodDogbnVtYmVyO1xuICBib3R0b206IG51bWJlcjtcbiAgbGVmdDogbnVtYmVyO1xufVxuY29uc3QgaW5pdGlhbEJvdW5kcyA9IE9iamVjdC5mcmVlemUoe1xuICB4OiAwLFxuICB5OiAwLFxuICB3aWR0aDogMCxcbiAgaGVpZ2h0OiAwLFxuICB0b3A6IDAsXG4gIHJpZ2h0OiAwLFxuICBib3R0b206IDAsXG4gIGxlZnQ6IDAsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lYXN1cmU8VEVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50PihyZWY6IFJlZk9iamVjdDxURWxlbWVudD4pIHtcbiAgY29uc3QgW2JvdW5kcywgc2V0Q29udGVudFJlY3RdID1cbiAgICB1c2VTdGF0ZTxSZWFkb25seTxET01SZWN0T2JqZWN0Pj4oaW5pdGlhbEJvdW5kcyk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gcmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoXG4gICAgICAhZWxlbWVudCB8fFxuICAgICAgLy8gaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRzIChlLmcuIEplc3QgdGVzdHMpIFJlc2l6ZU9ic2VydmVyIGlzIG5vdCBkZWZpbmVkXG4gICAgICAhKFwiUmVzaXplT2JzZXJ2ZXJcIiBpbiB3aW5kb3cpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHtcbiAgICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0IH0gPVxuICAgICAgICBlbnRyeS5jb250ZW50UmVjdDtcbiAgICAgIHNldENvbnRlbnRSZWN0KHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgdG9wLFxuICAgICAgICByaWdodCxcbiAgICAgICAgYm90dG9tLFxuICAgICAgICBsZWZ0LFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyZWYuY3VycmVudCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH07XG4gIH0sIFtyZWZdKTtcblxuICByZXR1cm4gYm91bmRzO1xufVxuIiwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5cbnR5cGUgVHlwZVNpbmdsZVNlbGVjdFByb3BzPFQgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBpbml0aWFsVmFsdWU/OiBUIHwgXCJcIjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZyB8IFQpID0+IGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTZWxlY3QgPSA8VCBleHRlbmRzIHN0cmluZz4oXG4gIHtcbiAgICBpbml0aWFsVmFsdWUgPSBcIlwiLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBvbkNoYW5nZTogdXNlck9uQ2hhbmdlID0gKCkgPT4ge30sXG4gIH06IFR5cGVTaW5nbGVTZWxlY3RQcm9wczxUPiA9IHtcbiAgICBpbml0aWFsVmFsdWU6IFwiXCIsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG9uQ2hhbmdlOiAoKSA9PiB7fSxcbiAgfVxuKSA9PiB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nIHwgVD4oaW5pdGlhbFZhbHVlKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgdXNlck9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFt1c2VyT25DaGFuZ2UsIHZhbHVlXVxuICApO1xuXG4gIHJldHVybiB7IHZhbHVlLCBvbkNoYW5nZSB9O1xufTtcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIFR5cGVNdWx0aVNlbGVjdFByb3BzPFQgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBpbml0aWFsVmFsdWU/OiBUW107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBBcnJheTxzdHJpbmcgfCBUPikgPT4gYW55O1xufTtcblxuY29uc3QgdmFsdWVSZWR1Y2VyID0gKFxuICBzdGF0ZTogU2V0PHN0cmluZz4sXG4gIGFjdGlvbjogeyB0eXBlOiBzdHJpbmc7IHZhbHVlPzogc3RyaW5nIH1cbik6IFNldDxzdHJpbmc+ID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSBuZXcgU2V0KHN0YXRlKTtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgXCJyZXNldFwiOiB7XG4gICAgICByZXR1cm4gbmV3IFNldCgpO1xuICAgIH1cbiAgICBjYXNlIFwidG9nZ2xlX2l0ZW1cIjpcbiAgICBkZWZhdWx0OiB7XG4gICAgICBpZiAoYWN0aW9uLnZhbHVlKSB7XG4gICAgICAgIGlmIChuZXdTdGF0ZS5oYXMoYWN0aW9uLnZhbHVlKSkge1xuICAgICAgICAgIG5ld1N0YXRlLmRlbGV0ZShhY3Rpb24udmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1N0YXRlLmFkZChhY3Rpb24udmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTXVsdGlzZWxlY3QgPSA8VCBleHRlbmRzIHN0cmluZz4oXG4gIHtcbiAgICBpbml0aWFsVmFsdWUgPSBbXSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgb25DaGFuZ2U6IHVzZXJPbkNoYW5nZSA9ICgpID0+IHt9LFxuICB9OiBUeXBlTXVsdGlTZWxlY3RQcm9wczxUPiA9IHtcbiAgICBpbml0aWFsVmFsdWU6IFtdLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBvbkNoYW5nZTogKCkgPT4ge30sXG4gIH1cbikgPT4ge1xuICBjb25zdCBbdmFsdWUsIGRpc3BhdGNoXSA9IHVzZVJlZHVjZXIodmFsdWVSZWR1Y2VyLCBuZXcgU2V0KGluaXRpYWxWYWx1ZSkpO1xuXG4gIGNvbnN0IGdldEFycmF5VmFsdWUgPSAodmFsdWU6IFNldDxzdHJpbmcgfCBUPikgPT5cbiAgICBBcnJheS5mcm9tPHN0cmluZyB8IFQ+KHZhbHVlKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6IFwidG9nZ2xlX2l0ZW1cIiwgdmFsdWU6IG5ld1ZhbHVlIH0pO1xuICAgIH0sXG4gICAgW2Rpc3BhdGNoXVxuICApO1xuXG4gIGNvbnN0IGlzRmlyc3RSdW4gPSB1c2VSZWYodHJ1ZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNGaXJzdFJ1bi5jdXJyZW50KSB7XG4gICAgICBpc0ZpcnN0UnVuLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdXNlck9uQ2hhbmdlKGdldEFycmF5VmFsdWUodmFsdWUpKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFt1c2VyT25DaGFuZ2UsIHZhbHVlXSk7XG5cbiAgY29uc3Qgb25DbGVhciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwicmVzZXRcIiB9KTtcbiAgfSwgW2Rpc3BhdGNoXSk7XG5cbiAgcmV0dXJuIHsgdmFsdWU6IGdldEFycmF5VmFsdWUodmFsdWUpLCBvbkNoYW5nZSwgb25DbGVhciB9O1xufTtcbiIsImltcG9ydCB7IGNhblVzZURPTSB9IGZyb20gXCJAc3Byb3V0c29jaWFsL3NlZWRzLXJlYWN0LXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIFR5cGVNdXRhdGlvbk9ic2VydmVySW5pdFJlcXVpcmVkID1cbiAgfCB7XG4gICAgICBjaGlsZExpc3Q6IHRydWU7XG4gICAgfVxuICB8IHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWU7XG4gICAgfVxuICB8IHtcbiAgICAgIGNoYXJhY3RlckRhdGE6IHRydWU7XG4gICAgfTtcblxudHlwZSBUeXBlTXV0YXRpb25PYnNlcnZlckluaXQgPSB7XG4gIHN1YnRyZWU/OiBib29sZWFuO1xuICBhdHRyaWJ1dGVPbGRWYWx1ZT86IGJvb2xlYW47XG4gIGNoYXJhY3RlckRhdGFPbGRWYWx1ZT86IGJvb2xlYW47XG4gIGF0dHJpYnV0ZUZpbHRlcj86IEFycmF5PHN0cmluZz47XG59ICYgVHlwZU11dGF0aW9uT2JzZXJ2ZXJJbml0UmVxdWlyZWQ7XG5cbnR5cGUgVHlwZU11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChcbiAgbXV0YXRpb25MaXN0PzogTXV0YXRpb25SZWNvcmRbXSxcbiAgb2JzZXJ2ZXI/OiBNdXRhdGlvbk9ic2VydmVyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4pID0+IGFueTtcblxuY29uc3QgZGVmYXVsdENhbGxiYWNrOiBUeXBlTXV0YXRpb25PYnNlcnZlckNhbGxiYWNrID0gKG11dGF0aW9uTGlzdCkgPT5cbiAgbXV0YXRpb25MaXN0O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTXV0YXRpb25PYnNlcnZlcihcbiAgdGFyZ2V0Tm9kZTogTm9kZSB8IG51bGwsXG4gIGNvbmZpZzogVHlwZU11dGF0aW9uT2JzZXJ2ZXJJbml0LFxuICBjYWxsYmFjazogVHlwZU11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IGRlZmF1bHRDYWxsYmFja1xuKSB7XG4gIGlmICghY2FuVXNlRE9NKCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gIGNvbnN0IG9ic2VydmVyID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uTGlzdCwgb2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2sobXV0YXRpb25MaXN0LCBvYnNlcnZlcik7XG4gICAgICAgIHNldFZhbHVlKHJlc3VsdCk7XG4gICAgICB9KSxcbiAgICBbY2FsbGJhY2tdXG4gICk7XG4gIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKHRhcmdldE5vZGUsIGNvbmZpZyk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW3RhcmdldE5vZGUsIGNvbmZpZywgb2JzZXJ2ZXJdKTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNdXRhdGlvbk9ic2VydmVyT25jZShcbiAgdGFyZ2V0Tm9kZTogTm9kZSB8IG51bGwsXG4gIGNvbmZpZzogVHlwZU11dGF0aW9uT2JzZXJ2ZXJJbml0LFxuICBjYWxsYmFjazogVHlwZU11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja1xuKSB7XG4gIGNvbnN0IFtpc09ic2VydmluZywgc2V0T2JzZXJ2aW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBub2RlID0gaXNPYnNlcnZpbmcgPyB0YXJnZXROb2RlIDogbnVsbDtcbiAgY29uc3QgdmFsdWUgPSB1c2VNdXRhdGlvbk9ic2VydmVyKG5vZGUsIGNvbmZpZywgY2FsbGJhY2spO1xuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpc09ic2VydmluZykge1xuICAgIHNldE9ic2VydmluZyhmYWxzZSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCB0eXBlIHRleHRDb250ZW50UmVmID0gKChub2RlOiBOb2RlKSA9PiB2b2lkKSAmIHsgY3VycmVudD86IHN0cmluZyB9O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRleHRDb250ZW50KGluaXRpYWw6IHN0cmluZykge1xuICBjb25zdCBbdGV4dENvbnRlbnQsIHNldFRleHRDb250ZW50XSA9IHVzZVN0YXRlKGluaXRpYWwpO1xuXG4gIGNvbnN0IHJlZjogdGV4dENvbnRlbnRSZWYgPSB1c2VDYWxsYmFjaygobm9kZTogTm9kZSkgPT4ge1xuICAgIGlmIChub2RlICYmIG5vZGUudGV4dENvbnRlbnQgIT09IG51bGwpIHtcbiAgICAgIHNldFRleHRDb250ZW50KG5vZGUudGV4dENvbnRlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJlZi5jdXJyZW50ID0gdGV4dENvbnRlbnQ7XG4gIHJldHVybiByZWY7XG59XG4iLCJpbXBvcnQgeyB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlV2h5RGlkWW91VXBkYXRlKG5hbWU6IHN0cmluZywgcHJvcHM6IG9iamVjdCkge1xuICAvLyBHZXQgYSBtdXRhYmxlIHJlZiBvYmplY3Qgd2hlcmUgd2UgY2FuIHN0b3JlIHByb3BzIC4uLlxuICAvLyAuLi4gZm9yIGNvbXBhcmlzb24gbmV4dCB0aW1lIHRoaXMgaG9vayBydW5zLlxuICBjb25zdCBwcmV2aW91c1Byb3BzID0gdXNlUmVmKHt9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcmV2aW91c1Byb3BzLmN1cnJlbnQpIHtcbiAgICAgIC8vIEdldCBhbGwga2V5cyBmcm9tIHByZXZpb3VzIGFuZCBjdXJyZW50IHByb3BzXG4gICAgICBjb25zdCBhbGxLZXlzID0gT2JqZWN0LmtleXMoeyAuLi5wcmV2aW91c1Byb3BzLmN1cnJlbnQsIC4uLnByb3BzIH0pO1xuICAgICAgLy8gVXNlIHRoaXMgb2JqZWN0IHRvIGtlZXAgdHJhY2sgb2YgY2hhbmdlZCBwcm9wc1xuICAgICAgY29uc3QgY2hhbmdlc09iaiA9IHt9O1xuICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGtleXNcbiAgICAgIGFsbEtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIC8vIElmIHByZXZpb3VzIGlzIGRpZmZlcmVudCBmcm9tIGN1cnJlbnRcbiAgICAgICAgaWYgKHByZXZpb3VzUHJvcHMuY3VycmVudFtrZXldICE9PSBwcm9wc1trZXldKSB7XG4gICAgICAgICAgLy8gQWRkIHRvIGNoYW5nZXNPYmpcbiAgICAgICAgICBjaGFuZ2VzT2JqW2tleV0gPSB7XG4gICAgICAgICAgICBmcm9tOiBwcmV2aW91c1Byb3BzLmN1cnJlbnRba2V5XSxcbiAgICAgICAgICAgIHRvOiBwcm9wc1trZXldLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZiBjaGFuZ2VzT2JqIG5vdCBlbXB0eSB0aGVuIG91dHB1dCB0byBjb25zb2xlXG4gICAgICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlc09iaikubGVuZ3RoKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3doeS1kaWQteW91LXVwZGF0ZV1cIiwgbmFtZSwgY2hhbmdlc09iaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluYWxseSB1cGRhdGUgcHJldmlvdXNQcm9wcyB3aXRoIGN1cnJlbnQgcHJvcHMgZm9yIG5leHQgaG9vayBjYWxsXG4gICAgcHJldmlvdXNQcm9wcy5jdXJyZW50ID0gcHJvcHM7XG4gIH0pO1xufVxuIiwiaW1wb3J0IHsgZGFya2VuLCBsaWdodGVuIH0gZnJvbSBcInBvbGlzaGVkXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJzdHlsZWQtY29tcG9uZW50c1wiO1xuaW1wb3J0IHR5cGUgeyBUeXBlVGhlbWUgfSBmcm9tIFwiQHNwcm91dHNvY2lhbC9zZWVkcy1yZWFjdC10aGVtZVwiO1xuXG4vKipcbiAqIFRoZSB1c2VJbnRlcmFjdGl2ZUNvbG9yIGhvb2sgaGFzIGNvbnRleHQgb2YgdGhlbWUgbW9kZSAobGlnaHQgb3IgZGFyaylcbiAqIGFuZCBjYW4gYmUgdXNlZCB0byBsaWdodGVuIG9yIGRhcmtlbiBhIGNvbG9yIGR5bmFtaWNhbGx5XG4gKlxuICogbm90ZTogY29sb3JzIGFyZSBsaW1pdGVkIHRvIG91ciB0aGVtZSBjb2xvcnNcbiAqL1xuY29uc3QgdXNlSW50ZXJhY3RpdmVDb2xvciA9ICh0aGVtZUNvbG9yOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAvLyBUaHJvdyBlcnJvciBpZiB1c2VkIG91dHNpZGUgb2YgYSBUaGVtZVByb3ZpZGVyIChzdHlsZWQtY29tcG9uZW50cylcbiAgaWYgKCF1c2VUaGVtZSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJ1c2VJbnRlcmFjdGl2ZUNvbG9yKCkgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFN0eWxlZCBDb21wb25lbnRzIFRoZW1lUHJvdmlkZXJcIlxuICAgICk7XG4gIH1cblxuICAvLyBHZXQgdGhlIGN1cnJlbnQgdGhlbWUgbW9kZSBpZS4gJ2xpZ2h0JyBvciAnZGFyaydcbiAgY29uc3QgdGhlbWU6IFR5cGVUaGVtZSA9IHVzZVRoZW1lKCkgYXMgVHlwZVRoZW1lO1xuICBjb25zdCB0aGVtZU1vZGUgPSB0aGVtZS5tb2RlO1xuXG4gIC8vIElmIHRoZSB0aGVtZSBtb2RlIGlzIGRhcmssIHJldHVybiBhIGxpZ2h0ZW5lZCB2ZXJzaW9uIG9mIHRoZSB0aGVtZVZhbHVlXG4gIGlmICh0aGVtZU1vZGUgPT09IFwiZGFya1wiKSB7XG4gICAgcmV0dXJuIGxpZ2h0ZW4oMC4yLCB0aGVtZUNvbG9yKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiB0aGUgdGhlbWUgbW9kZSBpcyBsaWdodCwgcmV0dXJuIGEgZGFya2VuZWQgdmVyc2lvbiBvZiB0aGUgdGhlbWVWYWx1ZVxuICAgIHJldHVybiBkYXJrZW4oMC4yLCB0aGVtZUNvbG9yKTtcbiAgfVxufTtcblxuZXhwb3J0IHsgdXNlSW50ZXJhY3RpdmVDb2xvciB9O1xuIl19
package/dist/index.mjs ADDED
@@ -0,0 +1,10 @@
1
+ import { useState, useLayoutEffect, useCallback, useReducer, useRef, useEffect, useMemo } from 'react';
2
+ import { canUseDOM } from '@sproutsocial/seeds-react-utilities';
3
+ import { lighten, darken } from 'polished';
4
+ import { useTheme } from 'styled-components';
5
+
6
+ var v=Object.freeze({x:0,y:0,width:0,height:0,top:0,right:0,bottom:0,left:0});function q(r){let[t,e]=useState(v);return useLayoutEffect(()=>{if(!r.current||!("ResizeObserver"in window))return;let n=new ResizeObserver(([o])=>{let{x:u,y:a,width:i,height:p,top:m,right:b,bottom:d,left:g}=o.contentRect;e({x:u,y:a,width:i,height:p,top:m,right:b,bottom:d,left:g});});return n.observe(r.current),()=>{n.disconnect();}},[r]),t}var U=({initialValue:r="",onChange:t=()=>{}}={initialValue:"",onChange:()=>{}})=>{let[e,s]=useState(r),n=useCallback(o=>{o!==e&&(s(o),t(o));},[t,e]);return {value:e,onChange:n}};var R=(r,t)=>{let e=new Set(r);switch(t.type){case"reset":return new Set;case"toggle_item":default:return t.value&&(e.has(t.value)?e.delete(t.value):e.add(t.value)),e}},K=({initialValue:r=[],onChange:t=()=>{}}={initialValue:[],onChange:()=>{}})=>{let[e,s]=useReducer(R,new Set(r)),n=i=>Array.from(i),o=useCallback(i=>{s({type:"toggle_item",value:i});},[s]),u=useRef(!0);useEffect(()=>{if(u.current){u.current=!1;return}t(n(e));},[t,e]);let a=useCallback(()=>{s({type:"reset"});},[s]);return {value:n(e),onChange:o,onClear:a}};var E=r=>r;function k(r,t,e=E){if(!canUseDOM())return;let[s,n]=useState(void 0),o=useMemo(()=>new MutationObserver((u,a)=>{let i=e(u,a);n(i);}),[e]);return useEffect(()=>{if(r)return o.observe(r,t),()=>{o.disconnect();}},[r,t,o]),s}function H(r,t,e){let[s,n]=useState(!0),u=k(s?r:null,t,e);return u!==void 0&&s&&n(!1),u}function X(r){let[t,e]=useState(r),s=useCallback(n=>{n&&n.textContent!==null&&e(n.textContent);},[]);return s.current=t,s}function ee(r,t){let e=useRef({});useEffect(()=>{if(e.current){let s=Object.keys({...e.current,...t}),n={};s.forEach(o=>{e.current[o]!==t[o]&&(n[o]={from:e.current[o],to:t[o]});}),Object.keys(n).length&&console.log("[why-did-you-update]",r,n);}e.current=t;});}var oe=r=>{if(!useTheme())throw new Error("useInteractiveColor() must be used within a Styled Components ThemeProvider");return useTheme().mode==="dark"?lighten(.2,r):darken(.2,r)};
7
+
8
+ export { oe as useInteractiveColor, q as useMeasure, K as useMultiselect, k as useMutationObserver, H as useMutationObserverOnce, U as useSelect, X as useTextContent, ee as useWhyDidYouUpdate };
9
+ //# sourceMappingURL=out.js.map
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VNZWFzdXJlL3VzZU1lYXN1cmUudHMiLCIuLi9zcmMvdXNlU2VsZWN0L3VzZVNlbGVjdC50cyIsIi4uL3NyYy91c2VNdWx0aXNlbGVjdC91c2VNdWx0aXNlbGVjdC50cyIsIi4uL3NyYy91c2VNdXRhdGlvbk9ic2VydmVyL3VzZU11dGF0aW9uT2JzZXJ2ZXIudHMiLCIuLi9zcmMvdXNlVGV4dENvbnRlbnQvdXNlVGV4dENvbnRlbnQudHMiLCIuLi9zcmMvdXNlV2h5RGlkWW91VXBkYXRlL3VzZVdoeURpZFlvdVVwZGF0ZS50cyIsIi4uL3NyYy91c2VJbnRlcmFjdGl2ZUNvbG9yL3VzZUludGVyYWN0aXZlQ29sb3IudHMiXSwibmFtZXMiOlsidXNlU3RhdGUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJpbml0aWFsQm91bmRzIiwidXNlTWVhc3VyZSIsInJlZiIsImJvdW5kcyIsInNldENvbnRlbnRSZWN0IiwicmVzaXplT2JzZXJ2ZXIiLCJlbnRyeSIsIngiLCJ5Iiwid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJ1c2VDYWxsYmFjayIsInVzZVNlbGVjdCIsImluaXRpYWxWYWx1ZSIsInVzZXJPbkNoYW5nZSIsInZhbHVlIiwic2V0VmFsdWUiLCJvbkNoYW5nZSIsIm5ld1ZhbHVlIiwidXNlRWZmZWN0IiwidXNlUmVkdWNlciIsInVzZVJlZiIsInZhbHVlUmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwibmV3U3RhdGUiLCJ1c2VNdWx0aXNlbGVjdCIsImRpc3BhdGNoIiwiZ2V0QXJyYXlWYWx1ZSIsImlzRmlyc3RSdW4iLCJvbkNsZWFyIiwiY2FuVXNlRE9NIiwidXNlTWVtbyIsImRlZmF1bHRDYWxsYmFjayIsIm11dGF0aW9uTGlzdCIsInVzZU11dGF0aW9uT2JzZXJ2ZXIiLCJ0YXJnZXROb2RlIiwiY29uZmlnIiwiY2FsbGJhY2siLCJvYnNlcnZlciIsInJlc3VsdCIsInVzZU11dGF0aW9uT2JzZXJ2ZXJPbmNlIiwiaXNPYnNlcnZpbmciLCJzZXRPYnNlcnZpbmciLCJ1c2VUZXh0Q29udGVudCIsImluaXRpYWwiLCJ0ZXh0Q29udGVudCIsInNldFRleHRDb250ZW50Iiwibm9kZSIsInVzZVdoeURpZFlvdVVwZGF0ZSIsIm5hbWUiLCJwcm9wcyIsInByZXZpb3VzUHJvcHMiLCJhbGxLZXlzIiwiY2hhbmdlc09iaiIsImtleSIsImRhcmtlbiIsImxpZ2h0ZW4iLCJ1c2VUaGVtZSIsInVzZUludGVyYWN0aXZlQ29sb3IiLCJ0aGVtZUNvbG9yIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFTLFlBQUFBLEVBQVUsbUJBQUFDLE1BQXVDLFFBWTFELElBQU1DLEVBQWdCLE9BQU8sT0FBTyxDQUNsQyxFQUFHLEVBQ0gsRUFBRyxFQUNILE1BQU8sRUFDUCxPQUFRLEVBQ1IsSUFBSyxFQUNMLE1BQU8sRUFDUCxPQUFRLEVBQ1IsS0FBTSxDQUNSLENBQUMsRUFFTSxTQUFTQyxFQUFxQ0MsRUFBMEIsQ0FDN0UsR0FBTSxDQUFDQyxFQUFRQyxDQUFjLEVBQzNCTixFQUFrQ0UsQ0FBYSxFQUVqRCxPQUFBRCxFQUFnQixJQUFNLENBR3BCLEdBQ0UsQ0FIY0csRUFBSSxTQUtsQixFQUFFLG1CQUFvQixRQUV0QixPQUdGLElBQU1HLEVBQWlCLElBQUksZUFBZSxDQUFDLENBQUNDLENBQUssSUFBTSxDQUNyRCxHQUFNLENBQUUsRUFBQUMsRUFBRyxFQUFBQyxFQUFHLE1BQUFDLEVBQU8sT0FBQUMsRUFBUSxJQUFBQyxFQUFLLE1BQUFDLEVBQU8sT0FBQUMsRUFBUSxLQUFBQyxDQUFLLEVBQ3BEUixFQUFNLFlBQ1JGLEVBQWUsQ0FDYixFQUFBRyxFQUNBLEVBQUFDLEVBQ0EsTUFBQUMsRUFDQSxPQUFBQyxFQUNBLElBQUFDLEVBQ0EsTUFBQUMsRUFDQSxPQUFBQyxFQUNBLEtBQUFDLENBQ0YsQ0FBQyxDQUNILENBQUMsRUFDRCxPQUFBVCxFQUFlLFFBQVFILEVBQUksT0FBTyxFQUUzQixJQUFNLENBQ1hHLEVBQWUsV0FBVyxDQUM1QixD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QUFDLENBQ0gsQ0NuQ0EsT0FBUyxVQUFBSyxFQUFRLFdBQUFDLE1BQWUsV0FDaEMsT0FBUyxZQUFBQyxNQUFnQixvQkFTekIsSUFBTUMsR0FBdUJDLEdBQStCLENBRTFELEdBQUksQ0FBQ0YsRUFBUyxFQUNaLE1BQU0sSUFBSSxNQUNSLDZFQUNGLEVBUUYsT0FKeUJBLEVBQVMsRUFDVixPQUdOLE9BQ1RELEVBQVEsR0FBS0csQ0FBVSxFQUd2QkosRUFBTyxHQUFLSSxDQUFVLENBRWpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUxheW91dEVmZmVjdCwgdHlwZSBSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW50ZXJmYWNlIERPTVJlY3RPYmplY3Qge1xuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgd2lkdGg6IG51bWJlcjtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIHRvcDogbnVtYmVyO1xuICByaWdodDogbnVtYmVyO1xuICBib3R0b206IG51bWJlcjtcbiAgbGVmdDogbnVtYmVyO1xufVxuY29uc3QgaW5pdGlhbEJvdW5kcyA9IE9iamVjdC5mcmVlemUoe1xuICB4OiAwLFxuICB5OiAwLFxuICB3aWR0aDogMCxcbiAgaGVpZ2h0OiAwLFxuICB0b3A6IDAsXG4gIHJpZ2h0OiAwLFxuICBib3R0b206IDAsXG4gIGxlZnQ6IDAsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU1lYXN1cmU8VEVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50PihyZWY6IFJlZk9iamVjdDxURWxlbWVudD4pIHtcbiAgY29uc3QgW2JvdW5kcywgc2V0Q29udGVudFJlY3RdID1cbiAgICB1c2VTdGF0ZTxSZWFkb25seTxET01SZWN0T2JqZWN0Pj4oaW5pdGlhbEJvdW5kcyk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gcmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoXG4gICAgICAhZWxlbWVudCB8fFxuICAgICAgLy8gaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRzIChlLmcuIEplc3QgdGVzdHMpIFJlc2l6ZU9ic2VydmVyIGlzIG5vdCBkZWZpbmVkXG4gICAgICAhKFwiUmVzaXplT2JzZXJ2ZXJcIiBpbiB3aW5kb3cpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHtcbiAgICAgIGNvbnN0IHsgeCwgeSwgd2lkdGgsIGhlaWdodCwgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0IH0gPVxuICAgICAgICBlbnRyeS5jb250ZW50UmVjdDtcbiAgICAgIHNldENvbnRlbnRSZWN0KHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgdG9wLFxuICAgICAgICByaWdodCxcbiAgICAgICAgYm90dG9tLFxuICAgICAgICBsZWZ0LFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShyZWYuY3VycmVudCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH07XG4gIH0sIFtyZWZdKTtcblxuICByZXR1cm4gYm91bmRzO1xufVxuIiwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5cbnR5cGUgVHlwZVNpbmdsZVNlbGVjdFByb3BzPFQgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBpbml0aWFsVmFsdWU/OiBUIHwgXCJcIjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgb25DaGFuZ2U/OiAodmFsdWU6IHN0cmluZyB8IFQpID0+IGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTZWxlY3QgPSA8VCBleHRlbmRzIHN0cmluZz4oXG4gIHtcbiAgICBpbml0aWFsVmFsdWUgPSBcIlwiLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBvbkNoYW5nZTogdXNlck9uQ2hhbmdlID0gKCkgPT4ge30sXG4gIH06IFR5cGVTaW5nbGVTZWxlY3RQcm9wczxUPiA9IHtcbiAgICBpbml0aWFsVmFsdWU6IFwiXCIsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIG9uQ2hhbmdlOiAoKSA9PiB7fSxcbiAgfVxuKSA9PiB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGU8c3RyaW5nIHwgVD4oaW5pdGlhbFZhbHVlKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAobmV3VmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgIHNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgdXNlck9uQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFt1c2VyT25DaGFuZ2UsIHZhbHVlXVxuICApO1xuXG4gIHJldHVybiB7IHZhbHVlLCBvbkNoYW5nZSB9O1xufTtcbiIsImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZHVjZXIsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIFR5cGVNdWx0aVNlbGVjdFByb3BzPFQgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBpbml0aWFsVmFsdWU/OiBUW107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIG9uQ2hhbmdlPzogKHZhbHVlOiBBcnJheTxzdHJpbmcgfCBUPikgPT4gYW55O1xufTtcblxuY29uc3QgdmFsdWVSZWR1Y2VyID0gKFxuICBzdGF0ZTogU2V0PHN0cmluZz4sXG4gIGFjdGlvbjogeyB0eXBlOiBzdHJpbmc7IHZhbHVlPzogc3RyaW5nIH1cbik6IFNldDxzdHJpbmc+ID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSBuZXcgU2V0KHN0YXRlKTtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgXCJyZXNldFwiOiB7XG4gICAgICByZXR1cm4gbmV3IFNldCgpO1xuICAgIH1cbiAgICBjYXNlIFwidG9nZ2xlX2l0ZW1cIjpcbiAgICBkZWZhdWx0OiB7XG4gICAgICBpZiAoYWN0aW9uLnZhbHVlKSB7XG4gICAgICAgIGlmIChuZXdTdGF0ZS5oYXMoYWN0aW9uLnZhbHVlKSkge1xuICAgICAgICAgIG5ld1N0YXRlLmRlbGV0ZShhY3Rpb24udmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1N0YXRlLmFkZChhY3Rpb24udmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3U3RhdGU7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTXVsdGlzZWxlY3QgPSA8VCBleHRlbmRzIHN0cmluZz4oXG4gIHtcbiAgICBpbml0aWFsVmFsdWUgPSBbXSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gICAgb25DaGFuZ2U6IHVzZXJPbkNoYW5nZSA9ICgpID0+IHt9LFxuICB9OiBUeXBlTXVsdGlTZWxlY3RQcm9wczxUPiA9IHtcbiAgICBpbml0aWFsVmFsdWU6IFtdLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgICBvbkNoYW5nZTogKCkgPT4ge30sXG4gIH1cbikgPT4ge1xuICBjb25zdCBbdmFsdWUsIGRpc3BhdGNoXSA9IHVzZVJlZHVjZXIodmFsdWVSZWR1Y2VyLCBuZXcgU2V0KGluaXRpYWxWYWx1ZSkpO1xuXG4gIGNvbnN0IGdldEFycmF5VmFsdWUgPSAodmFsdWU6IFNldDxzdHJpbmcgfCBUPikgPT5cbiAgICBBcnJheS5mcm9tPHN0cmluZyB8IFQ+KHZhbHVlKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6IFwidG9nZ2xlX2l0ZW1cIiwgdmFsdWU6IG5ld1ZhbHVlIH0pO1xuICAgIH0sXG4gICAgW2Rpc3BhdGNoXVxuICApO1xuXG4gIGNvbnN0IGlzRmlyc3RSdW4gPSB1c2VSZWYodHJ1ZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNGaXJzdFJ1bi5jdXJyZW50KSB7XG4gICAgICBpc0ZpcnN0UnVuLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdXNlck9uQ2hhbmdlKGdldEFycmF5VmFsdWUodmFsdWUpKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFt1c2VyT25DaGFuZ2UsIHZhbHVlXSk7XG5cbiAgY29uc3Qgb25DbGVhciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IFwicmVzZXRcIiB9KTtcbiAgfSwgW2Rpc3BhdGNoXSk7XG5cbiAgcmV0dXJuIHsgdmFsdWU6IGdldEFycmF5VmFsdWUodmFsdWUpLCBvbkNoYW5nZSwgb25DbGVhciB9O1xufTtcbiIsImltcG9ydCB7IGNhblVzZURPTSB9IGZyb20gXCJAc3Byb3V0c29jaWFsL3NlZWRzLXJlYWN0LXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG50eXBlIFR5cGVNdXRhdGlvbk9ic2VydmVySW5pdFJlcXVpcmVkID1cbiAgfCB7XG4gICAgICBjaGlsZExpc3Q6IHRydWU7XG4gICAgfVxuICB8IHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWU7XG4gICAgfVxuICB8IHtcbiAgICAgIGNoYXJhY3RlckRhdGE6IHRydWU7XG4gICAgfTtcblxudHlwZSBUeXBlTXV0YXRpb25PYnNlcnZlckluaXQgPSB7XG4gIHN1YnRyZWU/OiBib29sZWFuO1xuICBhdHRyaWJ1dGVPbGRWYWx1ZT86IGJvb2xlYW47XG4gIGNoYXJhY3RlckRhdGFPbGRWYWx1ZT86IGJvb2xlYW47XG4gIGF0dHJpYnV0ZUZpbHRlcj86IEFycmF5PHN0cmluZz47XG59ICYgVHlwZU11dGF0aW9uT2JzZXJ2ZXJJbml0UmVxdWlyZWQ7XG5cbnR5cGUgVHlwZU11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChcbiAgbXV0YXRpb25MaXN0PzogTXV0YXRpb25SZWNvcmRbXSxcbiAgb2JzZXJ2ZXI/OiBNdXRhdGlvbk9ic2VydmVyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4pID0+IGFueTtcblxuY29uc3QgZGVmYXVsdENhbGxiYWNrOiBUeXBlTXV0YXRpb25PYnNlcnZlckNhbGxiYWNrID0gKG11dGF0aW9uTGlzdCkgPT5cbiAgbXV0YXRpb25MaXN0O1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTXV0YXRpb25PYnNlcnZlcihcbiAgdGFyZ2V0Tm9kZTogTm9kZSB8IG51bGwsXG4gIGNvbmZpZzogVHlwZU11dGF0aW9uT2JzZXJ2ZXJJbml0LFxuICBjYWxsYmFjazogVHlwZU11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IGRlZmF1bHRDYWxsYmFja1xuKSB7XG4gIGlmICghY2FuVXNlRE9NKCkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICovXG4gIGNvbnN0IG9ic2VydmVyID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9uTGlzdCwgb2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2sobXV0YXRpb25MaXN0LCBvYnNlcnZlcik7XG4gICAgICAgIHNldFZhbHVlKHJlc3VsdCk7XG4gICAgICB9KSxcbiAgICBbY2FsbGJhY2tdXG4gICk7XG4gIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0YXJnZXROb2RlKSB7XG4gICAgICBvYnNlcnZlci5vYnNlcnZlKHRhcmdldE5vZGUsIGNvbmZpZyk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSwgW3RhcmdldE5vZGUsIGNvbmZpZywgb2JzZXJ2ZXJdKTtcblxuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNdXRhdGlvbk9ic2VydmVyT25jZShcbiAgdGFyZ2V0Tm9kZTogTm9kZSB8IG51bGwsXG4gIGNvbmZpZzogVHlwZU11dGF0aW9uT2JzZXJ2ZXJJbml0LFxuICBjYWxsYmFjazogVHlwZU11dGF0aW9uT2JzZXJ2ZXJDYWxsYmFja1xuKSB7XG4gIGNvbnN0IFtpc09ic2VydmluZywgc2V0T2JzZXJ2aW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBub2RlID0gaXNPYnNlcnZpbmcgPyB0YXJnZXROb2RlIDogbnVsbDtcbiAgY29uc3QgdmFsdWUgPSB1c2VNdXRhdGlvbk9ic2VydmVyKG5vZGUsIGNvbmZpZywgY2FsbGJhY2spO1xuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiBpc09ic2VydmluZykge1xuICAgIHNldE9ic2VydmluZyhmYWxzZSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuIiwiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCB0eXBlIHRleHRDb250ZW50UmVmID0gKChub2RlOiBOb2RlKSA9PiB2b2lkKSAmIHsgY3VycmVudD86IHN0cmluZyB9O1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVRleHRDb250ZW50KGluaXRpYWw6IHN0cmluZykge1xuICBjb25zdCBbdGV4dENvbnRlbnQsIHNldFRleHRDb250ZW50XSA9IHVzZVN0YXRlKGluaXRpYWwpO1xuXG4gIGNvbnN0IHJlZjogdGV4dENvbnRlbnRSZWYgPSB1c2VDYWxsYmFjaygobm9kZTogTm9kZSkgPT4ge1xuICAgIGlmIChub2RlICYmIG5vZGUudGV4dENvbnRlbnQgIT09IG51bGwpIHtcbiAgICAgIHNldFRleHRDb250ZW50KG5vZGUudGV4dENvbnRlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJlZi5jdXJyZW50ID0gdGV4dENvbnRlbnQ7XG4gIHJldHVybiByZWY7XG59XG4iLCJpbXBvcnQgeyB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlV2h5RGlkWW91VXBkYXRlKG5hbWU6IHN0cmluZywgcHJvcHM6IG9iamVjdCkge1xuICAvLyBHZXQgYSBtdXRhYmxlIHJlZiBvYmplY3Qgd2hlcmUgd2UgY2FuIHN0b3JlIHByb3BzIC4uLlxuICAvLyAuLi4gZm9yIGNvbXBhcmlzb24gbmV4dCB0aW1lIHRoaXMgaG9vayBydW5zLlxuICBjb25zdCBwcmV2aW91c1Byb3BzID0gdXNlUmVmKHt9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcmV2aW91c1Byb3BzLmN1cnJlbnQpIHtcbiAgICAgIC8vIEdldCBhbGwga2V5cyBmcm9tIHByZXZpb3VzIGFuZCBjdXJyZW50IHByb3BzXG4gICAgICBjb25zdCBhbGxLZXlzID0gT2JqZWN0LmtleXMoeyAuLi5wcmV2aW91c1Byb3BzLmN1cnJlbnQsIC4uLnByb3BzIH0pO1xuICAgICAgLy8gVXNlIHRoaXMgb2JqZWN0IHRvIGtlZXAgdHJhY2sgb2YgY2hhbmdlZCBwcm9wc1xuICAgICAgY29uc3QgY2hhbmdlc09iaiA9IHt9O1xuICAgICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGtleXNcbiAgICAgIGFsbEtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIC8vIElmIHByZXZpb3VzIGlzIGRpZmZlcmVudCBmcm9tIGN1cnJlbnRcbiAgICAgICAgaWYgKHByZXZpb3VzUHJvcHMuY3VycmVudFtrZXldICE9PSBwcm9wc1trZXldKSB7XG4gICAgICAgICAgLy8gQWRkIHRvIGNoYW5nZXNPYmpcbiAgICAgICAgICBjaGFuZ2VzT2JqW2tleV0gPSB7XG4gICAgICAgICAgICBmcm9tOiBwcmV2aW91c1Byb3BzLmN1cnJlbnRba2V5XSxcbiAgICAgICAgICAgIHRvOiBwcm9wc1trZXldLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBJZiBjaGFuZ2VzT2JqIG5vdCBlbXB0eSB0aGVuIG91dHB1dCB0byBjb25zb2xlXG4gICAgICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlc09iaikubGVuZ3RoKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUubG9nKFwiW3doeS1kaWQteW91LXVwZGF0ZV1cIiwgbmFtZSwgY2hhbmdlc09iaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmluYWxseSB1cGRhdGUgcHJldmlvdXNQcm9wcyB3aXRoIGN1cnJlbnQgcHJvcHMgZm9yIG5leHQgaG9vayBjYWxsXG4gICAgcHJldmlvdXNQcm9wcy5jdXJyZW50ID0gcHJvcHM7XG4gIH0pO1xufVxuIiwiaW1wb3J0IHsgZGFya2VuLCBsaWdodGVuIH0gZnJvbSBcInBvbGlzaGVkXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJzdHlsZWQtY29tcG9uZW50c1wiO1xuaW1wb3J0IHR5cGUgeyBUeXBlVGhlbWUgfSBmcm9tIFwiQHNwcm91dHNvY2lhbC9zZWVkcy1yZWFjdC10aGVtZVwiO1xuXG4vKipcbiAqIFRoZSB1c2VJbnRlcmFjdGl2ZUNvbG9yIGhvb2sgaGFzIGNvbnRleHQgb2YgdGhlbWUgbW9kZSAobGlnaHQgb3IgZGFyaylcbiAqIGFuZCBjYW4gYmUgdXNlZCB0byBsaWdodGVuIG9yIGRhcmtlbiBhIGNvbG9yIGR5bmFtaWNhbGx5XG4gKlxuICogbm90ZTogY29sb3JzIGFyZSBsaW1pdGVkIHRvIG91ciB0aGVtZSBjb2xvcnNcbiAqL1xuY29uc3QgdXNlSW50ZXJhY3RpdmVDb2xvciA9ICh0aGVtZUNvbG9yOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAvLyBUaHJvdyBlcnJvciBpZiB1c2VkIG91dHNpZGUgb2YgYSBUaGVtZVByb3ZpZGVyIChzdHlsZWQtY29tcG9uZW50cylcbiAgaWYgKCF1c2VUaGVtZSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJ1c2VJbnRlcmFjdGl2ZUNvbG9yKCkgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFN0eWxlZCBDb21wb25lbnRzIFRoZW1lUHJvdmlkZXJcIlxuICAgICk7XG4gIH1cblxuICAvLyBHZXQgdGhlIGN1cnJlbnQgdGhlbWUgbW9kZSBpZS4gJ2xpZ2h0JyBvciAnZGFyaydcbiAgY29uc3QgdGhlbWU6IFR5cGVUaGVtZSA9IHVzZVRoZW1lKCkgYXMgVHlwZVRoZW1lO1xuICBjb25zdCB0aGVtZU1vZGUgPSB0aGVtZS5tb2RlO1xuXG4gIC8vIElmIHRoZSB0aGVtZSBtb2RlIGlzIGRhcmssIHJldHVybiBhIGxpZ2h0ZW5lZCB2ZXJzaW9uIG9mIHRoZSB0aGVtZVZhbHVlXG4gIGlmICh0aGVtZU1vZGUgPT09IFwiZGFya1wiKSB7XG4gICAgcmV0dXJuIGxpZ2h0ZW4oMC4yLCB0aGVtZUNvbG9yKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiB0aGUgdGhlbWUgbW9kZSBpcyBsaWdodCwgcmV0dXJuIGEgZGFya2VuZWQgdmVyc2lvbiBvZiB0aGUgdGhlbWVWYWx1ZVxuICAgIHJldHVybiBkYXJrZW4oMC4yLCB0aGVtZUNvbG9yKTtcbiAgfVxufTtcblxuZXhwb3J0IHsgdXNlSW50ZXJhY3RpdmVDb2xvciB9O1xuIl19
package/package.json CHANGED
@@ -1,21 +1,17 @@
1
1
  {
2
2
  "name": "@sproutsocial/seeds-react-hooks",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "description": "Seeds React Hooks",
5
- "main": "commonjs/index.js",
6
- "module": "lib/index.mjs",
7
- "types": "dist/types/index.d.ts",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
8
  "author": "Sprout Social, Inc.",
9
9
  "license": "MIT",
10
10
  "files": [
11
- "__flow__",
12
- "commonjs",
13
- "dist",
14
- "lib"
11
+ "dist"
15
12
  ],
16
13
  "scripts": {
17
- "build": "yarn build:ts-declarations && tsx scripts/build.ts",
18
- "build:ts-declarations": "tsc --project tsconfig.build.json && tsc-alias -p tsconfig.build.json"
14
+ "build": "tsup"
19
15
  },
20
16
  "dependencies": {
21
17
  "@sproutsocial/seeds-react-utilities": "*",
@@ -24,13 +20,12 @@
24
20
  "devDependencies": {
25
21
  "@types/styled-components": "^5.1.26",
26
22
  "@sproutsocial/eslint-config-seeds": "*",
27
- "@sproutsocial/seeds-build-flow": "*",
28
23
  "@sproutsocial/seeds-react-theme": "*",
29
- "flow-bin": "0.131.0",
30
24
  "react": "^17.0.2",
31
25
  "styled-components": "^5.2.3",
32
26
  "typescript": "^5.1.6",
33
- "tsx": "3.13.0"
27
+ "tsx": "3.13.0",
28
+ "tsup": "^8.0.2"
34
29
  },
35
30
  "peerDependencies": {
36
31
  "styled-components": "^5.2.3"
@@ -1,8 +0,0 @@
1
- // @flow
2
-
3
- export * from "./useSelect/useSelect";
4
- export * from "./useMultiselect/useMultiselect";
5
- export * from "./useMutationObserver/useMutationObserver";
6
- export * from "./useTextContent/useTextContent";
7
- export * from "./useWhyDidYouUpdate/useWhyDidYouUpdate";
8
- export * from "./useInteractiveColor/useInteractiveColor";
package/__flow__/index.js DELETED
@@ -1,3 +0,0 @@
1
- // @flow
2
- export * from './index.flow';
3
-
@@ -1,3 +0,0 @@
1
- //@flow strict-local
2
-
3
- declare export var useInteractiveColor: (themeColor: string) => string;
@@ -1,17 +0,0 @@
1
- // @flow
2
-
3
- type TypeMultiSelectProps<T: string> = {|
4
- initialValue?: T[],
5
- onChange?: (value: Array<string | T>) => any,
6
- |};
7
- declare var valueReducer: (state: Set<string>, action: {|
8
- type: string
9
- |} | {|
10
- type: string,
11
- value: string,
12
- |}) => Set<string>;
13
- declare export var useMultiselect: <T: string>(props?: TypeMultiSelectProps<T>) => {|
14
- onChange: (newValue: string) => void,
15
- onClear: () => void,
16
- value: Array<string | T>,
17
- |};
@@ -1,19 +0,0 @@
1
- type TypeMutationObserverInitRequired = {|
2
- childList: true
3
- |} | {|
4
- attributes: true
5
- |} | {|
6
- characterData: true
7
- |};
8
- type TypeMutationObserverInit = {
9
- ...TypeMutationObserverInitRequired,
10
- subtree?: boolean,
11
- attributeOldValue?: boolean,
12
- characterDataOldValue?: boolean,
13
- attributeFilter?: Array<string>,
14
- ...
15
- };
16
- type TypeMutationObserverCallback = (mutationList?: MutationRecord[], observer?: MutationObserver) => any;
17
- declare var defaultCallback: TypeMutationObserverCallback;
18
- declare export function useMutationObserver(targetNode: ?Node, config: TypeMutationObserverInit, callback?: TypeMutationObserverCallback): void | any;
19
- declare export function useMutationObserverOnce(targetNode: ?Node, config: TypeMutationObserverInit, callback: TypeMutationObserverCallback): void | any;
@@ -1,10 +0,0 @@
1
- // @flow
2
-
3
- type TypeSingleSelectProps<T: string> = {|
4
- initialValue?: T | "",
5
- onChange?: (value: string | T) => any,
6
- |};
7
- declare export var useSelect: <T: string>(props?: TypeSingleSelectProps<T>) => {|
8
- onChange: (newValue: string) => void,
9
- value: T | string,
10
- |};
@@ -1,21 +0,0 @@
1
- // @flow
2
-
3
- import { useState, useCallback } from "react";
4
- type ReturnType<F> = $PropertyType<$ObjMap<{
5
- x: F,
6
- ...
7
- }, <R>(f: (...any) => R) => R>, "x">;
8
- const useTextContentClone = (initial: string) => {
9
- const [textContent, setTextContent] = useState(initial);
10
- const ref = useCallback((node: Node) => {
11
- if (node !== null) {
12
- setTextContent(node.textContent);
13
- }
14
- }, []);
15
- ref.current = textContent;
16
- return ref;
17
- };
18
-
19
- // Couldn't find a way to achieve this with flow type syntax - open to suggestions
20
- // Tried https://github.com/facebook/flow/issues/2840#issuecomment-452934068 but it didn't work
21
- declare export function useTextContent(initial: string): ReturnType<typeof useTextContentClone>;
@@ -1,3 +0,0 @@
1
- // @flow
2
-
3
- declare export function useWhyDidYouUpdate(name: string, props: any): void;
@@ -1,71 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _useSelect = require("./useSelect/useSelect");
7
- Object.keys(_useSelect).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _useSelect[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function get() {
13
- return _useSelect[key];
14
- }
15
- });
16
- });
17
- var _useMultiselect = require("./useMultiselect/useMultiselect");
18
- Object.keys(_useMultiselect).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _useMultiselect[key]) return;
21
- Object.defineProperty(exports, key, {
22
- enumerable: true,
23
- get: function get() {
24
- return _useMultiselect[key];
25
- }
26
- });
27
- });
28
- var _useMutationObserver = require("./useMutationObserver/useMutationObserver");
29
- Object.keys(_useMutationObserver).forEach(function (key) {
30
- if (key === "default" || key === "__esModule") return;
31
- if (key in exports && exports[key] === _useMutationObserver[key]) return;
32
- Object.defineProperty(exports, key, {
33
- enumerable: true,
34
- get: function get() {
35
- return _useMutationObserver[key];
36
- }
37
- });
38
- });
39
- var _useTextContent = require("./useTextContent/useTextContent");
40
- Object.keys(_useTextContent).forEach(function (key) {
41
- if (key === "default" || key === "__esModule") return;
42
- if (key in exports && exports[key] === _useTextContent[key]) return;
43
- Object.defineProperty(exports, key, {
44
- enumerable: true,
45
- get: function get() {
46
- return _useTextContent[key];
47
- }
48
- });
49
- });
50
- var _useWhyDidYouUpdate = require("./useWhyDidYouUpdate/useWhyDidYouUpdate");
51
- Object.keys(_useWhyDidYouUpdate).forEach(function (key) {
52
- if (key === "default" || key === "__esModule") return;
53
- if (key in exports && exports[key] === _useWhyDidYouUpdate[key]) return;
54
- Object.defineProperty(exports, key, {
55
- enumerable: true,
56
- get: function get() {
57
- return _useWhyDidYouUpdate[key];
58
- }
59
- });
60
- });
61
- var _useInteractiveColor = require("./useInteractiveColor/useInteractiveColor");
62
- Object.keys(_useInteractiveColor).forEach(function (key) {
63
- if (key === "default" || key === "__esModule") return;
64
- if (key in exports && exports[key] === _useInteractiveColor[key]) return;
65
- Object.defineProperty(exports, key, {
66
- enumerable: true,
67
- get: function get() {
68
- return _useInteractiveColor[key];
69
- }
70
- });
71
- });
package/commonjs/index.js DELETED
@@ -1,82 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _useMeasure = require("./useMeasure/useMeasure");
7
- Object.keys(_useMeasure).forEach(function (key) {
8
- if (key === "default" || key === "__esModule") return;
9
- if (key in exports && exports[key] === _useMeasure[key]) return;
10
- Object.defineProperty(exports, key, {
11
- enumerable: true,
12
- get: function get() {
13
- return _useMeasure[key];
14
- }
15
- });
16
- });
17
- var _useSelect = require("./useSelect/useSelect");
18
- Object.keys(_useSelect).forEach(function (key) {
19
- if (key === "default" || key === "__esModule") return;
20
- if (key in exports && exports[key] === _useSelect[key]) return;
21
- Object.defineProperty(exports, key, {
22
- enumerable: true,
23
- get: function get() {
24
- return _useSelect[key];
25
- }
26
- });
27
- });
28
- var _useMultiselect = require("./useMultiselect/useMultiselect");
29
- Object.keys(_useMultiselect).forEach(function (key) {
30
- if (key === "default" || key === "__esModule") return;
31
- if (key in exports && exports[key] === _useMultiselect[key]) return;
32
- Object.defineProperty(exports, key, {
33
- enumerable: true,
34
- get: function get() {
35
- return _useMultiselect[key];
36
- }
37
- });
38
- });
39
- var _useMutationObserver = require("./useMutationObserver/useMutationObserver");
40
- Object.keys(_useMutationObserver).forEach(function (key) {
41
- if (key === "default" || key === "__esModule") return;
42
- if (key in exports && exports[key] === _useMutationObserver[key]) return;
43
- Object.defineProperty(exports, key, {
44
- enumerable: true,
45
- get: function get() {
46
- return _useMutationObserver[key];
47
- }
48
- });
49
- });
50
- var _useTextContent = require("./useTextContent/useTextContent");
51
- Object.keys(_useTextContent).forEach(function (key) {
52
- if (key === "default" || key === "__esModule") return;
53
- if (key in exports && exports[key] === _useTextContent[key]) return;
54
- Object.defineProperty(exports, key, {
55
- enumerable: true,
56
- get: function get() {
57
- return _useTextContent[key];
58
- }
59
- });
60
- });
61
- var _useWhyDidYouUpdate = require("./useWhyDidYouUpdate/useWhyDidYouUpdate");
62
- Object.keys(_useWhyDidYouUpdate).forEach(function (key) {
63
- if (key === "default" || key === "__esModule") return;
64
- if (key in exports && exports[key] === _useWhyDidYouUpdate[key]) return;
65
- Object.defineProperty(exports, key, {
66
- enumerable: true,
67
- get: function get() {
68
- return _useWhyDidYouUpdate[key];
69
- }
70
- });
71
- });
72
- var _useInteractiveColor = require("./useInteractiveColor/useInteractiveColor");
73
- Object.keys(_useInteractiveColor).forEach(function (key) {
74
- if (key === "default" || key === "__esModule") return;
75
- if (key in exports && exports[key] === _useInteractiveColor[key]) return;
76
- Object.defineProperty(exports, key, {
77
- enumerable: true,
78
- get: function get() {
79
- return _useInteractiveColor[key];
80
- }
81
- });
82
- });
@@ -1,3 +0,0 @@
1
- // @flow
2
- export * from '../__flow__';
3
-
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useInteractiveColor = void 0;
7
- var _polished = require("polished");
8
- var _styledComponents = require("styled-components");
9
- /**
10
- * The useInteractiveColor hook has context of theme mode (light or dark)
11
- * and can be used to lighten or darken a color dynamically
12
- *
13
- * note: colors are limited to our theme colors
14
- */
15
- var useInteractiveColor = exports.useInteractiveColor = function useInteractiveColor(themeColor) {
16
- // Throw error if used outside of a ThemeProvider (styled-components)
17
- if (!(0, _styledComponents.useTheme)()) {
18
- throw new Error("useInteractiveColor() must be used within a Styled Components ThemeProvider");
19
- }
20
-
21
- // Get the current theme mode ie. 'light' or 'dark'
22
- var theme = (0, _styledComponents.useTheme)();
23
- var themeMode = theme.mode;
24
-
25
- // If the theme mode is dark, return a lightened version of the themeValue
26
- if (themeMode === "dark") {
27
- return (0, _polished.lighten)(0.2, themeColor);
28
- } else {
29
- // If the theme mode is light, return a darkened version of the themeValue
30
- return (0, _polished.darken)(0.2, themeColor);
31
- }
32
- };