@streamlayer/react 0.1.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/package.json +37 -0
- package/src/app/app.d.ts +2 -0
- package/src/app/app.js +18 -0
- package/src/app/app.js.map +1 -0
- package/src/app/provider.d.ts +19 -0
- package/src/app/provider.js +26 -0
- package/src/app/provider.js.map +1 -0
- package/src/app/useStreamLayer.d.ts +7 -0
- package/src/app/useStreamLayer.js +39 -0
- package/src/app/useStreamLayer.js.map +1 -0
- package/src/environments/environment.d.ts +3 -0
- package/src/environments/environment.js +6 -0
- package/src/environments/environment.js.map +1 -0
- package/src/environments/environment.prod.d.ts +3 -0
- package/src/environments/environment.prod.js +4 -0
- package/src/environments/environment.prod.js.map +1 -0
- package/src/main.d.ts +3 -0
- package/src/main.js +4 -0
- package/src/main.js.map +1 -0
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@streamlayer/react",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./src/main.js",
|
|
6
|
+
"typings": "./src/main.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"src/",
|
|
9
|
+
"package.json"
|
|
10
|
+
],
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@emotion/react": "11.11.1",
|
|
13
|
+
"@emotion/styled": "11.11.0",
|
|
14
|
+
"@nanostores/react": "^0.7.1",
|
|
15
|
+
"@streamlayer/sdk-web": "workspace:^",
|
|
16
|
+
"@streamlayer/react-ui": "workspace:^",
|
|
17
|
+
"react": "18.2.0",
|
|
18
|
+
"react-dom": "18.2.0",
|
|
19
|
+
"react-router-dom": "6.16.0"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@babel/preset-react": "^7.14.5",
|
|
23
|
+
"@babel/preset-typescript": "^7.23.0",
|
|
24
|
+
"@emotion/babel-plugin": "11.11.0",
|
|
25
|
+
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
|
|
26
|
+
"@svgr/webpack": "^8.0.1",
|
|
27
|
+
"@testing-library/react": "14.0.0",
|
|
28
|
+
"@types/react": "18.2.28",
|
|
29
|
+
"@types/react-dom": "18.2.13",
|
|
30
|
+
"eslint-plugin-jsx-a11y": "6.7.1",
|
|
31
|
+
"eslint-plugin-react": "7.33.2",
|
|
32
|
+
"eslint-plugin-react-hooks": "4.6.0",
|
|
33
|
+
"react-refresh": "^0.14.0",
|
|
34
|
+
"url-loader": "^4.1.1"
|
|
35
|
+
},
|
|
36
|
+
"module": "./src/main.js"
|
|
37
|
+
}
|
package/src/app/app.d.ts
ADDED
package/src/app/app.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { Demo } from '@streamlayer/react-ui';
|
|
3
|
+
import { useContext } from 'react';
|
|
4
|
+
import { StreamLayerContext, StreamLayerStatus } from './provider';
|
|
5
|
+
export const StreamLayerSDKReact = () => {
|
|
6
|
+
const { sdk, status } = useContext(StreamLayerContext);
|
|
7
|
+
if (status === StreamLayerStatus.UNSET) {
|
|
8
|
+
throw new Error('Wrap app in `StreamLayerProvider`');
|
|
9
|
+
}
|
|
10
|
+
if (status === StreamLayerStatus.CONNECTED) {
|
|
11
|
+
return _jsx("div", { children: "wait" });
|
|
12
|
+
}
|
|
13
|
+
if (sdk === undefined) {
|
|
14
|
+
return _jsx("div", { children: "sdk not initialized" });
|
|
15
|
+
}
|
|
16
|
+
return _jsx(Demo, { sdk: sdk });
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../../packages/react/src/app/app.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAa,GAAG,EAAE;IAChD,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAEtD,IAAI,MAAM,KAAK,iBAAiB,CAAC,KAAK,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;KACrD;IAED,IAAI,MAAM,KAAK,iBAAiB,CAAC,SAAS,EAAE;QAC1C,OAAO,iCAAe,CAAA;KACvB;IAED,IAAI,GAAG,KAAK,SAAS,EAAE;QACrB,OAAO,gDAA8B,CAAA;KACtC;IAED,OAAO,KAAC,IAAI,IAAC,GAAG,EAAE,GAAG,GAAI,CAAA;AAC3B,CAAC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { StreamLayerSDK, StreamLayerPlugin } from '@streamlayer/sdk-web-interfaces';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
export declare enum StreamLayerStatus {
|
|
4
|
+
UNSET = 0,
|
|
5
|
+
CONNECTED = 1,
|
|
6
|
+
READY = 2
|
|
7
|
+
}
|
|
8
|
+
export declare const StreamLayerContext: React.Context<{
|
|
9
|
+
status: StreamLayerStatus;
|
|
10
|
+
sdk?: StreamLayerSDK | undefined;
|
|
11
|
+
}>;
|
|
12
|
+
type StreamLayerProps = {
|
|
13
|
+
sdkKey: string;
|
|
14
|
+
plugins?: Set<StreamLayerPlugin>;
|
|
15
|
+
};
|
|
16
|
+
export declare const StreamLayerProvider: React.FC<StreamLayerProps & {
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
}>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@emotion/react/jsx-runtime";
|
|
2
|
+
import { createContext, useMemo } from 'react';
|
|
3
|
+
import { useStreamLayer } from './useStreamLayer';
|
|
4
|
+
export var StreamLayerStatus;
|
|
5
|
+
(function (StreamLayerStatus) {
|
|
6
|
+
StreamLayerStatus[StreamLayerStatus["UNSET"] = 0] = "UNSET";
|
|
7
|
+
StreamLayerStatus[StreamLayerStatus["CONNECTED"] = 1] = "CONNECTED";
|
|
8
|
+
StreamLayerStatus[StreamLayerStatus["READY"] = 2] = "READY";
|
|
9
|
+
})(StreamLayerStatus || (StreamLayerStatus = {}));
|
|
10
|
+
export const StreamLayerContext = createContext({
|
|
11
|
+
status: StreamLayerStatus.UNSET,
|
|
12
|
+
});
|
|
13
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
14
|
+
StreamLayerContext.displayName = 'StreamLayerProvider';
|
|
15
|
+
}
|
|
16
|
+
export const StreamLayerProvider = ({ sdkKey, plugins, children, }) => {
|
|
17
|
+
const streamLayer = useStreamLayer(sdkKey, plugins);
|
|
18
|
+
const value = useMemo(() => {
|
|
19
|
+
if (!streamLayer) {
|
|
20
|
+
return { status: StreamLayerStatus.CONNECTED };
|
|
21
|
+
}
|
|
22
|
+
return { sdk: streamLayer, status: StreamLayerStatus.READY };
|
|
23
|
+
}, [streamLayer]);
|
|
24
|
+
return _jsx(StreamLayerContext.Provider, { value: value, children: children });
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../../packages/react/src/app/provider.tsx"],"names":[],"mappings":";AAEA,OAAc,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,2DAAS,CAAA;IACT,mEAAa,CAAA;IACb,2DAAS,CAAA;AACX,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAsD;IACnG,MAAM,EAAE,iBAAiB,CAAC,KAAK;CAChC,CAAC,CAAA;AAEF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;IACzC,kBAAkB,CAAC,WAAW,GAAG,qBAAqB,CAAA;CACvD;AAID,MAAM,CAAC,MAAM,mBAAmB,GAA+D,CAAC,EAC9F,MAAM,EACN,OAAO,EACP,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE;QACzB,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAA;SAC/C;QAED,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAAE,CAAA;IAC9D,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA+B,CAAA;AAC5F,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { StreamLayerSDK, StreamLayerPlugin } from '@streamlayer/sdk-web-interfaces';
|
|
2
|
+
declare global {
|
|
3
|
+
interface Window {
|
|
4
|
+
instance: any;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export declare const useStreamLayer: (sdkKey: string, plugins?: Set<StreamLayerPlugin>) => StreamLayerSDK | null;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { StreamLayer } from '@streamlayer/sdk-web';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
window.instance = null;
|
|
4
|
+
export const useStreamLayer = (sdkKey, plugins) => {
|
|
5
|
+
const [sdk, setSdk] = useState(null);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
let ignore = false;
|
|
8
|
+
if (!sdkKey) {
|
|
9
|
+
throw new Error('sdk key should be provided');
|
|
10
|
+
}
|
|
11
|
+
const instance = StreamLayer(sdkKey);
|
|
12
|
+
if (plugins) {
|
|
13
|
+
for (const plugin of plugins) {
|
|
14
|
+
instance.use(plugin);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
instance
|
|
18
|
+
.ready()
|
|
19
|
+
.then((service) => {
|
|
20
|
+
if (!ignore) {
|
|
21
|
+
window.instance = service;
|
|
22
|
+
setSdk(service.sdk);
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
.catch((err) => console.log(err));
|
|
26
|
+
return () => {
|
|
27
|
+
ignore = true;
|
|
28
|
+
instance.close(function (err) {
|
|
29
|
+
if (err)
|
|
30
|
+
throw err;
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
// ignored because we should skip updating plugins.
|
|
34
|
+
// this deps should be provided on mount and we have checked this
|
|
35
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36
|
+
}, [sdkKey]);
|
|
37
|
+
return sdk;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useStreamLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStreamLayer.js","sourceRoot":"","sources":["../../../../../packages/react/src/app/useStreamLayer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAS3C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;AAEtB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,OAAgC,EAAE,EAAE;IACjF,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAA;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,GAAG,KAAK,CAAA;QAElB,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC9C;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;QAEpC,IAAI,OAAO,EAAE;YACX,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;aACrB;SACF;QAED,QAAQ;aACL,KAAK,EAAE;aACP,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAA;gBACzB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;aACpB;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QAEnC,OAAO,GAAG,EAAE;YACV,MAAM,GAAG,IAAI,CAAA;YACb,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG;gBAC1B,IAAI,GAAG;oBAAE,MAAM,GAAG,CAAA;YACpB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QACD,mDAAmD;QACnD,iEAAiE;QACjE,uDAAuD;IACzD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../../packages/react/src/environments/environment.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,kFAAkF;AAElF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;CAClB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.prod.js","sourceRoot":"","sources":["../../../../../packages/react/src/environments/environment.prod.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,IAAI;CACjB,CAAA"}
|
package/src/main.d.ts
ADDED
package/src/main.js
ADDED
package/src/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../packages/react/src/main.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
|