@microsoft/live-share-react 1.2.1-preview.0 → 1.3.0-preview.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/bin/internal/errors.d.ts.map +1 -1
- package/bin/internal/errors.js +7 -4
- package/bin/internal/errors.js.map +1 -1
- package/bin/internal/index.d.ts +0 -1
- package/bin/internal/index.d.ts.map +1 -1
- package/bin/internal/index.js +0 -1
- package/bin/internal/index.js.map +1 -1
- package/bin/live-hooks/useLiveCanvas.d.ts +1 -0
- package/bin/live-hooks/useLiveCanvas.d.ts.map +1 -1
- package/bin/live-hooks/useLiveCanvas.js +1 -0
- package/bin/live-hooks/useLiveCanvas.js.map +1 -1
- package/bin/live-hooks/useLiveEvent.d.ts +1 -0
- package/bin/live-hooks/useLiveEvent.d.ts.map +1 -1
- package/bin/live-hooks/useLiveEvent.js +1 -0
- package/bin/live-hooks/useLiveEvent.js.map +1 -1
- package/bin/live-hooks/useLiveFollowMode.d.ts +1 -0
- package/bin/live-hooks/useLiveFollowMode.d.ts.map +1 -1
- package/bin/live-hooks/useLiveFollowMode.js +7 -6
- package/bin/live-hooks/useLiveFollowMode.js.map +1 -1
- package/bin/live-hooks/useLivePresence.d.ts +1 -0
- package/bin/live-hooks/useLivePresence.d.ts.map +1 -1
- package/bin/live-hooks/useLivePresence.js +1 -0
- package/bin/live-hooks/useLivePresence.js.map +1 -1
- package/bin/live-hooks/useLiveState.d.ts +1 -0
- package/bin/live-hooks/useLiveState.d.ts.map +1 -1
- package/bin/live-hooks/useLiveState.js +1 -0
- package/bin/live-hooks/useLiveState.js.map +1 -1
- package/bin/live-hooks/useLiveTimer.d.ts +17 -0
- package/bin/live-hooks/useLiveTimer.d.ts.map +1 -1
- package/bin/live-hooks/useLiveTimer.js +17 -0
- package/bin/live-hooks/useLiveTimer.js.map +1 -1
- package/bin/live-hooks/useMediaSynchronizer.d.ts +1 -0
- package/bin/live-hooks/useMediaSynchronizer.d.ts.map +1 -1
- package/bin/live-hooks/useMediaSynchronizer.js +1 -0
- package/bin/live-hooks/useMediaSynchronizer.js.map +1 -1
- package/bin/providers/AzureProvider.d.ts +83 -4
- package/bin/providers/AzureProvider.d.ts.map +1 -1
- package/bin/providers/AzureProvider.js +18 -1
- package/bin/providers/AzureProvider.js.map +1 -1
- package/bin/providers/LiveShareProvider.d.ts +36 -8
- package/bin/providers/LiveShareProvider.d.ts.map +1 -1
- package/bin/providers/LiveShareProvider.js +19 -1
- package/bin/providers/LiveShareProvider.js.map +1 -1
- package/bin/shared-hooks/index.d.ts +1 -0
- package/bin/shared-hooks/index.d.ts.map +1 -1
- package/bin/shared-hooks/index.js +1 -0
- package/bin/shared-hooks/index.js.map +1 -1
- package/bin/shared-hooks/useDynamicDDS.d.ts +4 -0
- package/bin/shared-hooks/useDynamicDDS.d.ts.map +1 -1
- package/bin/shared-hooks/useDynamicDDS.js +4 -0
- package/bin/shared-hooks/useDynamicDDS.js.map +1 -1
- package/bin/shared-hooks/useSharedMap.d.ts +1 -0
- package/bin/shared-hooks/useSharedMap.d.ts.map +1 -1
- package/bin/shared-hooks/useSharedMap.js +1 -0
- package/bin/shared-hooks/useSharedMap.js.map +1 -1
- package/bin/shared-hooks/useSharedState.d.ts +1 -0
- package/bin/shared-hooks/useSharedState.d.ts.map +1 -1
- package/bin/shared-hooks/useSharedState.js +1 -0
- package/bin/shared-hooks/useSharedState.js.map +1 -1
- package/bin/shared-hooks/useSharedStateRegistry.d.ts +37 -0
- package/bin/shared-hooks/useSharedStateRegistry.d.ts.map +1 -0
- package/bin/shared-hooks/useSharedStateRegistry.js +105 -0
- package/bin/shared-hooks/useSharedStateRegistry.js.map +1 -0
- package/package.json +8 -8
- package/src/internal/errors.ts +15 -6
- package/src/internal/index.ts +0 -1
- package/src/live-hooks/useLiveCanvas.ts +1 -0
- package/src/live-hooks/useLiveEvent.ts +1 -0
- package/src/live-hooks/useLiveFollowMode.ts +7 -6
- package/src/live-hooks/useLivePresence.ts +1 -0
- package/src/live-hooks/useLiveState.ts +1 -0
- package/src/live-hooks/useLiveTimer.ts +17 -0
- package/src/live-hooks/useMediaSynchronizer.ts +1 -0
- package/src/providers/AzureProvider.tsx +92 -3
- package/src/providers/LiveShareProvider.tsx +49 -9
- package/src/shared-hooks/index.ts +1 -0
- package/src/shared-hooks/useDynamicDDS.ts +4 -0
- package/src/shared-hooks/useSharedMap.ts +1 -0
- package/src/shared-hooks/useSharedState.ts +1 -0
- package/src/{internal → shared-hooks}/useSharedStateRegistry.ts +6 -0
|
@@ -9,11 +9,25 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
import React from "react";
|
|
12
|
-
import { useSharedStateRegistry, } from "../
|
|
12
|
+
import { useSharedStateRegistry, } from "../shared-hooks";
|
|
13
13
|
import { AzureTurboClient, } from "@microsoft/live-share-turbo";
|
|
14
|
+
/**
|
|
15
|
+
* @hidden
|
|
16
|
+
*/
|
|
14
17
|
export const FluidContext = React.createContext({});
|
|
18
|
+
/**
|
|
19
|
+
* Hook to get the latest React context state for `FluidContext`.
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
|
|
23
|
+
*
|
|
24
|
+
* @returns current state of `LiveShareContext`
|
|
25
|
+
*/
|
|
15
26
|
export const useFluidObjectsContext = () => {
|
|
16
27
|
const context = React.useContext(FluidContext);
|
|
28
|
+
if (!isFluidObjectsContext(context)) {
|
|
29
|
+
throw new Error("@microsoft/live-share-react: attempting to use `useFluidObjectsContext()` from a component that is not a child of `<LiveShareProvider>` or `<AzureProvider>`.\nTo fix this error, ensure that you are only using Live Share hooks (e.g., `useLiveState`) from a child component of `<LiveShareProvider>` or `<AzureProvider>`.");
|
|
30
|
+
}
|
|
17
31
|
return context;
|
|
18
32
|
};
|
|
19
33
|
/**
|
|
@@ -99,4 +113,7 @@ export const AzureProvider = (props) => {
|
|
|
99
113
|
createContainer,
|
|
100
114
|
getContainer }, stateRegistryCallbacks) }, { children: props.children })));
|
|
101
115
|
};
|
|
116
|
+
function isFluidObjectsContext(value) {
|
|
117
|
+
return !!(value === null || value === void 0 ? void 0 : value.clientRef);
|
|
118
|
+
}
|
|
102
119
|
//# sourceMappingURL=AzureProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AzureProvider.js","sourceRoot":"","sources":["../../src/providers/AzureProvider.tsx"],"names":[],"mappings":";;;;;;;;;;AAMA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,EAEH,sBAAsB,GACzB,MAAM,
|
|
1
|
+
{"version":3,"file":"AzureProvider.js","sourceRoot":"","sources":["../../src/providers/AzureProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,13 @@
|
|
|
5
5
|
import { IFluidContainer, LoadableObjectClassRecord } from "fluid-framework";
|
|
6
6
|
import React from "react";
|
|
7
7
|
import { ILiveShareClientOptions, ILiveShareHost, ILiveShareJoinResults, ITimestampProvider } from "@microsoft/live-share";
|
|
8
|
+
/**
|
|
9
|
+
* React Context provider values for `<LiveShareProvider>`.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* To get the latest values, use the {@link useLiveShareContext} hook.
|
|
13
|
+
* Use the {@link useFluidObjectsContext} hook for other relevant context values.
|
|
14
|
+
*/
|
|
8
15
|
export interface ILiveShareContext {
|
|
9
16
|
/**
|
|
10
17
|
* True if the local user created the Fluid container
|
|
@@ -24,34 +31,56 @@ export interface ILiveShareContext {
|
|
|
24
31
|
*/
|
|
25
32
|
timestampProvider: ITimestampProvider | undefined;
|
|
26
33
|
/**
|
|
27
|
-
* Join callback method
|
|
34
|
+
* Join callback method for manually connecting to the Fluid container.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* Use this callback if `joinOnLoad` is `false` or `undefined` in {@link ILiveShareProviderProps}.
|
|
38
|
+
*
|
|
28
39
|
* @param initialObjects Optional. The initial objects for the Fluid container schema.
|
|
29
40
|
* @param onInitializeContainer Optional. Callback for when the container is first created.
|
|
30
|
-
* @returns `ILiveShareJoinResults`, which includes the Fluid container
|
|
41
|
+
* @returns Promise with `ILiveShareJoinResults`, which includes the Fluid container
|
|
31
42
|
*/
|
|
32
43
|
join: (initialObjects?: LoadableObjectClassRecord, onInitializeContainer?: (container: IFluidContainer) => void) => Promise<ILiveShareJoinResults>;
|
|
33
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* @hidden
|
|
47
|
+
*/
|
|
34
48
|
export declare const LiveShareContext: React.Context<ILiveShareContext>;
|
|
49
|
+
/**
|
|
50
|
+
* Hook to get the latest React context state for `LiveShareContext`.
|
|
51
|
+
*
|
|
52
|
+
* @remarks
|
|
53
|
+
* This hook can only be used in a child component of `<LiveShareProvider>`.
|
|
54
|
+
* See `useFluidObjectsContext` for other information related to the Live Share session, such as the `container`.
|
|
55
|
+
*
|
|
56
|
+
* @returns current state of `LiveShareContext`
|
|
57
|
+
*/
|
|
35
58
|
export declare const useLiveShareContext: () => ILiveShareContext;
|
|
36
|
-
|
|
59
|
+
/**
|
|
60
|
+
* Prop types for {@link LiveShareProvider} component.
|
|
61
|
+
*/
|
|
62
|
+
export interface ILiveShareProviderProps {
|
|
37
63
|
/**
|
|
38
64
|
* Optional. React children node for the React Context Provider
|
|
39
65
|
*/
|
|
40
66
|
children?: React.ReactNode;
|
|
41
67
|
/**
|
|
42
|
-
* Optional. Options
|
|
68
|
+
* Optional. Options for initializing `LiveShareClient`.
|
|
43
69
|
*/
|
|
44
70
|
clientOptions?: ILiveShareClientOptions;
|
|
45
71
|
/**
|
|
46
|
-
* Host to initialize LiveShareClient with
|
|
72
|
+
* Host to initialize `LiveShareClient` with.
|
|
73
|
+
*
|
|
74
|
+
* @remarks
|
|
75
|
+
* If using the `LiveShareClient` class from `@microsoft/teams-js`, you must ensure that you have first called `teamsJs.app.initialize()` before calling `LiveShareClient.create()`.
|
|
47
76
|
*/
|
|
48
77
|
host: ILiveShareHost;
|
|
49
78
|
/**
|
|
50
|
-
*
|
|
79
|
+
* The initial object schema to use when {@link joinOnLoad} is true.
|
|
51
80
|
*/
|
|
52
81
|
initialObjects?: LoadableObjectClassRecord;
|
|
53
82
|
/**
|
|
54
|
-
* Optional. Flag to determine whether to join Fluid container on load
|
|
83
|
+
* Optional. Flag to determine whether to join Fluid container on load.
|
|
55
84
|
*/
|
|
56
85
|
joinOnLoad?: boolean;
|
|
57
86
|
}
|
|
@@ -59,5 +88,4 @@ interface ILiveShareProviderProps {
|
|
|
59
88
|
* React Context provider component for using Live Share data objects & joining a Live Share session using `LiveShareClient`.
|
|
60
89
|
*/
|
|
61
90
|
export declare const LiveShareProvider: React.FC<ILiveShareProviderProps>;
|
|
62
|
-
export {};
|
|
63
91
|
//# sourceMappingURL=LiveShareProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveShareProvider.d.ts","sourceRoot":"","sources":["../../src/providers/LiveShareProvider.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACH,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACrB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,WAAW,iBAAiB;IAC9B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAClD
|
|
1
|
+
{"version":3,"file":"LiveShareProvider.d.ts","sourceRoot":"","sources":["../../src/providers/LiveShareProvider.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACH,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EACrB,MAAM,uBAAuB,CAAC;AAI/B;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAClD;;;;;;;;;OASG;IACH,IAAI,EAAE,CACF,cAAc,CAAC,EAAE,yBAAyB,EAC1C,qBAAqB,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,KAC3D,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,kCAE5B,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,QAAO,iBAQtC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B;;OAEG;IACH,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC;;;;;OAKG;IACH,IAAI,EAAE,cAAc,CAAC;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,yBAAyB,CAAC;IAC3C;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAuF/D,CAAC"}
|
|
@@ -9,12 +9,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
import React from "react";
|
|
12
|
-
import { useSharedStateRegistry } from "../
|
|
12
|
+
import { useSharedStateRegistry } from "../shared-hooks";
|
|
13
13
|
import { FluidContext } from "./AzureProvider";
|
|
14
14
|
import { LiveShareTurboClient } from "@microsoft/live-share-turbo";
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
*/
|
|
15
18
|
export const LiveShareContext = React.createContext({});
|
|
19
|
+
/**
|
|
20
|
+
* Hook to get the latest React context state for `LiveShareContext`.
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* This hook can only be used in a child component of `<LiveShareProvider>`.
|
|
24
|
+
* See `useFluidObjectsContext` for other information related to the Live Share session, such as the `container`.
|
|
25
|
+
*
|
|
26
|
+
* @returns current state of `LiveShareContext`
|
|
27
|
+
*/
|
|
16
28
|
export const useLiveShareContext = () => {
|
|
17
29
|
const context = React.useContext(LiveShareContext);
|
|
30
|
+
if (!isLiveShareContext(context)) {
|
|
31
|
+
throw new Error("@microsoft/live-share-react: attempting to use `useLiveShareContext()` from a component that is not a child of `<LiveShareProvider>`.\nTo fix this error, ensure that you are only using Live Share hooks (e.g., `useLiveState`) from a child component of `<LiveShareProvider>`.");
|
|
32
|
+
}
|
|
18
33
|
return context;
|
|
19
34
|
};
|
|
20
35
|
/**
|
|
@@ -66,4 +81,7 @@ export const LiveShareProvider = (props) => {
|
|
|
66
81
|
throw new Error("Cannot create new container through createContainer in LiveShareProvider");
|
|
67
82
|
}) }, stateRegistryCallbacks) }, { children: props.children })) })));
|
|
68
83
|
};
|
|
84
|
+
function isLiveShareContext(value) {
|
|
85
|
+
return (typeof (value === null || value === void 0 ? void 0 : value.created) === "boolean" && typeof (value === null || value === void 0 ? void 0 : value.join) === "function");
|
|
86
|
+
}
|
|
69
87
|
//# sourceMappingURL=LiveShareProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveShareProvider.js","sourceRoot":"","sources":["../../src/providers/LiveShareProvider.tsx"],"names":[],"mappings":";;;;;;;;;;AAMA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"LiveShareProvider.js","sourceRoot":"","sources":["../../src/providers/LiveShareProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared-hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared-hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared-hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared-hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC"}
|
|
@@ -6,6 +6,10 @@ import { FluidObject, IFluidLoadable } from "@fluidframework/core-interfaces";
|
|
|
6
6
|
import { LoadableObjectClass } from "fluid-framework";
|
|
7
7
|
/**
|
|
8
8
|
* Hook to gets or creates a DDS that corresponds to a given uniqueKey string.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
|
|
12
|
+
*
|
|
9
13
|
* @template T Type of Fluid LoadableObjectClass type to load. Must conform to IFluidLoadable interface.
|
|
10
14
|
* @param uniqueKey uniqueKey value for the data object
|
|
11
15
|
* @param loadableObjectClass Fluid LoadableObjectClass<T> to create/load.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDynamicDDS.d.ts","sourceRoot":"","sources":["../../src/shared-hooks/useDynamicDDS.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAE9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD
|
|
1
|
+
{"version":3,"file":"useDynamicDDS.d.ts","sourceRoot":"","sources":["../../src/shared-hooks/useDynamicDDS.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAE9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CACzB,CAAC,SAAS,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,cAAc,EAE5D,SAAS,EAAE,MAAM,EACjB,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC3C,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,GACrC;IACC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;CAC5B,CAkDA"}
|
|
@@ -15,6 +15,10 @@ import React from "react";
|
|
|
15
15
|
import { useFluidObjectsContext } from "../providers";
|
|
16
16
|
/**
|
|
17
17
|
* Hook to gets or creates a DDS that corresponds to a given uniqueKey string.
|
|
18
|
+
*
|
|
19
|
+
* @remarks
|
|
20
|
+
* This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
|
|
21
|
+
*
|
|
18
22
|
* @template T Type of Fluid LoadableObjectClass type to load. Must conform to IFluidLoadable interface.
|
|
19
23
|
* @param uniqueKey uniqueKey value for the data object
|
|
20
24
|
* @param loadableObjectClass Fluid LoadableObjectClass<T> to create/load.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDynamicDDS.js","sourceRoot":"","sources":["../../src/shared-hooks/useDynamicDDS.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;;;;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGtD
|
|
1
|
+
{"version":3,"file":"useDynamicDDS.js","sourceRoot":"","sources":["../../src/shared-hooks/useDynamicDDS.ts"],"names":[],"mappings":"AAAA;;;GAGG;;;;;;;;;;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGtD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAGzB,SAAiB,EACjB,mBAA2C,EAC3C,iBAAoC;IAKpC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAK,CAAC;IAC1C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAS,CAAC;IAClD;;OAEG;IACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAE1D;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QACpC,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,uFAAuF;QACvF,MAAM,QAAQ,GAAG,GAAS,EAAE;YACxB,IAAI;gBACA,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,MAAM,CACtC,SAAS,EACT,mBAAmB,EACnB,iBAAiB,CACpB,CAAC;gBACF,IAAI,OAAO,EAAE;oBACT,MAAM,CAAC,GAAG,CAAC,CAAC;iBACf;aACJ;YAAC,OAAO,KAAc,EAAE;gBACrB,IAAI,KAAK,YAAY,KAAK,EAAE;oBACxB,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACnB;qBAAM;oBACH,QAAQ,CACJ,IAAI,KAAK,CACL,gEAAgE,CACnE,CACJ,CAAC;iBACL;aACJ;QACL,CAAC,CAAA,CAAC;QACF,QAAQ,EAAE,CAAC;QACX,OAAO,GAAG,EAAE;YACR,OAAO,GAAG,KAAK,CAAC;QACpB,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE9C,OAAO;QACH,GAAG;QACH,KAAK;KACR,CAAC;AACN,CAAC"}
|
|
@@ -10,6 +10,7 @@ import { IUseSharedMapResults, SharedMapInitialData } from "../types";
|
|
|
10
10
|
* The primary benefit of using the `useSharedMap` hook rather than the Fluid `SharedMap`
|
|
11
11
|
* directly is that it integrates nicely with React state and automates repetitive tasks.
|
|
12
12
|
* If you want to use `SharedMap` this hook creates directly, you can do that as well.
|
|
13
|
+
* This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
|
|
13
14
|
*
|
|
14
15
|
* @template TData Optional typing for objects stored in the SharedMap. Default is `any` type.
|
|
15
16
|
* @param uniqueKey the unique key for the `SharedMap`. If one does not yet exist, a new `SharedMap`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSharedMap.d.ts","sourceRoot":"","sources":["../../src/shared-hooks/useSharedMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAStE
|
|
1
|
+
{"version":3,"file":"useSharedMap.d.ts","sourceRoot":"","sources":["../../src/shared-hooks/useSharedMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAStE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,KAAK,GAAG,GAAG,EACpC,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAC1C,oBAAoB,CAAC,KAAK,CAAC,CAmG7B"}
|
|
@@ -15,6 +15,7 @@ import { ActionContainerNotJoinedError, ActionLiveDataObjectUndefinedError, } fr
|
|
|
15
15
|
* The primary benefit of using the `useSharedMap` hook rather than the Fluid `SharedMap`
|
|
16
16
|
* directly is that it integrates nicely with React state and automates repetitive tasks.
|
|
17
17
|
* If you want to use `SharedMap` this hook creates directly, you can do that as well.
|
|
18
|
+
* This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
|
|
18
19
|
*
|
|
19
20
|
* @template TData Optional typing for objects stored in the SharedMap. Default is `any` type.
|
|
20
21
|
* @param uniqueKey the unique key for the `SharedMap`. If one does not yet exist, a new `SharedMap`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSharedMap.js","sourceRoot":"","sources":["../../src/shared-hooks/useSharedMap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACH,6BAA6B,EAC7B,kCAAkC,GACrC,MAAM,aAAa,CAAC;AAErB
|
|
1
|
+
{"version":3,"file":"useSharedMap.js","sourceRoot":"","sources":["../../src/shared-hooks/useSharedMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { DisposeSharedStateAction, SetSharedStateAction } from "../types";
|
|
|
10
10
|
* Values set through this state is automatically attached to a `SharedMap` that the `AzureProvider`
|
|
11
11
|
* creates. If you are synchronizing complex data structures that multiple users will be setting simultaneously,
|
|
12
12
|
* consider using an optimized hook for your data structure (e.g., `useSharedMap`, `useSharedString`, etc.).
|
|
13
|
+
* This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
|
|
13
14
|
*
|
|
14
15
|
* @template S Typing for objects stored associated with the `uniqueKey`.
|
|
15
16
|
* @param uniqueKey the unique key for a `SharedMap`. If you use the same key for multiple components, those components will reference the same state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSharedState.d.ts","sourceRoot":"","sources":["../../src/shared-hooks/useSharedState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI1E
|
|
1
|
+
{"version":3,"file":"useSharedState.d.ts","sourceRoot":"","sources":["../../src/shared-hooks/useSharedState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI1E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAG,GAAG,EAClC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,CAAC,GAChB,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAkExD"}
|
|
@@ -13,6 +13,7 @@ import { isPrevStateCallback } from "../internal";
|
|
|
13
13
|
* Values set through this state is automatically attached to a `SharedMap` that the `AzureProvider`
|
|
14
14
|
* creates. If you are synchronizing complex data structures that multiple users will be setting simultaneously,
|
|
15
15
|
* consider using an optimized hook for your data structure (e.g., `useSharedMap`, `useSharedString`, etc.).
|
|
16
|
+
* This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
|
|
16
17
|
*
|
|
17
18
|
* @template S Typing for objects stored associated with the `uniqueKey`.
|
|
18
19
|
* @param uniqueKey the unique key for a `SharedMap`. If you use the same key for multiple components, those components will reference the same state.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSharedState.js","sourceRoot":"","sources":["../../src/shared-hooks/useSharedState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"useSharedState.js","sourceRoot":"","sources":["../../src/shared-hooks/useSharedState.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAC1B,SAAiB,EACjB,YAAe;IAEf;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAI,YAAY,CAAC,CAAC;IACpE;;OAEG;IACH,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C;;OAEG;IACH,MAAM,EACF,4BAA4B,EAC5B,8BAA8B,EAC9B,iBAAiB,EACjB,iBAAiB,GACpB,GAAG,sBAAsB,EAAE,CAAC;IAE7B;;OAEG;IACH,MAAM,cAAc,GAA4B,KAAK,CAAC,WAAW,CAC7D,CAAC,KAAgC,EAAE,EAAE;QACjC,aAAa,CAAC,CAAC,SAAS,EAAE,EAAE;YACxB,MAAM,UAAU,GAAG,mBAAmB,CAAI,KAAK,CAAC;gBAC5C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;gBAClB,CAAC,CAAC,KAAK,CAAC;YACZ,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACzC,OAAO,UAAU,CAAC;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,EACD,CAAC,SAAS,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAChD,CAAC;IAEF;;OAEG;IACH,MAAM,kBAAkB,GACpB,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACnB,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEvC;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,4BAA4B,CACxB,SAAS,EACT,cAAc,CAAC,OAAO,EACtB,aAAa,CAChB,CAAC;QACF,OAAO,GAAG,EAAE;YACR,8BAA8B,CAAC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;QACtE,CAAC,CAAC;IACN,CAAC,EAAE;QACC,SAAS;QACT,4BAA4B;QAC5B,8BAA8B;KACjC,CAAC,CAAC;IAEH,OAAO,CAAC,UAAU,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the Microsoft Live Share SDK License.
|
|
4
|
+
*/
|
|
5
|
+
import { DeleteSharedStateAction, IAzureContainerResults, RegisterSharedSetStateAction, UnregisterSharedSetStateAction, UpdateSharedStateAction } from "../types";
|
|
6
|
+
/**
|
|
7
|
+
* Response for the {@link useSharedStateRegistry} hook.
|
|
8
|
+
*/
|
|
9
|
+
export interface ISharedStateRegistryResponse {
|
|
10
|
+
/**
|
|
11
|
+
* Register a set state action callback
|
|
12
|
+
*/
|
|
13
|
+
registerSharedSetStateAction: RegisterSharedSetStateAction;
|
|
14
|
+
/**
|
|
15
|
+
* Unregister a set state action callback
|
|
16
|
+
*/
|
|
17
|
+
unregisterSharedSetStateAction: UnregisterSharedSetStateAction;
|
|
18
|
+
/**
|
|
19
|
+
* Setter callback to update the shared state
|
|
20
|
+
*/
|
|
21
|
+
updateSharedState: UpdateSharedStateAction;
|
|
22
|
+
/**
|
|
23
|
+
* Delete a shared state value
|
|
24
|
+
*/
|
|
25
|
+
deleteSharedState: DeleteSharedStateAction;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Hook used internally to keep track of the SharedSetStateActionMap for each unique key. It sets state values for provided keys and updates components listening to the values.
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* Use this if you are building a custom `LiveShareProvider` or `AzureProvider` implementation in your app.
|
|
32
|
+
*
|
|
33
|
+
* @param results IAzureContainerResults response or undefined
|
|
34
|
+
* @returns ISharedStateRegistryResponse object
|
|
35
|
+
*/
|
|
36
|
+
export declare const useSharedStateRegistry: (results: IAzureContainerResults | undefined) => ISharedStateRegistryResponse;
|
|
37
|
+
//# sourceMappingURL=useSharedStateRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSharedStateRegistry.d.ts","sourceRoot":"","sources":["../../src/shared-hooks/useSharedStateRegistry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAE5B,8BAA8B,EAC9B,uBAAuB,EAC1B,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,4BAA4B;IACzC;;OAEG;IACH,4BAA4B,EAAE,4BAA4B,CAAC;IAC3D;;OAEG;IACH,8BAA8B,EAAE,8BAA8B,CAAC;IAC/D;;OAEG;IACH,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C;;OAEG;IACH,iBAAiB,EAAE,uBAAuB,CAAC;CAC9C;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,YACtB,sBAAsB,GAAG,SAAS,KAC5C,4BAwHF,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the Microsoft Live Share SDK License.
|
|
4
|
+
*/
|
|
5
|
+
import React from "react";
|
|
6
|
+
/**
|
|
7
|
+
* Hook used internally to keep track of the SharedSetStateActionMap for each unique key. It sets state values for provided keys and updates components listening to the values.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* Use this if you are building a custom `LiveShareProvider` or `AzureProvider` implementation in your app.
|
|
11
|
+
*
|
|
12
|
+
* @param results IAzureContainerResults response or undefined
|
|
13
|
+
* @returns ISharedStateRegistryResponse object
|
|
14
|
+
*/
|
|
15
|
+
export const useSharedStateRegistry = (results) => {
|
|
16
|
+
const registeredSharedSetStateActionMapRef = React.useRef(new Map());
|
|
17
|
+
/**
|
|
18
|
+
* @see ISharedStateRegistryResponse.registerSharedSetStateAction
|
|
19
|
+
*/
|
|
20
|
+
const registerSharedSetStateAction = React.useCallback((uniqueKey, componentId, setLocalStateAction) => {
|
|
21
|
+
let actionsMap = registeredSharedSetStateActionMapRef.current.get(uniqueKey);
|
|
22
|
+
if (actionsMap) {
|
|
23
|
+
if (!actionsMap.has(componentId)) {
|
|
24
|
+
actionsMap.set(componentId, setLocalStateAction);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
actionsMap = new Map();
|
|
29
|
+
actionsMap.set(componentId, setLocalStateAction);
|
|
30
|
+
registeredSharedSetStateActionMapRef.current.set(uniqueKey, actionsMap);
|
|
31
|
+
}
|
|
32
|
+
// Set initial values, if known
|
|
33
|
+
const stateMap = results === null || results === void 0 ? void 0 : results.container.initialObjects.TURBO_STATE_MAP;
|
|
34
|
+
const initialValue = stateMap === null || stateMap === void 0 ? void 0 : stateMap.get(uniqueKey);
|
|
35
|
+
if (initialValue) {
|
|
36
|
+
setLocalStateAction(initialValue);
|
|
37
|
+
}
|
|
38
|
+
}, [results]);
|
|
39
|
+
/**
|
|
40
|
+
* @see ISharedStateRegistryResponse.unregisterSharedSetStateAction
|
|
41
|
+
*/
|
|
42
|
+
const unregisterSharedSetStateAction = React.useCallback((uniqueKey, componentId) => {
|
|
43
|
+
let actionsMap = registeredSharedSetStateActionMapRef.current.get(uniqueKey);
|
|
44
|
+
if (actionsMap === null || actionsMap === void 0 ? void 0 : actionsMap.has(componentId)) {
|
|
45
|
+
actionsMap.delete(componentId);
|
|
46
|
+
}
|
|
47
|
+
}, []);
|
|
48
|
+
/**
|
|
49
|
+
* @see ISharedStateRegistryResponse.updateSharedState
|
|
50
|
+
*/
|
|
51
|
+
const updateSharedState = React.useCallback((uniqueKey, value) => {
|
|
52
|
+
if (!results)
|
|
53
|
+
return;
|
|
54
|
+
const { container } = results;
|
|
55
|
+
const stateMap = container.initialObjects
|
|
56
|
+
.TURBO_STATE_MAP;
|
|
57
|
+
stateMap.set(uniqueKey, value);
|
|
58
|
+
}, [results]);
|
|
59
|
+
/**
|
|
60
|
+
* @see ISharedStateRegistryResponse.deleteSharedState
|
|
61
|
+
*/
|
|
62
|
+
const deleteSharedState = React.useCallback((uniqueKey) => {
|
|
63
|
+
if (!results)
|
|
64
|
+
return;
|
|
65
|
+
const { container } = results;
|
|
66
|
+
let actionsMap = registeredSharedSetStateActionMapRef.current.get(uniqueKey);
|
|
67
|
+
actionsMap === null || actionsMap === void 0 ? void 0 : actionsMap.clear();
|
|
68
|
+
const stateMap = container.initialObjects
|
|
69
|
+
.TURBO_STATE_MAP;
|
|
70
|
+
stateMap.delete(uniqueKey);
|
|
71
|
+
}, [results]);
|
|
72
|
+
React.useEffect(() => {
|
|
73
|
+
if (!results)
|
|
74
|
+
return;
|
|
75
|
+
const { container } = results;
|
|
76
|
+
const stateMap = container.initialObjects.TURBO_STATE_MAP;
|
|
77
|
+
const valueChangedListener = (changed) => {
|
|
78
|
+
if (registeredSharedSetStateActionMapRef.current.has(changed.key)) {
|
|
79
|
+
const value = stateMap.get(changed.key);
|
|
80
|
+
const actionMap = registeredSharedSetStateActionMapRef.current.get(changed.key);
|
|
81
|
+
actionMap === null || actionMap === void 0 ? void 0 : actionMap.forEach((setLocalStateHandler) => {
|
|
82
|
+
setLocalStateHandler(value);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
stateMap.on("valueChanged", valueChangedListener);
|
|
87
|
+
// Set initial values
|
|
88
|
+
stateMap.forEach((value, key) => {
|
|
89
|
+
const actionMap = registeredSharedSetStateActionMapRef.current.get(key);
|
|
90
|
+
actionMap === null || actionMap === void 0 ? void 0 : actionMap.forEach((setLocalStateHandler) => {
|
|
91
|
+
setLocalStateHandler(value);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
return () => {
|
|
95
|
+
stateMap.off("valueChanged", valueChangedListener);
|
|
96
|
+
};
|
|
97
|
+
}, [results]);
|
|
98
|
+
return {
|
|
99
|
+
registerSharedSetStateAction,
|
|
100
|
+
unregisterSharedSetStateAction,
|
|
101
|
+
updateSharedState,
|
|
102
|
+
deleteSharedState,
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=useSharedStateRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSharedStateRegistry.js","sourceRoot":"","sources":["../../src/shared-hooks/useSharedStateRegistry.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/live-share-react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0-preview.0",
|
|
4
4
|
"description": "Build collaborative React apps using Microsoft's Fluid & Live Share frameworks with ease.",
|
|
5
5
|
"author": "Microsoft",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"typecheck": "tsc"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@microsoft/live-share-turbo": "1.
|
|
15
|
+
"@microsoft/live-share-turbo": "1.3.0-preview.0",
|
|
16
16
|
"url": "^0.11.0",
|
|
17
17
|
"uuid": "^9.0.0"
|
|
18
18
|
},
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"@babel/core": "^7.21.8",
|
|
21
21
|
"@fluidframework/azure-client": "^1.1.1",
|
|
22
22
|
"@fluidframework/test-client-utils": "^1.3.6",
|
|
23
|
-
"@microsoft/live-share": "1.
|
|
24
|
-
"@microsoft/live-share-canvas": "1.
|
|
25
|
-
"@microsoft/live-share-media": "1.
|
|
23
|
+
"@microsoft/live-share": "1.3.0",
|
|
24
|
+
"@microsoft/live-share-canvas": "1.3.0",
|
|
25
|
+
"@microsoft/live-share-media": "1.3.0",
|
|
26
26
|
"@types/react": "^18.0.0",
|
|
27
27
|
"@types/react-dom": "^18.0.0",
|
|
28
28
|
"@types/uuid": "^9.0.1",
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"@fluidframework/azure-client": "^1.0.0",
|
|
35
|
-
"@microsoft/live-share": "1.
|
|
36
|
-
"@microsoft/live-share-canvas": "1.
|
|
37
|
-
"@microsoft/live-share-media": "1.
|
|
35
|
+
"@microsoft/live-share": "1.3.0",
|
|
36
|
+
"@microsoft/live-share-canvas": "1.3.0",
|
|
37
|
+
"@microsoft/live-share-media": "1.3.0",
|
|
38
38
|
"fluid-framework": "^1.2.3",
|
|
39
39
|
"react": "^16.8.0 || ^17 || ^18",
|
|
40
40
|
"react-dom": "^16.8.0 || ^17 || ^18"
|
package/src/internal/errors.ts
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
class UseLiveDataObjectActionError extends Error {
|
|
5
5
|
constructor(ddsName: string, functionName: string, message: string) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
);
|
|
6
|
+
const hookName = `use${toFirstLetterUppercase(ddsName)}`;
|
|
7
|
+
super(`${hookName} ${functionName}: ${message}`);
|
|
9
8
|
}
|
|
10
9
|
}
|
|
11
10
|
|
|
@@ -14,7 +13,11 @@ class UseLiveDataObjectActionError extends Error {
|
|
|
14
13
|
*/
|
|
15
14
|
export class ActionContainerNotJoinedError extends UseLiveDataObjectActionError {
|
|
16
15
|
constructor(ddsName: string, functionName: string) {
|
|
17
|
-
super(
|
|
16
|
+
super(
|
|
17
|
+
ddsName,
|
|
18
|
+
functionName,
|
|
19
|
+
"container has not yet been joined.\nTo fix this error, ensure `container` from `useFluidObjectsContext()` is defined before calling this function.\nIf using `<LiveShareProvider>`, you can instead check the `joined` response is true from `useLiveShareContext()` before calling this function."
|
|
20
|
+
);
|
|
18
21
|
}
|
|
19
22
|
}
|
|
20
23
|
|
|
@@ -23,10 +26,11 @@ export class ActionContainerNotJoinedError extends UseLiveDataObjectActionError
|
|
|
23
26
|
*/
|
|
24
27
|
export class ActionLiveDataObjectUndefinedError extends UseLiveDataObjectActionError {
|
|
25
28
|
constructor(ddsName: string, functionName: string) {
|
|
29
|
+
const hookName = `use${toFirstLetterUppercase(ddsName)}`;
|
|
26
30
|
super(
|
|
27
31
|
ddsName,
|
|
28
32
|
functionName,
|
|
29
|
-
`${ddsName} is undefined, which means it is still being dynamically created
|
|
33
|
+
`${ddsName} is undefined, which means it is still being dynamically created.\nTo fix this error, ensure that \`${ddsName}\` (found in the response of \`${hookName}\`) is defined before calling this function.`
|
|
30
34
|
);
|
|
31
35
|
}
|
|
32
36
|
}
|
|
@@ -36,7 +40,12 @@ export class ActionLiveDataObjectUndefinedError extends UseLiveDataObjectActionE
|
|
|
36
40
|
*/
|
|
37
41
|
export class ActionLiveDataObjectInitializedError extends UseLiveDataObjectActionError {
|
|
38
42
|
constructor(ddsName: string, functionName: string) {
|
|
39
|
-
|
|
43
|
+
const hookName = `use${toFirstLetterUppercase(ddsName)}`;
|
|
44
|
+
super(
|
|
45
|
+
ddsName,
|
|
46
|
+
functionName,
|
|
47
|
+
`${ddsName} is not yet initialized.\nTo fix this error, ensure that \`${ddsName}?.isInitialized\` is true (found in the response of \`${hookName}\`) before calling this function.`
|
|
48
|
+
);
|
|
40
49
|
}
|
|
41
50
|
}
|
|
42
51
|
|
package/src/internal/index.ts
CHANGED
|
@@ -22,6 +22,7 @@ import { isRefObject } from "../utils";
|
|
|
22
22
|
* @remarks
|
|
23
23
|
* Use this hook to set up an `LiveCanvas` object, which is used for collaborative inking. It takes several input parameters, including a unique key,
|
|
24
24
|
* a reference to a canvas element, and various settings for the inking tool, brush, and canvas offset and scale.
|
|
25
|
+
* This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
|
|
25
26
|
*
|
|
26
27
|
* @param uniqueKey the unique key for the `LiveCanvas`. If one does not yet exist, a new one.
|
|
27
28
|
* @param canvasElementRef the HTML div element ref or document ID that `InkingManager` will use for canvas-based collaboration.
|
|
@@ -30,6 +30,7 @@ import { useFluidObjectsContext } from "../providers";
|
|
|
30
30
|
* @remarks
|
|
31
31
|
* Use this hook if you want to send transient JSON objects to everyone connected to the Fluid container,
|
|
32
32
|
* such as when sending push notifications or reactions.
|
|
33
|
+
* This hook can only be used in a child component of `<LiveShareProvider>` or `<AzureProvider>`.
|
|
33
34
|
*
|
|
34
35
|
* @template TEvent Optional typing for events sent & received. Default is `object` type.
|
|
35
36
|
* @param uniqueKey the unique key for the `LiveEvent`. If one does not yet exist, a new one
|