@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.
- package/dist/index.d.mts +66 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +19 -0
- package/dist/index.mjs +10 -0
- package/package.json +8 -13
- package/__flow__/index.flow.js +0 -8
- package/__flow__/index.js +0 -3
- package/__flow__/useInteractiveColor/useInteractiveColor.flow.js +0 -3
- package/__flow__/useMultiselect/useMultiselect.flow.js +0 -17
- package/__flow__/useMutationObserver/useMutationObserver.flow.js +0 -19
- package/__flow__/useSelect/useSelect.flow.js +0 -10
- package/__flow__/useTextContent/useTextContent.flow.js +0 -21
- package/__flow__/useWhyDidYouUpdate/useWhyDidYouUpdate.flow.js +0 -3
- package/commonjs/index.flow.js +0 -71
- package/commonjs/index.js +0 -82
- package/commonjs/index.js.flow +0 -3
- package/commonjs/useInteractiveColor/useInteractiveColor.flow.js +0 -1
- package/commonjs/useInteractiveColor/useInteractiveColor.js +0 -32
- package/commonjs/useMeasure/useMeasure.js +0 -65
- package/commonjs/useMultiselect/useMultiselect.flow.js +0 -1
- package/commonjs/useMultiselect/useMultiselect.js +0 -77
- package/commonjs/useMutationObserver/useMutationObserver.flow.js +0 -1
- package/commonjs/useMutationObserver/useMutationObserver.js +0 -58
- package/commonjs/useSelect/useSelect.flow.js +0 -1
- package/commonjs/useSelect/useSelect.js +0 -38
- package/commonjs/useTextContent/useTextContent.flow.js +0 -25
- package/commonjs/useTextContent/useTextContent.js +0 -26
- package/commonjs/useWhyDidYouUpdate/useWhyDidYouUpdate.flow.js +0 -1
- package/commonjs/useWhyDidYouUpdate/useWhyDidYouUpdate.js +0 -46
- package/dist/types/index.d.ts +0 -8
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/useInteractiveColor/useInteractiveColor.d.ts +0 -9
- package/dist/types/useInteractiveColor/useInteractiveColor.d.ts.map +0 -1
- package/dist/types/useMeasure/useMeasure.d.ts +0 -14
- package/dist/types/useMeasure/useMeasure.d.ts.map +0 -1
- package/dist/types/useMultiselect/useMultiselect.d.ts +0 -11
- package/dist/types/useMultiselect/useMultiselect.d.ts.map +0 -1
- package/dist/types/useMutationObserver/useMutationObserver.d.ts +0 -18
- package/dist/types/useMutationObserver/useMutationObserver.d.ts.map +0 -1
- package/dist/types/useSelect/useSelect.d.ts +0 -10
- package/dist/types/useSelect/useSelect.d.ts.map +0 -1
- package/dist/types/useTextContent/useTextContent.d.ts +0 -5
- package/dist/types/useTextContent/useTextContent.d.ts.map +0 -1
- package/dist/types/useWhyDidYouUpdate/useWhyDidYouUpdate.d.ts +0 -2
- package/dist/types/useWhyDidYouUpdate/useWhyDidYouUpdate.d.ts.map +0 -1
- package/lib/index.flow.js +0 -6
- package/lib/index.js +0 -7
- package/lib/index.js.flow +0 -3
- package/lib/useInteractiveColor/useInteractiveColor.flow.js +0 -0
- package/lib/useInteractiveColor/useInteractiveColor.js +0 -27
- package/lib/useMeasure/useMeasure.js +0 -59
- package/lib/useMultiselect/useMultiselect.flow.js +0 -0
- package/lib/useMultiselect/useMultiselect.js +0 -71
- package/lib/useMutationObserver/useMutationObserver.flow.js +0 -0
- package/lib/useMutationObserver/useMutationObserver.js +0 -51
- package/lib/useSelect/useSelect.flow.js +0 -0
- package/lib/useSelect/useSelect.js +0 -32
- package/lib/useTextContent/useTextContent.flow.js +0 -23
- package/lib/useTextContent/useTextContent.js +0 -20
- package/lib/useWhyDidYouUpdate/useWhyDidYouUpdate.flow.js +0 -0
- package/lib/useWhyDidYouUpdate/useWhyDidYouUpdate.js +0 -40
package/dist/index.d.mts
ADDED
|
@@ -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.d.ts
ADDED
|
@@ -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": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Seeds React Hooks",
|
|
5
|
-
"main": "
|
|
6
|
-
"module": "
|
|
7
|
-
"types": "dist/
|
|
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
|
-
"
|
|
12
|
-
"commonjs",
|
|
13
|
-
"dist",
|
|
14
|
-
"lib"
|
|
11
|
+
"dist"
|
|
15
12
|
],
|
|
16
13
|
"scripts": {
|
|
17
|
-
"build": "
|
|
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"
|
package/__flow__/index.flow.js
DELETED
|
@@ -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,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>;
|
package/commonjs/index.flow.js
DELETED
|
@@ -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
|
-
});
|
package/commonjs/index.js.flow
DELETED
|
@@ -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
|
-
};
|