@kirill.konshin/utils 0.0.19 → 0.0.21
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/README.md +6 -0
- package/dist/bootstrap/index.d.ts +1 -12
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +2 -35
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2 -0
- package/dist/core/index.d.ts +1 -9
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -35
- package/dist/electron/index.d.ts +1 -2
- package/dist/electron/index.d.ts.map +1 -1
- package/dist/electron/index.js +2 -9
- package/dist/electron-builder/index.d.ts +1 -2
- package/dist/electron-builder/index.d.ts.map +1 -1
- package/dist/electron-builder/index.js +2 -7
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/mui/index.d.ts +1 -4
- package/dist/mui/index.d.ts.map +1 -1
- package/dist/mui/index.js +2 -11
- package/dist/next/index.d.ts +1 -5
- package/dist/next/index.d.ts.map +1 -1
- package/dist/next/index.js +2 -15
- package/dist/node/index.d.ts +2 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +2 -0
- package/dist/react/index.d.ts +1 -5
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +2 -26
- package/dist/react-native/index.d.ts +1 -3
- package/dist/react-native/index.d.ts.map +1 -1
- package/dist/react-native/index.js +2 -9
- package/dist/tailwind/index.d.ts +1 -2
- package/dist/tailwind/index.d.ts.map +1 -1
- package/dist/tailwind/index.js +2 -7
- package/dist/worker/index.d.ts +2 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +2 -0
- package/package.json +51 -99
- package/.ctirc +0 -11
- package/.storybook/main.ts +0 -21
- package/.storybook/preview.ts +0 -17
- package/.turbo/turbo-build.log +0 -72
- package/.turbo/turbo-test.log +0 -171
- package/CHANGELOG.md +0 -116
- package/builders/.swcrc +0 -18
- package/builders/build.config.ts +0 -11
- package/builders/bun.build.js +0 -23
- package/builders/package.json +0 -209
- package/builders/perf.mjs +0 -63
- package/builders/rollup.config.mjs +0 -50
- package/builders/rslib.config.ts +0 -26
- package/builders/tsconfig.json +0 -21
- package/builders/tsup.config.ts +0 -20
- package/builders/turbo.json +0 -24
- package/builders/vite.config.ts +0 -37
- package/demo/worker-demo.ts +0 -73
- package/dist/bootstrap/adaptiveContainer.d.ts +0 -4
- package/dist/bootstrap/adaptiveContainer.d.ts.map +0 -1
- package/dist/bootstrap/adaptiveContainer.js +0 -11
- package/dist/bootstrap/adaptiveContainer.js.map +0 -1
- package/dist/bootstrap/controls.d.ts +0 -38
- package/dist/bootstrap/controls.d.ts.map +0 -1
- package/dist/bootstrap/controls.js +0 -78
- package/dist/bootstrap/controls.js.map +0 -1
- package/dist/bootstrap/controls.stories.d.ts +0 -9
- package/dist/bootstrap/controls.stories.d.ts.map +0 -1
- package/dist/bootstrap/error.d.ts +0 -9
- package/dist/bootstrap/error.d.ts.map +0 -1
- package/dist/bootstrap/error.js +0 -27
- package/dist/bootstrap/error.js.map +0 -1
- package/dist/bootstrap/error.stories.d.ts +0 -8
- package/dist/bootstrap/error.stories.d.ts.map +0 -1
- package/dist/bootstrap/field.d.ts +0 -11
- package/dist/bootstrap/field.d.ts.map +0 -1
- package/dist/bootstrap/field.js +0 -29
- package/dist/bootstrap/field.js.map +0 -1
- package/dist/bootstrap/field.stories.d.ts +0 -8
- package/dist/bootstrap/field.stories.d.ts.map +0 -1
- package/dist/bootstrap/footer.d.ts +0 -10
- package/dist/bootstrap/footer.d.ts.map +0 -1
- package/dist/bootstrap/footer.js +0 -45
- package/dist/bootstrap/footer.js.map +0 -1
- package/dist/bootstrap/globalLoading.d.ts +0 -6
- package/dist/bootstrap/globalLoading.d.ts.map +0 -1
- package/dist/bootstrap/globalLoading.js +0 -10
- package/dist/bootstrap/globalLoading.js.map +0 -1
- package/dist/bootstrap/globalLoading.stories.d.ts +0 -7
- package/dist/bootstrap/globalLoading.stories.d.ts.map +0 -1
- package/dist/bootstrap/index.js.map +0 -1
- package/dist/bootstrap/loading.d.ts +0 -10
- package/dist/bootstrap/loading.d.ts.map +0 -1
- package/dist/bootstrap/loading.js +0 -19
- package/dist/bootstrap/loading.js.map +0 -1
- package/dist/bootstrap/loading.stories.d.ts +0 -9
- package/dist/bootstrap/loading.stories.d.ts.map +0 -1
- package/dist/bootstrap/responsiveHelper.d.ts +0 -8
- package/dist/bootstrap/responsiveHelper.d.ts.map +0 -1
- package/dist/bootstrap/responsiveHelper.js +0 -46
- package/dist/bootstrap/responsiveHelper.js.map +0 -1
- package/dist/bootstrap/screen.d.ts +0 -22
- package/dist/bootstrap/screen.d.ts.map +0 -1
- package/dist/bootstrap/screen.js +0 -80
- package/dist/bootstrap/screen.js.map +0 -1
- package/dist/bootstrap/screen.stories.d.ts +0 -14
- package/dist/bootstrap/screen.stories.d.ts.map +0 -1
- package/dist/bootstrap/toaster.d.ts +0 -11
- package/dist/bootstrap/toaster.d.ts.map +0 -1
- package/dist/bootstrap/toaster.js +0 -34
- package/dist/bootstrap/toaster.js.map +0 -1
- package/dist/bootstrap/toaster.stories.d.ts +0 -8
- package/dist/bootstrap/toaster.stories.d.ts.map +0 -1
- package/dist/bootstrap/useModal.d.ts +0 -23
- package/dist/bootstrap/useModal.d.ts.map +0 -1
- package/dist/bootstrap/useModal.js +0 -50
- package/dist/bootstrap/useModal.js.map +0 -1
- package/dist/bootstrap/useModal.stories.d.ts +0 -9
- package/dist/bootstrap/useModal.stories.d.ts.map +0 -1
- package/dist/bootstrap/useWrappedForm.d.ts +0 -14
- package/dist/bootstrap/useWrappedForm.d.ts.map +0 -1
- package/dist/bootstrap/useWrappedForm.js +0 -32
- package/dist/bootstrap/useWrappedForm.js.map +0 -1
- package/dist/core/cache.d.ts +0 -120
- package/dist/core/cache.d.ts.map +0 -1
- package/dist/core/cache.js +0 -107
- package/dist/core/cache.js.map +0 -1
- package/dist/core/cache.test.d.ts +0 -2
- package/dist/core/cache.test.d.ts.map +0 -1
- package/dist/core/errors.d.ts +0 -2
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js +0 -15
- package/dist/core/errors.js.map +0 -1
- package/dist/core/files.d.ts +0 -4
- package/dist/core/files.d.ts.map +0 -1
- package/dist/core/files.js +0 -31
- package/dist/core/files.js.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/core/ls.d.ts +0 -6
- package/dist/core/ls.d.ts.map +0 -1
- package/dist/core/ls.js +0 -12
- package/dist/core/ls.js.map +0 -1
- package/dist/core/measure.d.ts +0 -35
- package/dist/core/measure.d.ts.map +0 -1
- package/dist/core/measure.js +0 -60
- package/dist/core/measure.js.map +0 -1
- package/dist/core/mutex.d.ts +0 -6
- package/dist/core/mutex.d.ts.map +0 -1
- package/dist/core/mutex.js +0 -26
- package/dist/core/mutex.js.map +0 -1
- package/dist/core/worker.d.ts +0 -98
- package/dist/core/worker.d.ts.map +0 -1
- package/dist/core/worker.js +0 -240
- package/dist/core/worker.js.map +0 -1
- package/dist/core/worker.test.d.ts +0 -2
- package/dist/core/worker.test.d.ts.map +0 -1
- package/dist/core/workerUtils.d.ts +0 -3
- package/dist/core/workerUtils.d.ts.map +0 -1
- package/dist/core/workerUtils.js +0 -31
- package/dist/core/workerUtils.js.map +0 -1
- package/dist/core/wrpc.d.ts +0 -45
- package/dist/core/wrpc.d.ts.map +0 -1
- package/dist/core/wrpc.fixture.d.ts +0 -26
- package/dist/core/wrpc.fixture.d.ts.map +0 -1
- package/dist/core/wrpc.js +0 -242
- package/dist/core/wrpc.js.map +0 -1
- package/dist/core/wrpc.test.d.ts +0 -1
- package/dist/core/wrpc.test.d.ts.map +0 -1
- package/dist/electron/createWindow.d.ts +0 -23
- package/dist/electron/createWindow.d.ts.map +0 -1
- package/dist/electron/createWindow.js +0 -160
- package/dist/electron/createWindow.js.map +0 -1
- package/dist/electron/index.js.map +0 -1
- package/dist/electron/updater.d.ts +0 -2
- package/dist/electron/updater.d.ts.map +0 -1
- package/dist/electron/updater.js +0 -47
- package/dist/electron/updater.js.map +0 -1
- package/dist/electron-builder/builder.d.ts +0 -8
- package/dist/electron-builder/builder.d.ts.map +0 -1
- package/dist/electron-builder/builder.js +0 -130
- package/dist/electron-builder/builder.js.map +0 -1
- package/dist/electron-builder/images.d.ts +0 -7
- package/dist/electron-builder/images.d.ts.map +0 -1
- package/dist/electron-builder/images.js +0 -25
- package/dist/electron-builder/images.js.map +0 -1
- package/dist/electron-builder/index.js.map +0 -1
- package/dist/mui/formControlFieldset.d.ts +0 -5
- package/dist/mui/formControlFieldset.d.ts.map +0 -1
- package/dist/mui/formControlFieldset.js +0 -28
- package/dist/mui/formControlFieldset.js.map +0 -1
- package/dist/mui/formControlFieldset.stories.d.ts +0 -7
- package/dist/mui/formControlFieldset.stories.d.ts.map +0 -1
- package/dist/mui/formLabelLegend.d.ts +0 -4
- package/dist/mui/formLabelLegend.d.ts.map +0 -1
- package/dist/mui/formLabelLegend.js +0 -12
- package/dist/mui/formLabelLegend.js.map +0 -1
- package/dist/mui/genericControl.d.ts +0 -7
- package/dist/mui/genericControl.d.ts.map +0 -1
- package/dist/mui/genericControl.js +0 -21
- package/dist/mui/genericControl.js.map +0 -1
- package/dist/mui/index.js.map +0 -1
- package/dist/mui/readOnly.d.ts +0 -6
- package/dist/mui/readOnly.d.ts.map +0 -1
- package/dist/mui/readOnly.js +0 -7
- package/dist/mui/readOnly.js.map +0 -1
- package/dist/next/appLink.d.ts +0 -8
- package/dist/next/appLink.d.ts.map +0 -1
- package/dist/next/appLink.js +0 -34
- package/dist/next/appLink.js.map +0 -1
- package/dist/next/index.js.map +0 -1
- package/dist/next/measure.d.ts +0 -15
- package/dist/next/measure.d.ts.map +0 -1
- package/dist/next/measure.js +0 -9
- package/dist/next/measure.js.map +0 -1
- package/dist/next/noSSR.d.ts +0 -29
- package/dist/next/noSSR.d.ts.map +0 -1
- package/dist/next/noSSR.js +0 -13
- package/dist/next/noSSR.js.map +0 -1
- package/dist/next/redirect.d.ts +0 -6
- package/dist/next/redirect.d.ts.map +0 -1
- package/dist/next/useIsInner.d.ts +0 -3
- package/dist/next/useIsInner.d.ts.map +0 -1
- package/dist/next/useIsInner.js +0 -15
- package/dist/next/useIsInner.js.map +0 -1
- package/dist/react/apiCall.d.ts +0 -6
- package/dist/react/apiCall.d.ts.map +0 -1
- package/dist/react/apiCall.js +0 -24
- package/dist/react/apiCall.js.map +0 -1
- package/dist/react/form/client.d.ts +0 -7
- package/dist/react/form/client.d.ts.map +0 -1
- package/dist/react/form/client.js +0 -46
- package/dist/react/form/client.js.map +0 -1
- package/dist/react/form/form.d.ts +0 -59
- package/dist/react/form/form.d.ts.map +0 -1
- package/dist/react/form/form.js +0 -89
- package/dist/react/form/form.js.map +0 -1
- package/dist/react/form/index.d.ts +0 -3
- package/dist/react/form/index.d.ts.map +0 -1
- package/dist/react/index.js.map +0 -1
- package/dist/react/keyboard.d.ts +0 -10
- package/dist/react/keyboard.d.ts.map +0 -1
- package/dist/react/keyboard.js +0 -38
- package/dist/react/keyboard.js.map +0 -1
- package/dist/react/useFetch.d.ts +0 -2
- package/dist/react/useFetch.d.ts.map +0 -1
- package/dist/react/useFetch.js +0 -20
- package/dist/react/useFetch.js.map +0 -1
- package/dist/react/useFetcher.d.ts +0 -10
- package/dist/react/useFetcher.d.ts.map +0 -1
- package/dist/react/useFetcher.js +0 -43
- package/dist/react/useFetcher.js.map +0 -1
- package/dist/react-native/index.js.map +0 -1
- package/dist/react-native/share.d.ts +0 -9
- package/dist/react-native/share.d.ts.map +0 -1
- package/dist/react-native/share.js +0 -23
- package/dist/react-native/share.js.map +0 -1
- package/dist/react-native/update.d.ts +0 -3
- package/dist/react-native/update.d.ts.map +0 -1
- package/dist/react-native/update.js +0 -40
- package/dist/react-native/update.js.map +0 -1
- package/dist/react-native/useAppState.d.ts +0 -2
- package/dist/react-native/useAppState.d.ts.map +0 -1
- package/dist/react-native/useAppState.js +0 -18
- package/dist/react-native/useAppState.js.map +0 -1
- package/dist/tailwind/fullpage.d.ts +0 -3
- package/dist/tailwind/fullpage.d.ts.map +0 -1
- package/dist/tailwind/fullpage.js +0 -14
- package/dist/tailwind/fullpage.js.map +0 -1
- package/dist/tailwind/index.js.map +0 -1
- package/dist/tailwind/responsiveHelper.d.ts +0 -3
- package/dist/tailwind/responsiveHelper.d.ts.map +0 -1
- package/dist/tailwind/responsiveHelper.js +0 -16
- package/dist/tailwind/responsiveHelper.js.map +0 -1
- package/src/bootstrap/adaptiveContainer.tsx +0 -12
- package/src/bootstrap/controls.stories.tsx +0 -62
- package/src/bootstrap/controls.tsx +0 -119
- package/src/bootstrap/error.stories.tsx +0 -34
- package/src/bootstrap/error.tsx +0 -37
- package/src/bootstrap/field.stories.tsx +0 -42
- package/src/bootstrap/field.tsx +0 -37
- package/src/bootstrap/footer.tsx +0 -61
- package/src/bootstrap/globalLoading.stories.tsx +0 -25
- package/src/bootstrap/globalLoading.tsx +0 -19
- package/src/bootstrap/index.ts +0 -12
- package/src/bootstrap/loading.stories.tsx +0 -35
- package/src/bootstrap/loading.tsx +0 -24
- package/src/bootstrap/main.scss +0 -86
- package/src/bootstrap/responsiveHelper.tsx +0 -55
- package/src/bootstrap/screen.stories.tsx +0 -160
- package/src/bootstrap/screen.tsx +0 -146
- package/src/bootstrap/toaster.stories.tsx +0 -32
- package/src/bootstrap/toaster.tsx +0 -40
- package/src/bootstrap/useModal.stories.tsx +0 -51
- package/src/bootstrap/useModal.tsx +0 -93
- package/src/bootstrap/useWrappedForm.ts +0 -42
- package/src/core/README.md +0 -91
- package/src/core/cache.test.ts +0 -121
- package/src/core/cache.ts +0 -246
- package/src/core/errors.ts +0 -17
- package/src/core/files.ts +0 -29
- package/src/core/index.ts +0 -9
- package/src/core/ls.ts +0 -15
- package/src/core/measure.ts +0 -109
- package/src/core/mutex.ts +0 -22
- package/src/core/worker.test.ts +0 -197
- package/src/core/worker.ts +0 -347
- package/src/core/workerUtils.ts +0 -32
- package/src/core/wrpc.fixture.ts +0 -106
- package/src/core/wrpc.test.ts +0 -225
- package/src/core/wrpc.ts +0 -377
- package/src/electron/README.md +0 -13
- package/src/electron/createWindow.ts +0 -234
- package/src/electron/index.ts +0 -2
- package/src/electron/updater.ts +0 -54
- package/src/electron-builder/builder.ts +0 -150
- package/src/electron-builder/images.ts +0 -33
- package/src/electron-builder/index.ts +0 -2
- package/src/mui/README.md +0 -3
- package/src/mui/formControlFieldset.stories.tsx +0 -71
- package/src/mui/formControlFieldset.tsx +0 -26
- package/src/mui/formLabelLegend.tsx +0 -11
- package/src/mui/genericControl.tsx +0 -20
- package/src/mui/index.ts +0 -4
- package/src/mui/readOnly.tsx +0 -6
- package/src/next/appLink.tsx +0 -40
- package/src/next/index.ts +0 -5
- package/src/next/measure.ts +0 -24
- package/src/next/noSSR.tsx +0 -36
- package/src/next/redirect.tsx +0 -13
- package/src/next/useIsInner.ts +0 -13
- package/src/react/apiCall.ts +0 -25
- package/src/react/form/client.tsx +0 -73
- package/src/react/form/form.tsx +0 -178
- package/src/react/form/index.ts +0 -2
- package/src/react/index.ts +0 -5
- package/src/react/keyboard.tsx +0 -54
- package/src/react/useFetch.ts +0 -29
- package/src/react/useFetcher.ts +0 -54
- package/src/react-native/index.ts +0 -3
- package/src/react-native/share.ts +0 -31
- package/src/react-native/update.tsx +0 -40
- package/src/react-native/useAppState.ts +0 -18
- package/src/tailwind/README.md +0 -8
- package/src/tailwind/fullpage.tsx +0 -11
- package/src/tailwind/index.ts +0 -2
- package/src/tailwind/responsiveHelper.tsx +0 -16
- package/src-todo/auth0.tsx +0 -177
- package/tsconfig.json +0 -23
- package/turbo.json +0 -10
- package/vite.config.ts +0 -56
- package/vite.exports.ts +0 -121
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { fn } from '@storybook/test';
|
|
3
|
-
|
|
4
|
-
import { Toaster } from './toaster';
|
|
5
|
-
|
|
6
|
-
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
7
|
-
const meta: Meta<typeof Toaster> = {
|
|
8
|
-
title: 'Bootstrap / Toaster',
|
|
9
|
-
component: Toaster,
|
|
10
|
-
parameters: {
|
|
11
|
-
layout: 'centered',
|
|
12
|
-
},
|
|
13
|
-
tags: ['autodocs'],
|
|
14
|
-
argTypes: {},
|
|
15
|
-
args: { onClick: fn() },
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export default meta;
|
|
19
|
-
|
|
20
|
-
type Story = StoryObj<typeof meta>;
|
|
21
|
-
|
|
22
|
-
export const Default: Story = {
|
|
23
|
-
args: {
|
|
24
|
-
toast: 'Hello, World!',
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const Object: Story = {
|
|
29
|
-
args: {
|
|
30
|
-
toast: { message: 'Toast', variant: 'dark' },
|
|
31
|
-
},
|
|
32
|
-
};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import React, { useState, FC } from 'react';
|
|
4
|
-
import { Toast, ToastProps } from 'react-bootstrap';
|
|
5
|
-
// import { useToaster } from '../redux/toasterSlice';
|
|
6
|
-
|
|
7
|
-
export type ToasterProps = {
|
|
8
|
-
toast: string | { message: string; title?: string; variant?: 'dark' | 'success' | 'danger' };
|
|
9
|
-
} & ToastProps;
|
|
10
|
-
|
|
11
|
-
export const Toaster: FC<ToasterProps> = function Toaster({ toast }) {
|
|
12
|
-
//const { toast, setToast } = useToaster();
|
|
13
|
-
const [dismissed, setDismissed] = useState(false);
|
|
14
|
-
|
|
15
|
-
const msg = typeof toast === 'string' ? toast : toast?.message;
|
|
16
|
-
// const title = typeof toast === 'string' ? 'Notification' : toast?.title;
|
|
17
|
-
const variant = typeof toast === 'string' ? '' : toast?.variant;
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<Toast
|
|
21
|
-
onClose={() => setDismissed(true)}
|
|
22
|
-
show={!dismissed}
|
|
23
|
-
delay={10000}
|
|
24
|
-
autohide
|
|
25
|
-
bg={variant?.toLowerCase()}
|
|
26
|
-
className="position-fixed top-50 right-50 min-w-200px z-3"
|
|
27
|
-
>
|
|
28
|
-
<Toast.Header>
|
|
29
|
-
<strong className="me-auto">Notification</strong>
|
|
30
|
-
</Toast.Header>
|
|
31
|
-
<Toast.Body
|
|
32
|
-
className={
|
|
33
|
-
['dark', 'success', 'danger'].includes((variant as string)?.toLowerCase()) ? 'text-white' : ''
|
|
34
|
-
}
|
|
35
|
-
>
|
|
36
|
-
{msg}
|
|
37
|
-
</Toast.Body>
|
|
38
|
-
</Toast>
|
|
39
|
-
);
|
|
40
|
-
};
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import React, { FC } from 'react';
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
-
import { useModal, UseModalProps } from './useModal';
|
|
4
|
-
import { Button } from 'react-bootstrap';
|
|
5
|
-
|
|
6
|
-
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
7
|
-
const meta: Meta<FC<UseModalProps>> = {
|
|
8
|
-
title: 'Bootstrap / useModal',
|
|
9
|
-
parameters: {
|
|
10
|
-
layout: 'centered',
|
|
11
|
-
},
|
|
12
|
-
tags: ['autodocs'],
|
|
13
|
-
argTypes: {
|
|
14
|
-
children: { control: 'text' },
|
|
15
|
-
title: { control: 'text' },
|
|
16
|
-
cancelButton: { control: 'text' },
|
|
17
|
-
submitButton: { control: 'text' },
|
|
18
|
-
offcanvas: { control: 'check' },
|
|
19
|
-
},
|
|
20
|
-
args: {
|
|
21
|
-
children: 'Modal Content',
|
|
22
|
-
title: 'Modal Title',
|
|
23
|
-
},
|
|
24
|
-
render: function Demo(args) {
|
|
25
|
-
const { open, show, close, ModalDialog } = useModal();
|
|
26
|
-
return (
|
|
27
|
-
<>
|
|
28
|
-
<Button onClick={open}>Open Modal</Button>
|
|
29
|
-
<ModalDialog {...args} show={show}>
|
|
30
|
-
{args.children}
|
|
31
|
-
<Button onClick={close}>Close Modal</Button>
|
|
32
|
-
</ModalDialog>
|
|
33
|
-
</>
|
|
34
|
-
);
|
|
35
|
-
},
|
|
36
|
-
// args: { onSubmit: (e) => e.preventDefault() },
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export default meta;
|
|
40
|
-
|
|
41
|
-
type Story = StoryObj<typeof meta>;
|
|
42
|
-
|
|
43
|
-
export const Default: Story = {
|
|
44
|
-
args: {},
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
export const Offcanvas: Story = {
|
|
48
|
-
args: {
|
|
49
|
-
offcanvas: true,
|
|
50
|
-
},
|
|
51
|
-
};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useMemo, useState, JSX, FC, memo } from 'react';
|
|
2
|
-
import { Button, Modal, ModalProps, Offcanvas, OffcanvasProps, Stack } from 'react-bootstrap';
|
|
3
|
-
|
|
4
|
-
export type UseModalArgs = { onClose?: any; showOnMount?: boolean };
|
|
5
|
-
|
|
6
|
-
export type UseModalProps = {
|
|
7
|
-
children?: any;
|
|
8
|
-
show?: boolean;
|
|
9
|
-
onSubmit?: (e: any) => void;
|
|
10
|
-
submitButton?: string | any;
|
|
11
|
-
cancelButton?: string | any;
|
|
12
|
-
offcanvas?: boolean;
|
|
13
|
-
title?: string | any;
|
|
14
|
-
containerProps?: ModalProps | OffcanvasProps;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export function useModal({ onClose, showOnMount }: UseModalArgs = {}): {
|
|
18
|
-
show: boolean | undefined;
|
|
19
|
-
close: () => void;
|
|
20
|
-
open: () => void;
|
|
21
|
-
ModalDialog: FC<ModalProps>;
|
|
22
|
-
} {
|
|
23
|
-
const [show, setShow] = useState(showOnMount);
|
|
24
|
-
|
|
25
|
-
const close = useCallback((): void => {
|
|
26
|
-
setShow(false);
|
|
27
|
-
onClose?.();
|
|
28
|
-
}, [onClose]);
|
|
29
|
-
|
|
30
|
-
const open = useCallback((): void => setShow(true), []);
|
|
31
|
-
|
|
32
|
-
const defaultOnSubmit = useCallback(
|
|
33
|
-
(e: any) => {
|
|
34
|
-
e.preventDefault();
|
|
35
|
-
close();
|
|
36
|
-
},
|
|
37
|
-
[close],
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
const ModalDialog = useMemo(
|
|
41
|
-
() =>
|
|
42
|
-
memo(function ModalDialog({
|
|
43
|
-
children,
|
|
44
|
-
show,
|
|
45
|
-
onSubmit = defaultOnSubmit,
|
|
46
|
-
submitButton = 'Done',
|
|
47
|
-
cancelButton = 'Cancel',
|
|
48
|
-
offcanvas = false,
|
|
49
|
-
title = null as any,
|
|
50
|
-
containerProps = {},
|
|
51
|
-
}: ModalProps) {
|
|
52
|
-
const Container = offcanvas ? Offcanvas : Modal;
|
|
53
|
-
const containerDefaultProps = offcanvas ? { style: { maxWidth: '85%' } } : {};
|
|
54
|
-
const Body = offcanvas ? Offcanvas.Body : Modal.Body;
|
|
55
|
-
const Header = offcanvas ? Offcanvas.Header : Modal.Header;
|
|
56
|
-
const Title = offcanvas ? Offcanvas.Title : Modal.Title;
|
|
57
|
-
|
|
58
|
-
return (
|
|
59
|
-
<Container {...{ ...containerDefaultProps, ...containerProps }} show={show} onHide={close}>
|
|
60
|
-
<form onSubmit={onSubmit}>
|
|
61
|
-
{title && (
|
|
62
|
-
<Header closeButton>
|
|
63
|
-
<Title>{title}</Title>
|
|
64
|
-
</Header>
|
|
65
|
-
)}
|
|
66
|
-
|
|
67
|
-
<Body as={Stack} gap={3}>
|
|
68
|
-
{show && children}
|
|
69
|
-
</Body>
|
|
70
|
-
|
|
71
|
-
{!offcanvas && (submitButton || cancelButton) && (
|
|
72
|
-
<Modal.Footer>
|
|
73
|
-
{cancelButton && (
|
|
74
|
-
<Button variant="outline-secondary" onClick={close}>
|
|
75
|
-
{cancelButton}
|
|
76
|
-
</Button>
|
|
77
|
-
)}
|
|
78
|
-
{submitButton && (
|
|
79
|
-
<Button variant="secondary" type="submit">
|
|
80
|
-
{submitButton}
|
|
81
|
-
</Button>
|
|
82
|
-
)}
|
|
83
|
-
</Modal.Footer>
|
|
84
|
-
)}
|
|
85
|
-
</form>
|
|
86
|
-
</Container>
|
|
87
|
-
);
|
|
88
|
-
}),
|
|
89
|
-
[close, defaultOnSubmit],
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
return { show, close, open, ModalDialog };
|
|
93
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { useForm, FormState } from 'react-hook-form';
|
|
2
|
-
import { useCallback } from 'react';
|
|
3
|
-
|
|
4
|
-
export const isFormLoading = (formState: FormState<any>): boolean => formState.isLoading || formState.isSubmitting;
|
|
5
|
-
|
|
6
|
-
export const useWrappedForm: typeof useForm = (options) => {
|
|
7
|
-
const form = useForm(options);
|
|
8
|
-
|
|
9
|
-
const handleSubmit: typeof form.handleSubmit = useCallback(
|
|
10
|
-
(onSubmit, onError) => {
|
|
11
|
-
const wrappedSubmit: typeof onSubmit = async (data) => {
|
|
12
|
-
try {
|
|
13
|
-
await onSubmit(data);
|
|
14
|
-
} catch (e) {
|
|
15
|
-
form.setError('root', { type: 'server', message: (e as Error).message });
|
|
16
|
-
console.error('Error submitting form', e);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
return form.handleSubmit(wrappedSubmit, onError);
|
|
20
|
-
},
|
|
21
|
-
[form],
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
return { ...form, handleSubmit };
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Issue #3: Submit event still propagates to parent when using portal
|
|
29
|
-
* https://reactjs.org/docs/portals.html#event-bubbling-through-portals
|
|
30
|
-
* Event bubbling goes through React DOM instead of HTML DOM
|
|
31
|
-
* Portals don't have an effect on this one, we need to stop event propagation
|
|
32
|
-
* This should be our default form handling method
|
|
33
|
-
* https://codesandbox.io/s/react-hook-form-nested-portal-6x3fvy?file=/src/App.tsx:1905-2261
|
|
34
|
-
* https://github.com/react-hook-form/react-hook-form/issues/1005#issuecomment-988380981
|
|
35
|
-
*/
|
|
36
|
-
export const stopPropagation =
|
|
37
|
-
(callback: any) =>
|
|
38
|
-
(e: Event): void => {
|
|
39
|
-
e.stopPropagation();
|
|
40
|
-
e.preventDefault();
|
|
41
|
-
callback(e);
|
|
42
|
-
};
|
package/src/core/README.md
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
# WRPC
|
|
2
|
-
|
|
3
|
-
TODO
|
|
4
|
-
|
|
5
|
-
- [ ] Add to readme https://stackoverflow.com/questions/77727664/how-to-get-returned-value-from-async-generator-when-using-for-await
|
|
6
|
-
- [ ] Value passed to next are ignored https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator/next#sending_values_to_the_generator
|
|
7
|
-
|
|
8
|
-
```mermaid
|
|
9
|
-
sequenceDiagram
|
|
10
|
-
box Main
|
|
11
|
-
participant Code
|
|
12
|
-
participant Caller
|
|
13
|
-
end
|
|
14
|
-
box Worker
|
|
15
|
-
participant Worker
|
|
16
|
-
participant Resolver
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
%% autonumber
|
|
20
|
-
|
|
21
|
-
Code->>Caller: caller.generator(payload)
|
|
22
|
-
|
|
23
|
-
Caller-->>Code: iterator & promise
|
|
24
|
-
|
|
25
|
-
Code->>Code: Start main CONSUMER loop
|
|
26
|
-
|
|
27
|
-
Code->>Caller: iterator[Symbol]()
|
|
28
|
-
|
|
29
|
-
Caller->>Caller: Start replica GENERATOR loop
|
|
30
|
-
|
|
31
|
-
Code->>Caller: iterator.next()
|
|
32
|
-
|
|
33
|
-
Caller->>Worker: postMessage(payload)
|
|
34
|
-
|
|
35
|
-
Worker->>Resolver: resolver(payload)
|
|
36
|
-
|
|
37
|
-
Resolver-->>Worker: iterator
|
|
38
|
-
|
|
39
|
-
Worker->>Worker: Start replica CONSUMER loop
|
|
40
|
-
|
|
41
|
-
Worker->>Resolver: iterator[Symbol]()
|
|
42
|
-
|
|
43
|
-
Resolver->>Resolver: Start GENERATOR loop
|
|
44
|
-
|
|
45
|
-
rect rgb(232, 244, 248)
|
|
46
|
-
|
|
47
|
-
loop Synchronized iteration
|
|
48
|
-
Worker->>+Resolver: iterator.next(payload)
|
|
49
|
-
|
|
50
|
-
Resolver-->>-Worker: yield value
|
|
51
|
-
|
|
52
|
-
Worker-->>Caller: postMessage(value, done=false)
|
|
53
|
-
|
|
54
|
-
Note over Worker: Wait for ACK or ABORT
|
|
55
|
-
|
|
56
|
-
Caller-->>Code: yield value
|
|
57
|
-
|
|
58
|
-
Code->>Caller: iterator.next(nextPayload)
|
|
59
|
-
|
|
60
|
-
Caller->>Worker: postMessage(ack, nextPayload)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
break Break or AbortSignal (maybe)
|
|
66
|
-
Code-->>Code: Loop exits
|
|
67
|
-
Code->>Caller: signal.abort()
|
|
68
|
-
|
|
69
|
-
Caller-->>Caller: Loop exits
|
|
70
|
-
|
|
71
|
-
Caller->>Worker: postMessage(abort)
|
|
72
|
-
|
|
73
|
-
Worker-->>Worker: Loop exits via Break
|
|
74
|
-
|
|
75
|
-
Resolver-->>Resolver: Loop exits
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
opt Occurs on Error
|
|
79
|
-
Resolver-->>Worker: throw Error
|
|
80
|
-
|
|
81
|
-
Worker-->>Caller: postMessage(error, done=true)
|
|
82
|
-
|
|
83
|
-
Caller-->>Code: throw Error
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
Resolver-->>Worker: return value
|
|
87
|
-
|
|
88
|
-
Worker-->>Caller: postMessage(value, done=true)
|
|
89
|
-
|
|
90
|
-
Caller-->>Code: return value
|
|
91
|
-
```
|
package/src/core/cache.test.ts
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import { expect, describe, test, vi } from 'vitest';
|
|
2
|
-
import { ANY, MaybePromise, memo, TransformerMap } from './cache';
|
|
3
|
-
|
|
4
|
-
describe('memo', async () => {
|
|
5
|
-
test('simple', async () => {
|
|
6
|
-
const random = vi.fn(() => Math.random());
|
|
7
|
-
const memoized = memo(random);
|
|
8
|
-
|
|
9
|
-
const first = await memoized();
|
|
10
|
-
const second = await memoized();
|
|
11
|
-
|
|
12
|
-
expect(first.hit).toBeFalsy();
|
|
13
|
-
expect(second.hit).toBeTruthy();
|
|
14
|
-
expect(first.value).toBe(second.value);
|
|
15
|
-
expect(memoized.size()).toBe(1);
|
|
16
|
-
|
|
17
|
-
memoized.clear();
|
|
18
|
-
expect(memoized.size()).toBe(0);
|
|
19
|
-
|
|
20
|
-
const third = await memoized();
|
|
21
|
-
expect(third.hit).toBeFalsy();
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
test('with key', async () => {
|
|
25
|
-
const random = vi.fn((arg) => arg + Math.random().toString());
|
|
26
|
-
const memoized = memo(random);
|
|
27
|
-
|
|
28
|
-
const first = await memoized(1);
|
|
29
|
-
const second = await memoized(2);
|
|
30
|
-
|
|
31
|
-
expect(first.hit).toBeFalsy();
|
|
32
|
-
expect(second.hit).toBeFalsy();
|
|
33
|
-
expect(first.value).not.toBe(second.value);
|
|
34
|
-
expect(memoized.size()).toBe(2);
|
|
35
|
-
|
|
36
|
-
const first2 = await memoized(1);
|
|
37
|
-
const second2 = await memoized(2);
|
|
38
|
-
|
|
39
|
-
expect(first2.hit).toBeTruthy();
|
|
40
|
-
expect(first.value).toBe(first2.value);
|
|
41
|
-
expect(second2.hit).toBeTruthy();
|
|
42
|
-
expect(second.value).toBe(second2.value);
|
|
43
|
-
|
|
44
|
-
memoized.clear(1);
|
|
45
|
-
expect(memoized.size()).toBe(1);
|
|
46
|
-
memoized.clear(ANY);
|
|
47
|
-
expect(memoized.size()).toBe(0);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
describe('TransformerMap', async () => {
|
|
52
|
-
test('simple', async () => {
|
|
53
|
-
const dispose = vi.fn();
|
|
54
|
-
|
|
55
|
-
class Cache extends TransformerMap<number, any> {
|
|
56
|
-
write(key, value, oldValue) {
|
|
57
|
-
value.cached = true;
|
|
58
|
-
value.read = 0;
|
|
59
|
-
return value;
|
|
60
|
-
}
|
|
61
|
-
read(value, key) {
|
|
62
|
-
value.read++;
|
|
63
|
-
return value;
|
|
64
|
-
}
|
|
65
|
-
dispose(value, key) {
|
|
66
|
-
dispose(value, key);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const cache = new Cache('test');
|
|
71
|
-
|
|
72
|
-
const obj = { a: 1 };
|
|
73
|
-
|
|
74
|
-
const x1 = await cache.memo(1, obj);
|
|
75
|
-
expect(x1).toStrictEqual({ a: 1, cached: true, read: 0 });
|
|
76
|
-
|
|
77
|
-
const x2 = await cache.memo(1, obj);
|
|
78
|
-
expect(x2).toStrictEqual({ a: 1, cached: true, read: 1 });
|
|
79
|
-
|
|
80
|
-
const x3 = await cache.memo(1, { a: 2 });
|
|
81
|
-
expect(x3).toStrictEqual({ a: 2, cached: true, read: 0 });
|
|
82
|
-
expect(cache.size).toEqual(1);
|
|
83
|
-
expect(dispose).toBeCalledTimes(1);
|
|
84
|
-
expect(dispose).toBeCalledWith({ a: 1, cached: true, read: 1 }, 1);
|
|
85
|
-
|
|
86
|
-
const x4 = await cache.memo(2, { a: 20 });
|
|
87
|
-
|
|
88
|
-
expect(x4).toStrictEqual({ a: 20, cached: true, read: 0 });
|
|
89
|
-
expect(cache.size).toEqual(2);
|
|
90
|
-
expect(dispose).toBeCalledTimes(1);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
test('key transform', async () => {
|
|
94
|
-
const dispose = vi.fn();
|
|
95
|
-
|
|
96
|
-
class Cache extends TransformerMap<number, any> {
|
|
97
|
-
write(key, value, oldValue) {
|
|
98
|
-
return { key, read: 0 };
|
|
99
|
-
}
|
|
100
|
-
read(value, key) {
|
|
101
|
-
value.read++;
|
|
102
|
-
return value;
|
|
103
|
-
}
|
|
104
|
-
dispose(value, key) {
|
|
105
|
-
dispose(value, key);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
const cache = new Cache('test');
|
|
110
|
-
|
|
111
|
-
const x1 = await cache.memo(1);
|
|
112
|
-
expect(x1).toStrictEqual({ key: 1, read: 0 });
|
|
113
|
-
|
|
114
|
-
const x2 = await cache.memo(1);
|
|
115
|
-
expect(x2).toStrictEqual({ key: 1, read: 1 });
|
|
116
|
-
|
|
117
|
-
cache.clear();
|
|
118
|
-
expect(dispose).toBeCalledTimes(1);
|
|
119
|
-
expect(dispose).toBeCalledWith({ key: 1, read: 1 }, 1);
|
|
120
|
-
});
|
|
121
|
-
});
|