@owlmeans/web-client 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.
Files changed (102) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +617 -0
  3. package/build/components/dispatcher/component.d.ts +2 -0
  4. package/build/components/dispatcher/component.d.ts.map +1 -0
  5. package/build/components/dispatcher/component.js +41 -0
  6. package/build/components/dispatcher/component.js.map +1 -0
  7. package/build/components/dispatcher/index.d.ts +2 -0
  8. package/build/components/dispatcher/index.d.ts.map +1 -0
  9. package/build/components/dispatcher/index.js +2 -0
  10. package/build/components/dispatcher/index.js.map +1 -0
  11. package/build/components/index.d.ts +3 -0
  12. package/build/components/index.d.ts.map +1 -0
  13. package/build/components/index.js +3 -0
  14. package/build/components/index.js.map +1 -0
  15. package/build/components/uploader/component.d.ts +4 -0
  16. package/build/components/uploader/component.d.ts.map +1 -0
  17. package/build/components/uploader/component.js +10 -0
  18. package/build/components/uploader/component.js.map +1 -0
  19. package/build/components/uploader/image.d.ts +4 -0
  20. package/build/components/uploader/image.d.ts.map +1 -0
  21. package/build/components/uploader/image.js +8 -0
  22. package/build/components/uploader/image.js.map +1 -0
  23. package/build/components/uploader/index.d.ts +4 -0
  24. package/build/components/uploader/index.d.ts.map +1 -0
  25. package/build/components/uploader/index.js +3 -0
  26. package/build/components/uploader/index.js.map +1 -0
  27. package/build/components/uploader/types.d.ts +13 -0
  28. package/build/components/uploader/types.d.ts.map +1 -0
  29. package/build/components/uploader/types.js +2 -0
  30. package/build/components/uploader/types.js.map +1 -0
  31. package/build/consts.d.ts +2 -0
  32. package/build/consts.d.ts.map +1 -0
  33. package/build/consts.js +2 -0
  34. package/build/consts.js.map +1 -0
  35. package/build/context.d.ts +4 -0
  36. package/build/context.d.ts.map +1 -0
  37. package/build/context.js +18 -0
  38. package/build/context.js.map +1 -0
  39. package/build/errors.d.ts +11 -0
  40. package/build/errors.d.ts.map +1 -0
  41. package/build/errors.js +19 -0
  42. package/build/errors.js.map +1 -0
  43. package/build/exports.d.ts +9 -0
  44. package/build/exports.d.ts.map +1 -0
  45. package/build/exports.js +7 -0
  46. package/build/exports.js.map +1 -0
  47. package/build/helper.d.ts +3 -0
  48. package/build/helper.d.ts.map +1 -0
  49. package/build/helper.js +7 -0
  50. package/build/helper.js.map +1 -0
  51. package/build/i18n/auth-en.json +5 -0
  52. package/build/i18n.d.ts +2 -0
  53. package/build/i18n.d.ts.map +1 -0
  54. package/build/i18n.js +4 -0
  55. package/build/i18n.js.map +1 -0
  56. package/build/index.d.ts +13 -0
  57. package/build/index.d.ts.map +1 -0
  58. package/build/index.js +13 -0
  59. package/build/index.js.map +1 -0
  60. package/build/main.d.ts +4 -0
  61. package/build/main.d.ts.map +1 -0
  62. package/build/main.js +22 -0
  63. package/build/main.js.map +1 -0
  64. package/build/modules.d.ts +2 -0
  65. package/build/modules.d.ts.map +1 -0
  66. package/build/modules.js +8 -0
  67. package/build/modules.js.map +1 -0
  68. package/build/router.d.ts +3 -0
  69. package/build/router.d.ts.map +1 -0
  70. package/build/router.js +5 -0
  71. package/build/router.js.map +1 -0
  72. package/build/service.d.ts +6 -0
  73. package/build/service.d.ts.map +1 -0
  74. package/build/service.js +26 -0
  75. package/build/service.js.map +1 -0
  76. package/build/types.d.ts +14 -0
  77. package/build/types.d.ts.map +1 -0
  78. package/build/types.js +2 -0
  79. package/build/types.js.map +1 -0
  80. package/package.json +57 -0
  81. package/src/components/dispatcher/component.tsx +43 -0
  82. package/src/components/dispatcher/index.ts +2 -0
  83. package/src/components/index.ts +3 -0
  84. package/src/components/uploader/component.tsx +17 -0
  85. package/src/components/uploader/image.tsx +10 -0
  86. package/src/components/uploader/index.ts +4 -0
  87. package/src/components/uploader/types.ts +14 -0
  88. package/src/consts.ts +2 -0
  89. package/src/context.ts +27 -0
  90. package/src/errors.ts +25 -0
  91. package/src/exports.ts +9 -0
  92. package/src/helper.ts +8 -0
  93. package/src/i18n/auth-en.json +5 -0
  94. package/src/i18n.ts +5 -0
  95. package/src/index.ts +13 -0
  96. package/src/main.tsx +25 -0
  97. package/src/modules.ts +9 -0
  98. package/src/router.ts +7 -0
  99. package/src/service.ts +41 -0
  100. package/src/types.ts +17 -0
  101. package/tsconfig.json +15 -0
  102. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,3 @@
1
+ export * from './dispatcher/index.js';
2
+ export * from './uploader/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './dispatcher/index.js';
2
+ export * from './uploader/index.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { FC } from 'react';
2
+ import type { UploaderProps } from './types.js';
3
+ export declare const Uploader: FC<UploaderProps>;
4
+ //# sourceMappingURL=component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/uploader/component.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAA;AAGlE,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAStC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useDropzone } from 'react-dropzone';
3
+ export const Uploader = ({ Root, rootProps, children, ...opts }) => {
4
+ Root ??= DefaultRoot;
5
+ rootProps ??= { styles: { cursor: 'pointer' } };
6
+ const { getRootProps, getInputProps } = useDropzone(opts);
7
+ return _jsxs(Root, { ...rootProps, ...getRootProps(), children: [_jsx("input", { ...getInputProps() }), children] });
8
+ };
9
+ const DefaultRoot = ({ children, ...props }) => _jsx("span", { ...props, children: children });
10
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/components/uploader/component.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAsB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;IACpF,IAAI,KAAK,WAAW,CAAA;IACpB,SAAS,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAA;IAE/C,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IACzD,OAAO,MAAC,IAAI,OAAK,SAAS,KAAM,YAAY,EAAE,aAC5C,mBAAW,aAAa,EAAE,GAAI,EAC7B,QAAQ,IACJ,CAAA;AACT,CAAC,CAAA;AAED,MAAM,WAAW,GAA0B,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CACpE,kBAAU,KAAK,YAAG,QAAQ,GAAQ,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { FC } from 'react';
2
+ import type { UploaderProps } from './types.js';
3
+ export declare const ImageUploader: FC<UploaderProps>;
4
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../src/components/uploader/image.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,aAAa,CAK3C,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Uploader } from './component.js';
3
+ export const ImageUploader = ({ children, ...props }) => {
4
+ // props.accept ??= { 'image/*': [] }
5
+ props.maxSize ??= 5 * 1024 * 1024;
6
+ return _jsx(Uploader, { ...props, children: children });
7
+ };
8
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../../src/components/uploader/image.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,MAAM,CAAC,MAAM,aAAa,GAAsB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACzE,qCAAqC;IACrC,KAAK,CAAC,OAAO,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;IAEjC,OAAO,KAAC,QAAQ,OAAK,KAAK,YAAG,QAAQ,GAAY,CAAA;AACnD,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export type * from './types.js';
2
+ export * from './component.js';
3
+ export * from './image.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/uploader/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './component.js';
2
+ export * from './image.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/uploader/index.ts"],"names":[],"mappings":"AAEA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ import type { FC } from 'react';
3
+ import type { DropzoneRootProps, DropzoneOptions } from 'react-dropzone';
4
+ interface RootProps extends Record<string, unknown> {
5
+ }
6
+ export interface UploaderProps extends PropsWithChildren<DropzoneOptions> {
7
+ Root?: FC<PropsWithChildren<any>>;
8
+ rootProps?: RootProps;
9
+ }
10
+ export interface UploaderRootProps extends PropsWithChildren<RootProps>, DropzoneRootProps {
11
+ }
12
+ export {};
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/uploader/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAExE,UAAU,SAAU,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAClD;AAED,MAAM,WAAW,aAAc,SAAQ,iBAAiB,CAAC,eAAe,CAAC;IACvE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA;IACjC,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB,CAAC,SAAS,CAAC,EAAE,iBAAiB;CACzF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/uploader/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const DEFAULT_ROOT = "root";
2
+ //# sourceMappingURL=consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,SAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ export const DEFAULT_ROOT = 'root';
2
+ //# sourceMappingURL=consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { AppConfig, AppContext } from './types.js';
2
+ export declare const makeContext: <C extends AppConfig = AppConfig, T extends AppContext<C> = AppContext<C>>(cfg: C) => T;
3
+ export declare const useContext: <C extends AppConfig = AppConfig, T extends AppContext<C> = AppContext<C>>() => T;
4
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAQlD,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,SAAS,cAAc,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,uBAC7E,CAAC,KACL,CAWF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,cAAa,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,wBACnE,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { makeClientContext } from '@owlmeans/client';
2
+ import { AUTH_RESOURCE } from '@owlmeans/client-auth';
3
+ import { appendWebDbService } from '@owlmeans/web-db';
4
+ import { appendClientResource } from '@owlmeans/client-resource';
5
+ import { useContext as useCtx } from '@owlmeans/client';
6
+ import { extractPrimaryHost } from './helper.js';
7
+ import { appendWebAuthService } from './service.js';
8
+ export const makeContext = (cfg) => {
9
+ const context = makeClientContext(cfg);
10
+ extractPrimaryHost(context);
11
+ appendWebAuthService(context);
12
+ appendWebDbService(context);
13
+ appendClientResource(context, AUTH_RESOURCE);
14
+ context.makeContext = makeContext;
15
+ return context;
16
+ };
17
+ export const useContext = () => useCtx();
18
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,GAAM,EACH,EAAE;IACL,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAM,CAAA;IAC3C,kBAAkB,CAAO,OAAO,CAAC,CAAA;IAEjC,oBAAoB,CAAO,OAAO,CAAC,CAAA;IACnC,kBAAkB,CAAO,OAAO,CAAC,CAAA;IACjC,oBAAoB,CAAO,OAAO,EAAE,aAAa,CAAC,CAAA;IAElD,OAAO,CAAC,WAAW,GAAG,WAAyC,CAAA;IAE/D,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,GAA4E,EAAE,CACtG,MAAM,EAAO,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { ComponentError } from '@owlmeans/client';
2
+ export declare class UploaderError extends ComponentError {
3
+ static typeName: string;
4
+ constructor(message?: string);
5
+ }
6
+ export declare class FileUploadingError extends UploaderError {
7
+ static typeName: string;
8
+ original: Error | undefined;
9
+ constructor(message?: string);
10
+ }
11
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAE/C,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAuB,QAAQ,EAAE,MAAM,CAAuC;gBAElE,OAAO,GAAE,MAAgB;CAItC;AAED,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,OAAuB,QAAQ,EAAE,MAAM,CAA2C;IAE3E,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAA;gBAEtB,OAAO,GAAE,MAAgB;CAItC"}
@@ -0,0 +1,19 @@
1
+ import { ComponentError } from '@owlmeans/client';
2
+ export class UploaderError extends ComponentError {
3
+ static typeName = `${ComponentError.typeName}Uploader`;
4
+ constructor(message = 'error') {
5
+ super(`uploader:${message}`);
6
+ this.type = UploaderError.typeName;
7
+ }
8
+ }
9
+ export class FileUploadingError extends UploaderError {
10
+ static typeName = `${UploaderError.typeName}FileUploading`;
11
+ original;
12
+ constructor(message = 'error') {
13
+ super(`file-uploading:${message}`);
14
+ this.type = FileUploadingError.typeName;
15
+ }
16
+ }
17
+ ComponentError.registerErrorClass(UploaderError);
18
+ ComponentError.registerErrorClass(FileUploadingError);
19
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAA;AAE/C,MAAM,OAAO,aAAc,SAAQ,cAAc;IACxC,MAAM,CAAU,QAAQ,GAAW,GAAG,cAAc,CAAC,QAAQ,UAAU,CAAA;IAE9E,YAAY,UAAkB,OAAO;QACnC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAA;IACpC,CAAC;;AAGH,MAAM,OAAO,kBAAmB,SAAQ,aAAa;IAC5C,MAAM,CAAU,QAAQ,GAAW,GAAG,aAAa,CAAC,QAAQ,eAAe,CAAA;IAE3E,QAAQ,CAAmB;IAElC,YAAY,UAAkB,OAAO;QACnC,KAAK,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAA;IACzC,CAAC;;AAGH,cAAc,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;AAChD,cAAc,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ export { handler } from '@owlmeans/client';
2
+ export { config } from '@owlmeans/client-context';
3
+ export { service } from '@owlmeans/config';
4
+ export { AppType, HOME, ROOT, BASE, GUEST } from '@owlmeans/context';
5
+ export { module, elevate, provideRequest, stab } from '@owlmeans/client-module';
6
+ export { route, frontend } from '@owlmeans/route';
7
+ export type { ClientModule as Module } from '@owlmeans/client-module';
8
+ export type { ClientRoute as Route } from '@owlmeans/client-route';
9
+ //# sourceMappingURL=exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACjD,YAAY,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrE,YAAY,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,wBAAwB,CAAA"}
@@ -0,0 +1,7 @@
1
+ export { handler } from '@owlmeans/client';
2
+ export { config } from '@owlmeans/client-context';
3
+ export { service } from '@owlmeans/config';
4
+ export { AppType, HOME, ROOT, BASE, GUEST } from '@owlmeans/context';
5
+ export { module, elevate, provideRequest, stab } from '@owlmeans/client-module';
6
+ export { route, frontend } from '@owlmeans/route';
7
+ //# sourceMappingURL=exports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { AppConfig, AppContext } from './types.js';
2
+ export declare const extractPrimaryHost: <C extends AppConfig = AppConfig, T extends AppContext<C> = AppContext<C>>(context: T) => void;
3
+ //# sourceMappingURL=helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvD,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,SAAS,cAAc,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,SAKtH,CAAA"}
@@ -0,0 +1,7 @@
1
+ export const extractPrimaryHost = (context) => {
2
+ if (typeof window !== 'undefined') {
3
+ context.cfg.primaryHost = window.location.hostname;
4
+ context.cfg.primaryPort = window.location.port != null && window.location.port != '' ? parseInt(window.location.port) : undefined;
5
+ }
6
+ };
7
+ //# sourceMappingURL=helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAA2E,OAAU,EAAE,EAAE;IACzH,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAA;QAClD,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACnI,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ {
2
+ "dispatcher": {
3
+ "loading": "Loading..."
4
+ }
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":""}
package/build/i18n.js ADDED
@@ -0,0 +1,4 @@
1
+ import authEn from './i18n/auth-en.json';
2
+ import { addI18nLib } from '@owlmeans/i18n';
3
+ addI18nLib('en', 'auth', authEn);
4
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,qBAAqB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ export * from './consts.js';
2
+ export * from './types.js';
3
+ export * from './main.js';
4
+ export * from './router.js';
5
+ export * from './components/index.js';
6
+ export * from './modules.js';
7
+ export * from './exports.js';
8
+ export * from './context.js';
9
+ export * from './helper.js';
10
+ export * from './i18n.js';
11
+ export * from './service.js';
12
+ export * from './errors.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA"}
package/build/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export * from './consts.js';
2
+ export * from './types.js';
3
+ export * from './main.js';
4
+ export * from './router.js';
5
+ export * from './components/index.js';
6
+ export * from './modules.js';
7
+ export * from './exports.js';
8
+ export * from './context.js';
9
+ export * from './helper.js';
10
+ export * from './i18n.js';
11
+ export * from './service.js';
12
+ export * from './errors.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { RenderOptions } from './types.js';
3
+ export declare const render: (node: ReactNode, opts?: RenderOptions) => void;
4
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,eAAO,MAAM,MAAM,SAAU,SAAS,SAAS,aAAa,SAkB3D,CAAA"}
package/build/main.js ADDED
@@ -0,0 +1,22 @@
1
+ import { createRoot, hydrateRoot } from 'react-dom/client';
2
+ import { DEFAULT_ROOT } from './consts.js';
3
+ export const render = (node, opts) => {
4
+ const _callback = () => {
5
+ const key = opts?.domId ?? DEFAULT_ROOT;
6
+ const root = document.getElementById(key);
7
+ if (opts?.debug) {
8
+ console.debug(`Render react app to ${key}`);
9
+ }
10
+ if (root == null) {
11
+ throw new Error(`Root element not found with id: ${key}`);
12
+ }
13
+ if (opts?.hydrate === true) {
14
+ hydrateRoot(root, node);
15
+ }
16
+ else {
17
+ createRoot(root).render(node);
18
+ }
19
+ };
20
+ opts?.onReady ?? true ? window.addEventListener('DOMContentLoaded', _callback) : _callback();
21
+ };
22
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAe,EAAE,IAAoB,EAAE,EAAE;IAC9D,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,IAAI,YAAY,CAAA;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAA;QAC7C,CAAC;QACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAA;QAC3D,CAAC;QACD,IAAI,IAAI,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC,CAAA;IAED,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAA;AAC9F,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const modules: import("@owlmeans/client-module").ClientModule<{}, import("@owlmeans/client-module").ClientRequest<{}>>[];
2
+ //# sourceMappingURL=modules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modules.d.ts","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,OAAO,2GAAO,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { DISPATCHER } from '@owlmeans/auth';
2
+ import { modules as list } from '@owlmeans/client-auth';
3
+ import { elevate } from '@owlmeans/client-module';
4
+ import { handler } from '@owlmeans/client';
5
+ import { Dispatcher } from './components/dispatcher/component.js';
6
+ elevate(list, DISPATCHER, handler(Dispatcher), { force: true });
7
+ export const modules = list;
8
+ //# sourceMappingURL=modules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../src/modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAA;AAEjE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAE/D,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { RouterProvider } from '@owlmeans/client';
2
+ export declare const provide: RouterProvider;
3
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGtD,eAAO,MAAM,OAAO,EAAE,cAErB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { createBrowserRouter } from 'react-router-dom';
2
+ export const provide = (routes) => {
3
+ return createBrowserRouter(routes);
4
+ };
5
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,MAAM,CAAC,MAAM,OAAO,GAAmB,CAAC,MAAM,EAAE,EAAE;IAChD,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { AuthServiceAppend } from '@owlmeans/client-auth';
2
+ import type { AuthService } from '@owlmeans/auth-common';
3
+ import type { ClientConfig, ClientContext } from '@owlmeans/client-context';
4
+ export declare const makeAuthWebService: (alias?: string) => AuthService;
5
+ export declare const appendWebAuthService: <C extends ClientConfig, T extends ClientContext<C>>(ctx: T, alias?: string) => T & AuthServiceAppend;
6
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAIxD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAG3E,eAAO,MAAM,kBAAkB,WAAW,MAAM,KAAmB,WAclE,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,YAAY,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,OAChF,CAAC,UAAS,MAAM,KACpB,CAAC,GAAG,iBAYN,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { DEFAULT_ALIAS } from '@owlmeans/client-auth';
2
+ import { makeAuthService } from '@owlmeans/client-auth';
3
+ import { DISPATCHER } from '@owlmeans/auth';
4
+ import { authMiddleware } from '@owlmeans/auth-common';
5
+ export const makeAuthWebService = (alias = DEFAULT_ALIAS) => {
6
+ const service = makeAuthService(alias);
7
+ const update = service.update;
8
+ service.update = async (token) => {
9
+ await update(token);
10
+ if (token == null) {
11
+ const module = service.assertCtx().module(DISPATCHER);
12
+ const [url] = await module.call();
13
+ document.location.href = url;
14
+ }
15
+ };
16
+ return service;
17
+ };
18
+ export const appendWebAuthService = (ctx, alias = DEFAULT_ALIAS) => {
19
+ const service = makeAuthWebService(alias);
20
+ const context = ctx;
21
+ context.registerService(service);
22
+ context.registerMiddleware(authMiddleware);
23
+ context.auth = () => ctx.service(service.alias);
24
+ return context;
25
+ };
26
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAgB,aAAa,EAAe,EAAE;IAC/E,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAEtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,OAAO,CAAC,MAAM,GAAG,KAAK,EAAC,KAAK,EAAC,EAAE;QAC7B,MAAM,MAAM,CAAC,KAAK,CAAC,CAAA;QACnB,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,CAAuB,UAAU,CAAC,CAAA;YAC3E,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YACjC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAA;QAC9B,CAAC;IACH,CAAC,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,GAAM,EAAE,QAAgB,aAAa,EACd,EAAE;IACzB,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAEzC,MAAM,OAAO,GAAG,GAA4B,CAAA;IAE5C,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAEhC,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;IAE1C,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE/C,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { AuthServiceAppend } from '@owlmeans/client-auth';
2
+ import type { ClientConfig } from '@owlmeans/client-context';
3
+ import type { ClientContext } from '@owlmeans/client';
4
+ export interface RenderOptions {
5
+ domId?: string;
6
+ onReady?: boolean;
7
+ hydrate?: boolean;
8
+ debug?: boolean;
9
+ }
10
+ export interface AppConfig extends ClientConfig {
11
+ }
12
+ export interface AppContext<C extends AppConfig = AppConfig> extends ClientContext<C>, AuthServiceAppend {
13
+ }
14
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,YAAY;CAC9C;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,CAAE,SAAQ,aAAa,CAAC,CAAC,CAAC,EACnF,iBAAiB;CAClB"}
package/build/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@owlmeans/web-client",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "scripts": {
6
+ "build": "tsc -b",
7
+ "dev": "sleep 354 && nodemon -e ts,tsx,json --watch src --exec \"tsc -p ./tsconfig.json\"",
8
+ "watch": "tsc -b -w --preserveWatchOutput --pretty"
9
+ },
10
+ "main": "build/index.js",
11
+ "module": "build/index.js",
12
+ "types": "build/index.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "import": "./build/index.js",
16
+ "require": "./build/index.js",
17
+ "default": "./build/index.js",
18
+ "module": "./build/index.js",
19
+ "types": "./build/index.d.ts"
20
+ }
21
+ },
22
+ "dependencies": {
23
+ "@owlmeans/auth": "^0.1.0",
24
+ "@owlmeans/auth-common": "^0.1.0",
25
+ "@owlmeans/client": "^0.1.0",
26
+ "@owlmeans/client-auth": "^0.1.0",
27
+ "@owlmeans/client-context": "^0.1.0",
28
+ "@owlmeans/client-i18n": "^0.1.0",
29
+ "@owlmeans/client-module": "^0.1.0",
30
+ "@owlmeans/client-resource": "^0.1.0",
31
+ "@owlmeans/client-route": "^0.1.0",
32
+ "@owlmeans/config": "^0.1.0",
33
+ "@owlmeans/context": "^0.1.0",
34
+ "@owlmeans/error": "^0.1.0",
35
+ "@owlmeans/i18n": "^0.1.0",
36
+ "@owlmeans/route": "^0.1.0",
37
+ "@owlmeans/web-db": "^0.1.0",
38
+ "react-dropzone": "^14.3.5"
39
+ },
40
+ "peerDependencies": {
41
+ "react": "*",
42
+ "react-dom": "*",
43
+ "react-router-dom": "*"
44
+ },
45
+ "devDependencies": {
46
+ "@types/react": "^18.3.11",
47
+ "@types/react-dom": "^18.3.0",
48
+ "nodemon": "^3.1.7",
49
+ "npm-check": "^6.0.1",
50
+ "react-router-dom": "^6.26.2",
51
+ "typescript": "^5.6.3"
52
+ },
53
+ "private": false,
54
+ "publishConfig": {
55
+ "access": "public"
56
+ }
57
+ }
@@ -0,0 +1,43 @@
1
+ import { DispatcherHOC } from '@owlmeans/client-auth'
2
+ import { useEffect } from 'react'
3
+ import { useSearchParams } from 'react-router-dom'
4
+ import { useI18nLib } from '@owlmeans/client-i18n'
5
+ import { AUTH_QUERY } from '@owlmeans/auth'
6
+ import { useContext } from '../../context.js'
7
+
8
+ export const Dispatcher = DispatcherHOC(({ provideToken }) => {
9
+ const [query] = useSearchParams()
10
+ const context = useContext()
11
+
12
+ const t = useI18nLib('auth', 'dispatcher')
13
+
14
+ useEffect(() => {
15
+ const token = query.get(AUTH_QUERY)
16
+ if (token != null) {
17
+ const params: Record<string, string> = {}
18
+ query.forEach((value, key) => {
19
+ if (key !== AUTH_QUERY) {
20
+ params[key] = value
21
+ }
22
+ })
23
+
24
+ provideToken({ token }, params)
25
+ } else {
26
+ context.auth().authenticated().then(authzToken => {
27
+ if (authzToken == null) {
28
+ provideToken({ token: '' }, undefined)
29
+ }
30
+ })
31
+ }
32
+ }, [])
33
+
34
+ return query.has(AUTH_QUERY) ? <div style={{
35
+ width: '100%', // Makes the div occupy the full width
36
+ display: 'flex', // Enables flexbox layout
37
+ justifyContent: 'center', // Centers content horizontally
38
+ alignItems: 'center', // Centers content vertically (if needed)
39
+ textAlign: 'center', // Centers text within the div
40
+ paddingTop: '1rem', // Adds some vertical padding
41
+ paddingBottom: '1rem', // Adds some vertical padding
42
+ }}>{t('loading')}</div> : undefined
43
+ })
@@ -0,0 +1,2 @@
1
+
2
+ export * from './component.js'
@@ -0,0 +1,3 @@
1
+
2
+ export * from './dispatcher/index.js'
3
+ export * from './uploader/index.js'
@@ -0,0 +1,17 @@
1
+ import type { FC } from 'react'
2
+ import type { UploaderProps, UploaderRootProps } from './types.js'
3
+ import { useDropzone } from 'react-dropzone'
4
+
5
+ export const Uploader: FC<UploaderProps> = ({ Root, rootProps, children, ...opts }) => {
6
+ Root ??= DefaultRoot
7
+ rootProps ??= { styles: { cursor: 'pointer' } }
8
+
9
+ const { getRootProps, getInputProps } = useDropzone(opts)
10
+ return <Root {...rootProps} {...getRootProps()}>
11
+ <input {...getInputProps()} />
12
+ {children}
13
+ </Root>
14
+ }
15
+
16
+ const DefaultRoot: FC<UploaderRootProps> = ({ children, ...props }) =>
17
+ <span {...props}>{children}</span>
@@ -0,0 +1,10 @@
1
+ import type { FC } from 'react'
2
+ import { Uploader } from './component.js'
3
+ import type { UploaderProps } from './types.js'
4
+
5
+ export const ImageUploader: FC<UploaderProps> = ({ children, ...props }) => {
6
+ // props.accept ??= { 'image/*': [] }
7
+ props.maxSize ??= 5 * 1024 * 1024
8
+
9
+ return <Uploader {...props}>{children}</Uploader>
10
+ }