@fluentui/react-context-selector 0.0.0-nightlyc9ccb6f37d20211122.1 → 0.0.0-nightlycbf184efa720211222.1

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/CHANGELOG.json CHANGED
@@ -2,22 +2,45 @@
2
2
  "name": "@fluentui/react-context-selector",
3
3
  "entries": [
4
4
  {
5
- "date": "Mon, 22 Nov 2021 04:15:06 GMT",
6
- "tag": "@fluentui/react-context-selector_v0.0.0-nightlyc9ccb6f37d20211122.1",
7
- "version": "0.0.0-nightlyc9ccb6f37d20211122.1",
5
+ "date": "Wed, 22 Dec 2021 04:13:38 GMT",
6
+ "tag": "@fluentui/react-context-selector_v0.0.0-nightlycbf184efa720211222.1",
7
+ "version": "0.0.0-nightlycbf184efa720211222.1",
8
8
  "comments": {
9
9
  "prerelease": [
10
10
  {
11
11
  "author": "email not defined",
12
12
  "package": "@fluentui/react-context-selector",
13
- "commit": "485cdebc9d90401363f72f87d647689444cdaba4",
13
+ "commit": "28b9baaabf69c84b88a540aa640694c468cb98e0",
14
14
  "comment": "Release nightly v9"
15
15
  },
16
16
  {
17
17
  "author": "beachball",
18
18
  "package": "@fluentui/react-context-selector",
19
- "comment": "Bump @fluentui/react-utilities to v0.0.0-nightlyc9ccb6f37d20211122.1",
20
- "commit": "485cdebc9d90401363f72f87d647689444cdaba4"
19
+ "comment": "Bump @fluentui/react-utilities to v0.0.0-nightlycbf184efa720211222.1",
20
+ "commit": "28b9baaabf69c84b88a540aa640694c468cb98e0"
21
+ }
22
+ ]
23
+ }
24
+ },
25
+ {
26
+ "date": "Thu, 25 Nov 2021 08:34:13 GMT",
27
+ "tag": "@fluentui/react-context-selector_v9.0.0-beta.4",
28
+ "version": "9.0.0-beta.4",
29
+ "comments": {
30
+ "none": [
31
+ {
32
+ "author": "olfedias@microsoft.com",
33
+ "package": "@fluentui/react-context-selector",
34
+ "commit": "59b3bebb1944aa35f8e8754beec16dcc95f1d5fb",
35
+ "comment": "update tooling configs"
36
+ }
37
+ ],
38
+ "prerelease": [
39
+ {
40
+ "author": "beachball",
41
+ "package": "@fluentui/react-context-selector",
42
+ "comment": "Bump @fluentui/react-utilities to v9.0.0-beta.4",
43
+ "commit": "48d236ac53a4950fabc3ddd52f91dac93ca0195b"
21
44
  }
22
45
  ]
23
46
  }
package/CHANGELOG.md CHANGED
@@ -1,18 +1,27 @@
1
1
  # Change Log - @fluentui/react-context-selector
2
2
 
3
- This log was last generated on Mon, 22 Nov 2021 04:15:06 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 22 Dec 2021 04:13:38 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## [0.0.0-nightlyc9ccb6f37d20211122.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-context-selector_v0.0.0-nightlyc9ccb6f37d20211122.1)
7
+ ## [0.0.0-nightlycbf184efa720211222.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-context-selector_v0.0.0-nightlycbf184efa720211222.1)
8
8
 
9
- Mon, 22 Nov 2021 04:15:06 GMT
10
- [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-context-selector_v9.0.0-beta.3..@fluentui/react-context-selector_v0.0.0-nightlyc9ccb6f37d20211122.1)
9
+ Wed, 22 Dec 2021 04:13:38 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-context-selector_v9.0.0-beta.4..@fluentui/react-context-selector_v0.0.0-nightlycbf184efa720211222.1)
11
11
 
12
12
  ### Changes
13
13
 
14
- - Release nightly v9 ([commit](https://github.com/microsoft/fluentui/commit/485cdebc9d90401363f72f87d647689444cdaba4) by email not defined)
15
- - Bump @fluentui/react-utilities to v0.0.0-nightlyc9ccb6f37d20211122.1 ([commit](https://github.com/microsoft/fluentui/commit/485cdebc9d90401363f72f87d647689444cdaba4) by beachball)
14
+ - Release nightly v9 ([commit](https://github.com/microsoft/fluentui/commit/28b9baaabf69c84b88a540aa640694c468cb98e0) by email not defined)
15
+ - Bump @fluentui/react-utilities to v0.0.0-nightlycbf184efa720211222.1 ([commit](https://github.com/microsoft/fluentui/commit/28b9baaabf69c84b88a540aa640694c468cb98e0) by beachball)
16
+
17
+ ## [9.0.0-beta.4](https://github.com/microsoft/fluentui/tree/@fluentui/react-context-selector_v9.0.0-beta.4)
18
+
19
+ Thu, 25 Nov 2021 08:34:13 GMT
20
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-context-selector_v9.0.0-beta.3..@fluentui/react-context-selector_v9.0.0-beta.4)
21
+
22
+ ### Changes
23
+
24
+ - Bump @fluentui/react-utilities to v9.0.0-beta.4 ([PR #20762](https://github.com/microsoft/fluentui/pull/20762) by beachball)
16
25
 
17
26
  ## [9.0.0-beta.3](https://github.com/microsoft/fluentui/tree/@fluentui/react-context-selector_v9.0.0-beta.3)
18
27
 
@@ -1,47 +1,60 @@
1
1
  import { useIsomorphicLayoutEffect } from '@fluentui/react-utilities';
2
2
  import * as React from 'react';
3
3
  import { unstable_NormalPriority as NormalPriority, unstable_runWithPriority as runWithPriority } from 'scheduler';
4
- const createProvider = (Original) => {
5
- const Provider = props => {
6
- // Holds an actual "props.value"
7
- const valueRef = React.useRef(props.value);
8
- // Used to sync context updates and avoid stale values, can be considered as render/effect counter of Provider.
9
- const versionRef = React.useRef(0);
10
- // A stable object, is used to avoid context updates via mutation of its values.
11
- const contextValue = React.useRef();
12
- if (!contextValue.current) {
13
- contextValue.current = {
14
- value: valueRef,
15
- version: versionRef,
16
- listeners: [],
17
- };
18
- }
19
- useIsomorphicLayoutEffect(() => {
20
- valueRef.current = props.value;
21
- versionRef.current += 1;
22
- runWithPriority(NormalPriority, () => {
23
- contextValue.current.listeners.forEach(listener => {
24
- listener([versionRef.current, props.value]);
25
- });
26
- });
27
- }, [props.value]);
28
- return React.createElement(Original, { value: contextValue.current }, props.children);
29
- };
30
- /* istanbul ignore else */
31
- if (process.env.NODE_ENV !== 'production') {
32
- Provider.displayName = 'ContextSelector.Provider';
4
+
5
+ const createProvider = Original => {
6
+ const Provider = props => {
7
+ // Holds an actual "props.value"
8
+ const valueRef = React.useRef(props.value); // Used to sync context updates and avoid stale values, can be considered as render/effect counter of Provider.
9
+
10
+ const versionRef = React.useRef(0); // A stable object, is used to avoid context updates via mutation of its values.
11
+
12
+ const contextValue = React.useRef();
13
+
14
+ if (!contextValue.current) {
15
+ contextValue.current = {
16
+ value: valueRef,
17
+ version: versionRef,
18
+ listeners: []
19
+ };
33
20
  }
34
- return Provider;
21
+
22
+ useIsomorphicLayoutEffect(() => {
23
+ valueRef.current = props.value;
24
+ versionRef.current += 1;
25
+ runWithPriority(NormalPriority, () => {
26
+ contextValue.current.listeners.forEach(listener => {
27
+ listener([versionRef.current, props.value]);
28
+ });
29
+ });
30
+ }, [props.value]);
31
+ return /*#__PURE__*/React.createElement(Original, {
32
+ value: contextValue.current
33
+ }, props.children);
34
+ };
35
+ /* istanbul ignore else */
36
+
37
+
38
+ if (process.env.NODE_ENV !== 'production') {
39
+ Provider.displayName = 'ContextSelector.Provider';
40
+ }
41
+
42
+ return Provider;
35
43
  };
36
- export const createContext = (defaultValue) => {
37
- const context = React.createContext({
38
- value: { current: defaultValue },
39
- version: { current: -1 },
40
- listeners: [],
41
- });
42
- context.Provider = createProvider(context.Provider);
43
- // We don't support Consumer API
44
- delete context.Consumer;
45
- return context;
44
+
45
+ export const createContext = defaultValue => {
46
+ const context = /*#__PURE__*/React.createContext({
47
+ value: {
48
+ current: defaultValue
49
+ },
50
+ version: {
51
+ current: -1
52
+ },
53
+ listeners: []
54
+ });
55
+ context.Provider = createProvider(context.Provider); // We don't support Consumer API
56
+
57
+ delete context.Consumer;
58
+ return context;
46
59
  };
47
60
  //# sourceMappingURL=createContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createContext.js","sourceRoot":"","sources":["../src/createContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,uBAAuB,IAAI,cAAc,EAAE,wBAAwB,IAAI,eAAe,EAAE,MAAM,WAAW,CAAC;AAInH,MAAM,cAAc,GAAG,CAAQ,QAA6C,EAAE,EAAE;IAC9E,MAAM,QAAQ,GAAyC,KAAK,CAAC,EAAE;QAC7D,gCAAgC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,+GAA+G;QAC/G,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEnC,gFAAgF;QAChF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAuB,CAAC;QAEzD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YACzB,YAAY,CAAC,OAAO,GAAG;gBACrB,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,EAAE;aACd,CAAC;SACH;QAED,yBAAyB,CAAC,GAAG,EAAE;YAC7B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;YAC/B,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;YAExB,eAAe,CAAC,cAAc,EAAE,GAAG,EAAE;gBAClC,YAAY,CAAC,OAA+B,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACzE,QAAQ,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAElB,OAAO,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxF,CAAC,CAAC;IAEF,0BAA0B;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;QACzC,QAAQ,CAAC,WAAW,GAAG,0BAA0B,CAAC;KACnD;IAED,OAAQ,QAA2D,CAAC;AACtE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAQ,YAAmB,EAAkB,EAAE;IAC1E,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAsB;QACvD,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;QAChC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;QACxB,SAAS,EAAE,EAAE;KACd,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3D,gCAAgC;IAChC,OAAS,OAAsC,CAAC,QAAQ,CAAC;IAEzD,OAAQ,OAAqC,CAAC;AAChD,CAAC,CAAC"}
1
+ {"version":3,"sources":["../src/createContext.ts"],"names":[],"mappings":"AAAA,SAAS,yBAAT,QAA0C,2BAA1C;AACA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,uBAAuB,IAAI,cAApC,EAAoD,wBAAwB,IAAI,eAAhF,QAAuG,WAAvG;;AAIA,MAAM,cAAc,GAAW,QAAR,IAAyD;AAC9E,QAAM,QAAQ,GAAyC,KAAK,IAAG;AAC7D;AACA,UAAM,QAAQ,GAAG,KAAK,CAAC,MAAN,CAAa,KAAK,CAAC,KAAnB,CAAjB,CAF6D,CAG7D;;AACA,UAAM,UAAU,GAAG,KAAK,CAAC,MAAN,CAAa,CAAb,CAAnB,CAJ6D,CAM7D;;AACA,UAAM,YAAY,GAAG,KAAK,CAAC,MAAN,EAArB;;AAEA,QAAI,CAAC,YAAY,CAAC,OAAlB,EAA2B;AACzB,MAAA,YAAY,CAAC,OAAb,GAAuB;AACrB,QAAA,KAAK,EAAE,QADc;AAErB,QAAA,OAAO,EAAE,UAFY;AAGrB,QAAA,SAAS,EAAE;AAHU,OAAvB;AAKD;;AAED,IAAA,yBAAyB,CAAC,MAAK;AAC7B,MAAA,QAAQ,CAAC,OAAT,GAAmB,KAAK,CAAC,KAAzB;AACA,MAAA,UAAU,CAAC,OAAX,IAAsB,CAAtB;AAEA,MAAA,eAAe,CAAC,cAAD,EAAiB,MAAK;AAClC,QAAA,YAAY,CAAC,OAAb,CAA6C,SAA7C,CAAuD,OAAvD,CAA+D,QAAQ,IAAG;AACzE,UAAA,QAAQ,CAAC,CAAC,UAAU,CAAC,OAAZ,EAAqB,KAAK,CAAC,KAA3B,CAAD,CAAR;AACD,SAFA;AAGF,OAJc,CAAf;AAKD,KATwB,EAStB,CAAC,KAAK,CAAC,KAAP,CATsB,CAAzB;AAWA,wBAAO,KAAK,CAAC,aAAN,CAAoB,QAApB,EAA8B;AAAE,MAAA,KAAK,EAAE,YAAY,CAAC;AAAtB,KAA9B,EAA+D,KAAK,CAAC,QAArE,CAAP;AACD,GA7BD;AA+BA;;;AACA,MAAI,OAAO,CAAC,GAAR,CAAY,QAAZ,KAAyB,YAA7B,EAA2C;AACzC,IAAA,QAAQ,CAAC,WAAT,GAAuB,0BAAvB;AACD;;AAED,SAAQ,QAAR;AACD,CAtCD;;AAwCA,OAAO,MAAM,aAAa,GAAW,YAAR,IAA+C;AAC1E,QAAM,OAAO,gBAAG,KAAK,CAAC,aAAN,CAAyC;AACvD,IAAA,KAAK,EAAE;AAAE,MAAA,OAAO,EAAE;AAAX,KADgD;AAEvD,IAAA,OAAO,EAAE;AAAE,MAAA,OAAO,EAAE,CAAC;AAAZ,KAF8C;AAGvD,IAAA,SAAS,EAAE;AAH4C,GAAzC,CAAhB;AAMA,EAAA,OAAO,CAAC,QAAR,GAAmB,cAAc,CAAQ,OAAO,CAAC,QAAhB,CAAjC,CAP0E,CAS1E;;AACA,SAAS,OAAsC,CAAC,QAAhD;AAEA,SAAQ,OAAR;AACD,CAbM","sourceRoot":""}
@@ -5,63 +5,80 @@ import * as React from 'react';
5
5
  * It will only accept context created by `createContext`.
6
6
  * It will trigger re-render if only the selected value is referencially changed.
7
7
  */
8
+
8
9
  export const useContextSelector = (context, selector) => {
9
- const contextValue = React.useContext(context);
10
- const { value: { current: value }, version: { current: version }, listeners, } = contextValue;
11
- const selected = selector(value);
12
- const [state, dispatch] = React.useReducer((prevState, payload) => {
13
- if (!payload) {
14
- // early bail out when is dispatched during render
15
- return [value, selected];
16
- }
17
- if (payload[0] <= version) {
18
- if (objectIs(prevState[1], selected)) {
19
- return prevState; // bail out
20
- }
21
- return [value, selected];
22
- }
23
- try {
24
- if (objectIs(prevState[0], payload[1])) {
25
- return prevState; // do not update
26
- }
27
- const nextSelected = selector(payload[1]);
28
- if (objectIs(prevState[1], nextSelected)) {
29
- return prevState; // do not update
30
- }
31
- return [payload[1], nextSelected];
32
- }
33
- catch (e) {
34
- // ignored (stale props or some other reason)
35
- }
36
- // explicitly spread to enforce typing
37
- return [prevState[0], prevState[1]]; // schedule update
38
- }, [value, selected]);
39
- if (!objectIs(state[1], selected)) {
40
- // schedule re-render
41
- // this is safe because it's self contained
42
- dispatch(undefined);
10
+ const contextValue = React.useContext(context);
11
+ const {
12
+ value: {
13
+ current: value
14
+ },
15
+ version: {
16
+ current: version
17
+ },
18
+ listeners
19
+ } = contextValue;
20
+ const selected = selector(value);
21
+ const [state, dispatch] = React.useReducer((prevState, payload) => {
22
+ if (!payload) {
23
+ // early bail out when is dispatched during render
24
+ return [value, selected];
43
25
  }
44
- useIsomorphicLayoutEffect(() => {
45
- listeners.push(dispatch);
46
- return () => {
47
- const index = listeners.indexOf(dispatch);
48
- listeners.splice(index, 1);
49
- };
50
- }, [listeners]);
51
- return state[1];
26
+
27
+ if (payload[0] <= version) {
28
+ if (objectIs(prevState[1], selected)) {
29
+ return prevState; // bail out
30
+ }
31
+
32
+ return [value, selected];
33
+ }
34
+
35
+ try {
36
+ if (objectIs(prevState[0], payload[1])) {
37
+ return prevState; // do not update
38
+ }
39
+
40
+ const nextSelected = selector(payload[1]);
41
+
42
+ if (objectIs(prevState[1], nextSelected)) {
43
+ return prevState; // do not update
44
+ }
45
+
46
+ return [payload[1], nextSelected];
47
+ } catch (e) {// ignored (stale props or some other reason)
48
+ } // explicitly spread to enforce typing
49
+
50
+
51
+ return [prevState[0], prevState[1]]; // schedule update
52
+ }, [value, selected]);
53
+
54
+ if (!objectIs(state[1], selected)) {
55
+ // schedule re-render
56
+ // this is safe because it's self contained
57
+ dispatch(undefined);
58
+ }
59
+
60
+ useIsomorphicLayoutEffect(() => {
61
+ listeners.push(dispatch);
62
+ return () => {
63
+ const index = listeners.indexOf(dispatch);
64
+ listeners.splice(index, 1);
65
+ };
66
+ }, [listeners]);
67
+ return state[1];
52
68
  };
53
69
  /**
54
70
  * inlined Object.is polyfill to avoid requiring consumers ship their own
55
71
  * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
56
72
  */
57
73
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+
58
75
  function is(x, y) {
59
- return ((x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare
60
- );
61
- }
62
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
63
- const objectIs =
64
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
76
+ return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
77
+ ;
78
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
79
+
80
+
81
+ const objectIs = // eslint-disable-next-line @typescript-eslint/ban-ts-comment
65
82
  // @ts-ignore fallback to native if it exists (not in IE11)
66
83
  typeof Object.is === 'function' ? Object.is : is;
67
84
  //# sourceMappingURL=useContextSelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useContextSelector.js","sourceRoot":"","sources":["../src/useContextSelector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/useContextSelector.ts"],"names":[],"mappings":"AAAA,SAAS,yBAAT,QAA0C,2BAA1C;AACA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AAaA;;;;AAIG;;AACH,OAAO,MAAM,kBAAkB,GAAG,CAChC,OADgC,EAEhC,QAFgC,KAGf;AACjB,QAAM,YAAY,GAAG,KAAK,CAAC,UAAN,CAAkB,OAAlB,CAArB;AAEA,QAAM;AACJ,IAAA,KAAK,EAAE;AAAE,MAAA,OAAO,EAAE;AAAX,KADH;AAEJ,IAAA,OAAO,EAAE;AAAE,MAAA,OAAO,EAAE;AAAX,KAFL;AAGJ,IAAA;AAHI,MAIF,YAJJ;AAKA,QAAM,QAAQ,GAAG,QAAQ,CAAC,KAAD,CAAzB;AAEA,QAAM,CAAC,KAAD,EAAQ,QAAR,IAAoB,KAAK,CAAC,UAAN,CACxB,CACE,SADF,EAEE,OAFF,KAKqC;AACnC,QAAI,CAAC,OAAL,EAAc;AACZ;AACA,aAAO,CAAC,KAAD,EAAQ,QAAR,CAAP;AACD;;AAED,QAAI,OAAO,CAAC,CAAD,CAAP,IAAc,OAAlB,EAA2B;AACzB,UAAI,QAAQ,CAAC,SAAS,CAAC,CAAD,CAAV,EAAe,QAAf,CAAZ,EAAsC;AACpC,eAAO,SAAP,CADoC,CAClB;AACnB;;AAED,aAAO,CAAC,KAAD,EAAQ,QAAR,CAAP;AACD;;AAED,QAAI;AACF,UAAI,QAAQ,CAAC,SAAS,CAAC,CAAD,CAAV,EAAe,OAAO,CAAC,CAAD,CAAtB,CAAZ,EAAwC;AACtC,eAAO,SAAP,CADsC,CACpB;AACnB;;AAED,YAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAD,CAAR,CAA7B;;AAEA,UAAI,QAAQ,CAAC,SAAS,CAAC,CAAD,CAAV,EAAe,YAAf,CAAZ,EAA0C;AACxC,eAAO,SAAP,CADwC,CACtB;AACnB;;AAED,aAAO,CAAC,OAAO,CAAC,CAAD,CAAR,EAAa,YAAb,CAAP;AACD,KAZD,CAYE,OAAO,CAAP,EAAU,CACV;AACD,KA5BkC,CA8BnC;;;AACA,WAAO,CAAC,SAAS,CAAC,CAAD,CAAV,EAAe,SAAS,CAAC,CAAD,CAAxB,CAAP,CA/BmC,CA+BW;AAC/C,GAtCuB,EAuCxB,CAAC,KAAD,EAAQ,QAAR,CAvCwB,CAA1B;;AA0CA,MAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAD,CAAN,EAAW,QAAX,CAAb,EAAmC;AACjC;AACA;AACA,IAAA,QAAQ,CAAC,SAAD,CAAR;AACD;;AAED,EAAA,yBAAyB,CAAC,MAAK;AAC7B,IAAA,SAAS,CAAC,IAAV,CAAe,QAAf;AAEA,WAAO,MAAK;AACV,YAAM,KAAK,GAAG,SAAS,CAAC,OAAV,CAAkB,QAAlB,CAAd;AACA,MAAA,SAAS,CAAC,MAAV,CAAiB,KAAjB,EAAwB,CAAxB;AACD,KAHD;AAID,GAPwB,EAOtB,CAAC,SAAD,CAPsB,CAAzB;AASA,SAAO,KAAK,CAAC,CAAD,CAAZ;AACD,CAvEM;AAyEP;;;AAGG;AACH;;AACA,SAAS,EAAT,CAAY,CAAZ,EAAoB,CAApB,EAA0B;AACxB,SACG,CAAC,KAAK,CAAN,KAAY,CAAC,KAAK,CAAN,IAAW,IAAI,CAAJ,KAAU,IAAI,CAArC,CAAD,IAA8C,CAAC,KAAK,CAAN,IAAW,CAAC,KAAK,CADjE,CACoE;AADpE;AAGD,C,CAED;;;AACA,MAAM,QAAQ,GACZ;AACA;AACA,OAAO,MAAM,CAAC,EAAd,KAAqB,UAArB,GAAkC,MAAM,CAAC,EAAzC,GAA8C,EAHhD","sourceRoot":""}
@@ -6,11 +6,14 @@ import * as React from 'react';
6
6
  * @param context - context created by react-context-selector
7
7
  * @returns whether the hook is wrapped by a parent context
8
8
  */
9
+
9
10
  export function useHasParentContext(context) {
10
- const contextValue = React.useContext(context);
11
- if (contextValue.version) {
12
- return contextValue.version.current !== -1;
13
- }
14
- return false;
11
+ const contextValue = React.useContext(context);
12
+
13
+ if (contextValue.version) {
14
+ return contextValue.version.current !== -1;
15
+ }
16
+
17
+ return false;
15
18
  }
16
19
  //# sourceMappingURL=useHasParentContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHasParentContext.js","sourceRoot":"","sources":["../src/useHasParentContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAQ,OAAuB;IAChE,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAE,OAAmD,CAAC,CAAC;IAE5F,IAAI,YAAY,CAAC,OAAO,EAAE;QACxB,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;KAC5C;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"sources":["../src/useHasParentContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AAGA;;;;;;AAMG;;AACH,OAAM,SAAU,mBAAV,CAAqC,OAArC,EAA4D;AAChE,QAAM,YAAY,GAAG,KAAK,CAAC,UAAN,CAAkB,OAAlB,CAArB;;AAEA,MAAI,YAAY,CAAC,OAAjB,EAA0B;AACxB,WAAO,YAAY,CAAC,OAAb,CAAqB,OAArB,KAAiC,CAAC,CAAzC;AACD;;AAED,SAAO,KAAP;AACD","sourceRoot":""}
@@ -1,51 +1,71 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.createContext = void 0;
4
- const react_utilities_1 = require("@fluentui/react-utilities");
5
- const React = require("react");
6
- const scheduler_1 = require("scheduler");
7
- const createProvider = (Original) => {
8
- const Provider = props => {
9
- // Holds an actual "props.value"
10
- const valueRef = React.useRef(props.value);
11
- // Used to sync context updates and avoid stale values, can be considered as render/effect counter of Provider.
12
- const versionRef = React.useRef(0);
13
- // A stable object, is used to avoid context updates via mutation of its values.
14
- const contextValue = React.useRef();
15
- if (!contextValue.current) {
16
- contextValue.current = {
17
- value: valueRef,
18
- version: versionRef,
19
- listeners: [],
20
- };
21
- }
22
- react_utilities_1.useIsomorphicLayoutEffect(() => {
23
- valueRef.current = props.value;
24
- versionRef.current += 1;
25
- scheduler_1.unstable_runWithPriority(scheduler_1.unstable_NormalPriority, () => {
26
- contextValue.current.listeners.forEach(listener => {
27
- listener([versionRef.current, props.value]);
28
- });
29
- });
30
- }, [props.value]);
31
- return React.createElement(Original, { value: contextValue.current }, props.children);
32
- };
33
- /* istanbul ignore else */
34
- if (process.env.NODE_ENV !== 'production') {
35
- Provider.displayName = 'ContextSelector.Provider';
7
+
8
+ const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
9
+
10
+ const React = /*#__PURE__*/require("react");
11
+
12
+ const scheduler_1 = /*#__PURE__*/require("scheduler");
13
+
14
+ const createProvider = Original => {
15
+ const Provider = props => {
16
+ // Holds an actual "props.value"
17
+ const valueRef = React.useRef(props.value); // Used to sync context updates and avoid stale values, can be considered as render/effect counter of Provider.
18
+
19
+ const versionRef = React.useRef(0); // A stable object, is used to avoid context updates via mutation of its values.
20
+
21
+ const contextValue = React.useRef();
22
+
23
+ if (!contextValue.current) {
24
+ contextValue.current = {
25
+ value: valueRef,
26
+ version: versionRef,
27
+ listeners: []
28
+ };
36
29
  }
37
- return Provider;
30
+
31
+ react_utilities_1.useIsomorphicLayoutEffect(() => {
32
+ valueRef.current = props.value;
33
+ versionRef.current += 1;
34
+ scheduler_1.unstable_runWithPriority(scheduler_1.unstable_NormalPriority, () => {
35
+ contextValue.current.listeners.forEach(listener => {
36
+ listener([versionRef.current, props.value]);
37
+ });
38
+ });
39
+ }, [props.value]);
40
+ return React.createElement(Original, {
41
+ value: contextValue.current
42
+ }, props.children);
43
+ };
44
+ /* istanbul ignore else */
45
+
46
+
47
+ if (process.env.NODE_ENV !== 'production') {
48
+ Provider.displayName = 'ContextSelector.Provider';
49
+ }
50
+
51
+ return Provider;
38
52
  };
39
- const createContext = (defaultValue) => {
40
- const context = React.createContext({
41
- value: { current: defaultValue },
42
- version: { current: -1 },
43
- listeners: [],
44
- });
45
- context.Provider = createProvider(context.Provider);
46
- // We don't support Consumer API
47
- delete context.Consumer;
48
- return context;
53
+
54
+ const createContext = defaultValue => {
55
+ const context = React.createContext({
56
+ value: {
57
+ current: defaultValue
58
+ },
59
+ version: {
60
+ current: -1
61
+ },
62
+ listeners: []
63
+ });
64
+ context.Provider = createProvider(context.Provider); // We don't support Consumer API
65
+
66
+ delete context.Consumer;
67
+ return context;
49
68
  };
69
+
50
70
  exports.createContext = createContext;
51
71
  //# sourceMappingURL=createContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createContext.js","sourceRoot":"","sources":["../src/createContext.ts"],"names":[],"mappings":";;;AAAA,+DAAsE;AACtE,+BAA+B;AAC/B,yCAAmH;AAInH,MAAM,cAAc,GAAG,CAAQ,QAA6C,EAAE,EAAE;IAC9E,MAAM,QAAQ,GAAyC,KAAK,CAAC,EAAE;QAC7D,gCAAgC;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,+GAA+G;QAC/G,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEnC,gFAAgF;QAChF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAuB,CAAC;QAEzD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;YACzB,YAAY,CAAC,OAAO,GAAG;gBACrB,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,EAAE;aACd,CAAC;SACH;QAED,2CAAyB,CAAC,GAAG,EAAE;YAC7B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;YAC/B,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;YAExB,oCAAe,CAAC,mCAAc,EAAE,GAAG,EAAE;gBAClC,YAAY,CAAC,OAA+B,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACzE,QAAQ,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAElB,OAAO,KAAK,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxF,CAAC,CAAC;IAEF,0BAA0B;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;QACzC,QAAQ,CAAC,WAAW,GAAG,0BAA0B,CAAC;KACnD;IAED,OAAQ,QAA2D,CAAC;AACtE,CAAC,CAAC;AAEK,MAAM,aAAa,GAAG,CAAQ,YAAmB,EAAkB,EAAE;IAC1E,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAsB;QACvD,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE;QAChC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;QACxB,SAAS,EAAE,EAAE;KACd,CAAC,CAAC;IAEH,OAAO,CAAC,QAAQ,GAAG,cAAc,CAAQ,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3D,gCAAgC;IAChC,OAAS,OAAsC,CAAC,QAAQ,CAAC;IAEzD,OAAQ,OAAqC,CAAC;AAChD,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB"}
1
+ {"version":3,"sources":["../src/createContext.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,iBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AACA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,WAAA,gBAAA,OAAA,CAAA,WAAA,CAAA;;AAIA,MAAM,cAAc,GAAW,QAAR,IAAyD;AAC9E,QAAM,QAAQ,GAAyC,KAAK,IAAG;AAC7D;AACA,UAAM,QAAQ,GAAG,KAAK,CAAC,MAAN,CAAa,KAAK,CAAC,KAAnB,CAAjB,CAF6D,CAG7D;;AACA,UAAM,UAAU,GAAG,KAAK,CAAC,MAAN,CAAa,CAAb,CAAnB,CAJ6D,CAM7D;;AACA,UAAM,YAAY,GAAG,KAAK,CAAC,MAAN,EAArB;;AAEA,QAAI,CAAC,YAAY,CAAC,OAAlB,EAA2B;AACzB,MAAA,YAAY,CAAC,OAAb,GAAuB;AACrB,QAAA,KAAK,EAAE,QADc;AAErB,QAAA,OAAO,EAAE,UAFY;AAGrB,QAAA,SAAS,EAAE;AAHU,OAAvB;AAKD;;AAED,IAAA,iBAAA,CAAA,yBAAA,CAA0B,MAAK;AAC7B,MAAA,QAAQ,CAAC,OAAT,GAAmB,KAAK,CAAC,KAAzB;AACA,MAAA,UAAU,CAAC,OAAX,IAAsB,CAAtB;AAEA,MAAA,WAAA,CAAA,wBAAA,CAAgB,WAAA,CAAA,uBAAhB,EAAgC,MAAK;AAClC,QAAA,YAAY,CAAC,OAAb,CAA6C,SAA7C,CAAuD,OAAvD,CAA+D,QAAQ,IAAG;AACzE,UAAA,QAAQ,CAAC,CAAC,UAAU,CAAC,OAAZ,EAAqB,KAAK,CAAC,KAA3B,CAAD,CAAR;AACD,SAFA;AAGF,OAJD;AAKD,KATD,EASG,CAAC,KAAK,CAAC,KAAP,CATH;AAWA,WAAO,KAAK,CAAC,aAAN,CAAoB,QAApB,EAA8B;AAAE,MAAA,KAAK,EAAE,YAAY,CAAC;AAAtB,KAA9B,EAA+D,KAAK,CAAC,QAArE,CAAP;AACD,GA7BD;AA+BA;;;AACA,MAAI,OAAO,CAAC,GAAR,CAAY,QAAZ,KAAyB,YAA7B,EAA2C;AACzC,IAAA,QAAQ,CAAC,WAAT,GAAuB,0BAAvB;AACD;;AAED,SAAQ,QAAR;AACD,CAtCD;;AAwCO,MAAM,aAAa,GAAW,YAAR,IAA+C;AAC1E,QAAM,OAAO,GAAG,KAAK,CAAC,aAAN,CAAyC;AACvD,IAAA,KAAK,EAAE;AAAE,MAAA,OAAO,EAAE;AAAX,KADgD;AAEvD,IAAA,OAAO,EAAE;AAAE,MAAA,OAAO,EAAE,CAAC;AAAZ,KAF8C;AAGvD,IAAA,SAAS,EAAE;AAH4C,GAAzC,CAAhB;AAMA,EAAA,OAAO,CAAC,QAAR,GAAmB,cAAc,CAAQ,OAAO,CAAC,QAAhB,CAAjC,CAP0E,CAS1E;;AACA,SAAS,OAAsC,CAAC,QAAhD;AAEA,SAAQ,OAAR;AACD,CAbM;;AAAM,OAAA,CAAA,aAAA,GAAa,aAAb","sourceRoot":""}
@@ -1,12 +1,38 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.useHasParentContext = exports.useContextSelector = exports.createContext = void 0;
4
- const tslib_1 = require("tslib");
5
- var createContext_1 = require("./createContext");
6
- Object.defineProperty(exports, "createContext", { enumerable: true, get: function () { return createContext_1.createContext; } });
7
- var useContextSelector_1 = require("./useContextSelector");
8
- Object.defineProperty(exports, "useContextSelector", { enumerable: true, get: function () { return useContextSelector_1.useContextSelector; } });
9
- var useHasParentContext_1 = require("./useHasParentContext");
10
- Object.defineProperty(exports, "useHasParentContext", { enumerable: true, get: function () { return useHasParentContext_1.useHasParentContext; } });
7
+
8
+ const tslib_1 = /*#__PURE__*/require("tslib");
9
+
10
+ var createContext_1 = /*#__PURE__*/require("./createContext");
11
+
12
+ Object.defineProperty(exports, "createContext", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return createContext_1.createContext;
16
+ }
17
+ });
18
+
19
+ var useContextSelector_1 = /*#__PURE__*/require("./useContextSelector");
20
+
21
+ Object.defineProperty(exports, "useContextSelector", {
22
+ enumerable: true,
23
+ get: function () {
24
+ return useContextSelector_1.useContextSelector;
25
+ }
26
+ });
27
+
28
+ var useHasParentContext_1 = /*#__PURE__*/require("./useHasParentContext");
29
+
30
+ Object.defineProperty(exports, "useHasParentContext", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return useHasParentContext_1.useHasParentContext;
34
+ }
35
+ });
36
+
11
37
  tslib_1.__exportStar(require("./types"), exports);
12
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,kDAAwB"}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,IAAA,eAAA,gBAAA,OAAA,CAAA,iBAAA,CAAA;;AAAS,MAAA,CAAA,cAAA,CAAA,OAAA,EAAA,eAAA,EAAA;AAAA,EAAA,UAAA,EAAA,IAAA;AAAA,EAAA,GAAA,EAAA,YAAA;AAAA,WAAA,eAAA,CAAA,aAAA;AAAa;AAAb,CAAA;;AACT,IAAA,oBAAA,gBAAA,OAAA,CAAA,sBAAA,CAAA;;AAAS,MAAA,CAAA,cAAA,CAAA,OAAA,EAAA,oBAAA,EAAA;AAAA,EAAA,UAAA,EAAA,IAAA;AAAA,EAAA,GAAA,EAAA,YAAA;AAAA,WAAA,oBAAA,CAAA,kBAAA;AAAkB;AAAlB,CAAA;;AACT,IAAA,qBAAA,gBAAA,OAAA,CAAA,uBAAA,CAAA;;AAAS,MAAA,CAAA,cAAA,CAAA,OAAA,EAAA,qBAAA,EAAA;AAAA,EAAA,UAAA,EAAA,IAAA;AAAA,EAAA,GAAA,EAAA,YAAA;AAAA,WAAA,qBAAA,CAAA,mBAAA;AAAmB;AAAnB,CAAA;;AACT,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,SAAA,CAAA,EAAA,OAAA","sourceRoot":""}
@@ -1,3 +1,6 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":""}
@@ -1,71 +1,95 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.useContextSelector = void 0;
4
- const react_utilities_1 = require("@fluentui/react-utilities");
5
- const React = require("react");
7
+
8
+ const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
9
+
10
+ const React = /*#__PURE__*/require("react");
6
11
  /**
7
12
  * This hook returns context selected value by selector.
8
13
  * It will only accept context created by `createContext`.
9
14
  * It will trigger re-render if only the selected value is referencially changed.
10
15
  */
16
+
17
+
11
18
  const useContextSelector = (context, selector) => {
12
- const contextValue = React.useContext(context);
13
- const { value: { current: value }, version: { current: version }, listeners, } = contextValue;
14
- const selected = selector(value);
15
- const [state, dispatch] = React.useReducer((prevState, payload) => {
16
- if (!payload) {
17
- // early bail out when is dispatched during render
18
- return [value, selected];
19
- }
20
- if (payload[0] <= version) {
21
- if (objectIs(prevState[1], selected)) {
22
- return prevState; // bail out
23
- }
24
- return [value, selected];
25
- }
26
- try {
27
- if (objectIs(prevState[0], payload[1])) {
28
- return prevState; // do not update
29
- }
30
- const nextSelected = selector(payload[1]);
31
- if (objectIs(prevState[1], nextSelected)) {
32
- return prevState; // do not update
33
- }
34
- return [payload[1], nextSelected];
35
- }
36
- catch (e) {
37
- // ignored (stale props or some other reason)
38
- }
39
- // explicitly spread to enforce typing
40
- return [prevState[0], prevState[1]]; // schedule update
41
- }, [value, selected]);
42
- if (!objectIs(state[1], selected)) {
43
- // schedule re-render
44
- // this is safe because it's self contained
45
- dispatch(undefined);
19
+ const contextValue = React.useContext(context);
20
+ const {
21
+ value: {
22
+ current: value
23
+ },
24
+ version: {
25
+ current: version
26
+ },
27
+ listeners
28
+ } = contextValue;
29
+ const selected = selector(value);
30
+ const [state, dispatch] = React.useReducer((prevState, payload) => {
31
+ if (!payload) {
32
+ // early bail out when is dispatched during render
33
+ return [value, selected];
46
34
  }
47
- react_utilities_1.useIsomorphicLayoutEffect(() => {
48
- listeners.push(dispatch);
49
- return () => {
50
- const index = listeners.indexOf(dispatch);
51
- listeners.splice(index, 1);
52
- };
53
- }, [listeners]);
54
- return state[1];
35
+
36
+ if (payload[0] <= version) {
37
+ if (objectIs(prevState[1], selected)) {
38
+ return prevState; // bail out
39
+ }
40
+
41
+ return [value, selected];
42
+ }
43
+
44
+ try {
45
+ if (objectIs(prevState[0], payload[1])) {
46
+ return prevState; // do not update
47
+ }
48
+
49
+ const nextSelected = selector(payload[1]);
50
+
51
+ if (objectIs(prevState[1], nextSelected)) {
52
+ return prevState; // do not update
53
+ }
54
+
55
+ return [payload[1], nextSelected];
56
+ } catch (e) {// ignored (stale props or some other reason)
57
+ } // explicitly spread to enforce typing
58
+
59
+
60
+ return [prevState[0], prevState[1]]; // schedule update
61
+ }, [value, selected]);
62
+
63
+ if (!objectIs(state[1], selected)) {
64
+ // schedule re-render
65
+ // this is safe because it's self contained
66
+ dispatch(undefined);
67
+ }
68
+
69
+ react_utilities_1.useIsomorphicLayoutEffect(() => {
70
+ listeners.push(dispatch);
71
+ return () => {
72
+ const index = listeners.indexOf(dispatch);
73
+ listeners.splice(index, 1);
74
+ };
75
+ }, [listeners]);
76
+ return state[1];
55
77
  };
78
+
56
79
  exports.useContextSelector = useContextSelector;
57
80
  /**
58
81
  * inlined Object.is polyfill to avoid requiring consumers ship their own
59
82
  * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
60
83
  */
61
84
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+
62
86
  function is(x, y) {
63
- return ((x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare
64
- );
65
- }
66
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
- const objectIs =
68
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
87
+ return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
88
+ ;
89
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
+
91
+
92
+ const objectIs = // eslint-disable-next-line @typescript-eslint/ban-ts-comment
69
93
  // @ts-ignore fallback to native if it exists (not in IE11)
70
94
  typeof Object.is === 'function' ? Object.is : is;
71
95
  //# sourceMappingURL=useContextSelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useContextSelector.js","sourceRoot":"","sources":["../src/useContextSelector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/useContextSelector.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,iBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AACA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;AAaA;;;;AAIG;;;AACI,MAAM,kBAAkB,GAAG,CAChC,OADgC,EAEhC,QAFgC,KAGf;AACjB,QAAM,YAAY,GAAG,KAAK,CAAC,UAAN,CAAkB,OAAlB,CAArB;AAEA,QAAM;AACJ,IAAA,KAAK,EAAE;AAAE,MAAA,OAAO,EAAE;AAAX,KADH;AAEJ,IAAA,OAAO,EAAE;AAAE,MAAA,OAAO,EAAE;AAAX,KAFL;AAGJ,IAAA;AAHI,MAIF,YAJJ;AAKA,QAAM,QAAQ,GAAG,QAAQ,CAAC,KAAD,CAAzB;AAEA,QAAM,CAAC,KAAD,EAAQ,QAAR,IAAoB,KAAK,CAAC,UAAN,CACxB,CACE,SADF,EAEE,OAFF,KAKqC;AACnC,QAAI,CAAC,OAAL,EAAc;AACZ;AACA,aAAO,CAAC,KAAD,EAAQ,QAAR,CAAP;AACD;;AAED,QAAI,OAAO,CAAC,CAAD,CAAP,IAAc,OAAlB,EAA2B;AACzB,UAAI,QAAQ,CAAC,SAAS,CAAC,CAAD,CAAV,EAAe,QAAf,CAAZ,EAAsC;AACpC,eAAO,SAAP,CADoC,CAClB;AACnB;;AAED,aAAO,CAAC,KAAD,EAAQ,QAAR,CAAP;AACD;;AAED,QAAI;AACF,UAAI,QAAQ,CAAC,SAAS,CAAC,CAAD,CAAV,EAAe,OAAO,CAAC,CAAD,CAAtB,CAAZ,EAAwC;AACtC,eAAO,SAAP,CADsC,CACpB;AACnB;;AAED,YAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAD,CAAR,CAA7B;;AAEA,UAAI,QAAQ,CAAC,SAAS,CAAC,CAAD,CAAV,EAAe,YAAf,CAAZ,EAA0C;AACxC,eAAO,SAAP,CADwC,CACtB;AACnB;;AAED,aAAO,CAAC,OAAO,CAAC,CAAD,CAAR,EAAa,YAAb,CAAP;AACD,KAZD,CAYE,OAAO,CAAP,EAAU,CACV;AACD,KA5BkC,CA8BnC;;;AACA,WAAO,CAAC,SAAS,CAAC,CAAD,CAAV,EAAe,SAAS,CAAC,CAAD,CAAxB,CAAP,CA/BmC,CA+BW;AAC/C,GAtCuB,EAuCxB,CAAC,KAAD,EAAQ,QAAR,CAvCwB,CAA1B;;AA0CA,MAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAD,CAAN,EAAW,QAAX,CAAb,EAAmC;AACjC;AACA;AACA,IAAA,QAAQ,CAAC,SAAD,CAAR;AACD;;AAED,EAAA,iBAAA,CAAA,yBAAA,CAA0B,MAAK;AAC7B,IAAA,SAAS,CAAC,IAAV,CAAe,QAAf;AAEA,WAAO,MAAK;AACV,YAAM,KAAK,GAAG,SAAS,CAAC,OAAV,CAAkB,QAAlB,CAAd;AACA,MAAA,SAAS,CAAC,MAAV,CAAiB,KAAjB,EAAwB,CAAxB;AACD,KAHD;AAID,GAPD,EAOG,CAAC,SAAD,CAPH;AASA,SAAO,KAAK,CAAC,CAAD,CAAZ;AACD,CAvEM;;AAAM,OAAA,CAAA,kBAAA,GAAkB,kBAAlB;AAyEb;;;AAGG;AACH;;AACA,SAAS,EAAT,CAAY,CAAZ,EAAoB,CAApB,EAA0B;AACxB,SACG,CAAC,KAAK,CAAN,KAAY,CAAC,KAAK,CAAN,IAAW,IAAI,CAAJ,KAAU,IAAI,CAArC,CAAD,IAA8C,CAAC,KAAK,CAAN,IAAW,CAAC,KAAK,CADjE,CACoE;AADpE;AAGD,C,CAED;;;AACA,MAAM,QAAQ,GACZ;AACA;AACA,OAAO,MAAM,CAAC,EAAd,KAAqB,UAArB,GAAkC,MAAM,CAAC,EAAzC,GAA8C,EAHhD","sourceRoot":""}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
3
6
  exports.useHasParentContext = void 0;
4
- const React = require("react");
7
+
8
+ const React = /*#__PURE__*/require("react");
5
9
  /**
6
10
  * Utility hook for contexts created by react-context-selector to determine if a parent context exists
7
11
  * WARNING: This hook will not work for native React contexts
@@ -9,12 +13,17 @@ const React = require("react");
9
13
  * @param context - context created by react-context-selector
10
14
  * @returns whether the hook is wrapped by a parent context
11
15
  */
16
+
17
+
12
18
  function useHasParentContext(context) {
13
- const contextValue = React.useContext(context);
14
- if (contextValue.version) {
15
- return contextValue.version.current !== -1;
16
- }
17
- return false;
19
+ const contextValue = React.useContext(context);
20
+
21
+ if (contextValue.version) {
22
+ return contextValue.version.current !== -1;
23
+ }
24
+
25
+ return false;
18
26
  }
27
+
19
28
  exports.useHasParentContext = useHasParentContext;
20
29
  //# sourceMappingURL=useHasParentContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useHasParentContext.js","sourceRoot":"","sources":["../src/useHasParentContext.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAG/B;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAQ,OAAuB;IAChE,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAE,OAAmD,CAAC,CAAC;IAE5F,IAAI,YAAY,CAAC,OAAO,EAAE;QACxB,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;KAC5C;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AARD,kDAQC"}
1
+ {"version":3,"sources":["../src/useHasParentContext.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;AAGA;;;;;;AAMG;;;AACH,SAAgB,mBAAhB,CAA2C,OAA3C,EAAkE;AAChE,QAAM,YAAY,GAAG,KAAK,CAAC,UAAN,CAAkB,OAAlB,CAArB;;AAEA,MAAI,YAAY,CAAC,OAAjB,EAA0B;AACxB,WAAO,YAAY,CAAC,OAAb,CAAqB,OAArB,KAAiC,CAAC,CAAzC;AACD;;AAED,SAAO,KAAP;AACD;;AARD,OAAA,CAAA,mBAAA,GAAA,mBAAA","sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-context-selector",
3
- "version": "0.0.0-nightlyc9ccb6f37d20211122.1",
3
+ "version": "0.0.0-nightlycbf184efa720211222.1",
4
4
  "description": "React useContextSelector hook in userland",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -19,7 +19,8 @@
19
19
  "lint": "just-scripts lint",
20
20
  "test": "jest",
21
21
  "docs": "api-extractor run --config=config/api-extractor.local.json --local",
22
- "build:local": "tsc -p . --module esnext --emitDeclarationOnly && node ../../scripts/typescript/normalize-import --output dist/react-context-selector/src && yarn docs"
22
+ "build:local": "tsc -p ./tsconfig.lib.json --module esnext --emitDeclarationOnly && node ../../scripts/typescript/normalize-import --output ./dist/packages/react-context-selector/src && yarn docs",
23
+ "type-check": "tsc -b tsconfig.json"
23
24
  },
24
25
  "devDependencies": {
25
26
  "@fluentui/eslint-plugin": "*",
@@ -34,7 +35,7 @@
34
35
  "react-test-renderer": "^16.3.0"
35
36
  },
36
37
  "dependencies": {
37
- "@fluentui/react-utilities": "0.0.0-nightlyc9ccb6f37d20211122.1",
38
+ "@fluentui/react-utilities": "0.0.0-nightlycbf184efa720211222.1",
38
39
  "scheduler": "^0.20.1",
39
40
  "tslib": "^2.1.0"
40
41
  },