@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.js","sources":["../../src/react/keyboard.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, createContext, useMemo, useState, Dispatch, SetStateAction, useContext, FC, Context } from 'react';\n\nconst isCtrlOrMeta = (e: KeyboardEvent) => e.metaKey || e.ctrlKey;\n\nconst EVENT = 'keydown';\n\nexport type Hotkeys = Record<KeyboardEvent['code'], (e: KeyboardEvent) => void>;\n\nexport type HotkeyContextType = {\n enabled: boolean;\n setEnabled: Dispatch<SetStateAction<boolean>>;\n};\n\nexport const HotkeysContext: Context<HotkeyContextType> = createContext<{\n enabled: boolean;\n setEnabled: Dispatch<SetStateAction<boolean>>;\n}>(null as never);\n\nexport const HotkeysProvider: FC<any> = ({ children }) => {\n const [enabled, setEnabled] = useState(true);\n\n const control = useMemo(() => ({ enabled, setEnabled }), [enabled, setEnabled]);\n\n return <HotkeysContext.Provider value={control}>{children}</HotkeysContext.Provider>;\n};\n\nexport const useHotkeys = (hotkeys: Hotkeys): void => {\n const { enabled } = useContext(HotkeysContext);\n\n useEffect(() => {\n if (typeof document === 'undefined' || !enabled) {\n return;\n }\n\n const listeners = (e: KeyboardEvent) => {\n if (!isCtrlOrMeta(e)) return;\n\n for (const [code, callback] of Object.entries(hotkeys)) {\n if (e.code === code) {\n callback(e);\n return;\n }\n }\n };\n\n window.addEventListener(EVENT, listeners, true);\n\n return () => {\n window.removeEventListener(EVENT, listeners);\n };\n }, [hotkeys, enabled]);\n};\n"],"names":[],"mappings":";;;AAIA,MAAM,eAAe,CAAC,MAAqB,EAAE,WAAW,EAAE;AAE1D,MAAM,QAAQ;AASD,MAAA,iBAA6C,cAGvD,IAAa;AAET,MAAM,kBAA2B,CAAC,EAAE,eAAe;AACtD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI;AAErC,QAAA,UAAU,QAAQ,OAAO,EAAE,SAAS,eAAe,CAAC,SAAS,UAAU,CAAC;AAE9E,6BAAQ,eAAe,UAAf,EAAwB,OAAO,SAAU,UAAS;AAC9D;AAEa,MAAA,aAAa,CAAC,YAA2B;AAClD,QAAM,EAAE,QAAA,IAAY,WAAW,cAAc;AAE7C,YAAU,MAAM;AACZ,QAAI,OAAO,aAAa,eAAe,CAAC,SAAS;AAC7C;AAAA,IAAA;AAGE,UAAA,YAAY,CAAC,MAAqB;AAChC,UAAA,CAAC,aAAa,CAAC,EAAG;AAEtB,iBAAW,CAAC,MAAM,QAAQ,KAAK,OAAO,QAAQ,OAAO,GAAG;AAChD,YAAA,EAAE,SAAS,MAAM;AACjB,mBAAS,CAAC;AACV;AAAA,QAAA;AAAA,MACJ;AAAA,IAER;AAEO,WAAA,iBAAiB,OAAO,WAAW,IAAI;AAE9C,WAAO,MAAM;AACF,aAAA,oBAAoB,OAAO,SAAS;AAAA,IAC/C;AAAA,EAAA,GACD,CAAC,SAAS,OAAO,CAAC;AACzB;"}
|
package/dist/react/useFetch.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFetch.d.ts","sourceRoot":"","sources":["../../src/react/useFetch.ts"],"names":[],"mappings":"AAOA,wBAAgB,QAAQ,CAAC,CAAC,EACtB,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,YAAY,GAAE,CAAC,GAAG,IAAW,GAC9B,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC,CAkBnD"}
|
package/dist/react/useFetch.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useTransition, useState, useCallback } from "react";
|
|
3
|
-
function useFetch(fn, defaultValue = null) {
|
|
4
|
-
const [isPending, startTransition] = useTransition();
|
|
5
|
-
const [data, setData] = useState(defaultValue);
|
|
6
|
-
const [error, setError] = useState();
|
|
7
|
-
const actionFn = useCallback(
|
|
8
|
-
(...args) => {
|
|
9
|
-
const promise = fn(...args);
|
|
10
|
-
startTransition(() => promise.then(setData).catch(setError));
|
|
11
|
-
return promise;
|
|
12
|
-
},
|
|
13
|
-
[fn]
|
|
14
|
-
);
|
|
15
|
-
return [data, actionFn, isPending, error];
|
|
16
|
-
}
|
|
17
|
-
export {
|
|
18
|
-
useFetch
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=useFetch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFetch.js","sources":["../../src/react/useFetch.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useState, useTransition } from 'react';\n\n//TODO useFetch https://use-http.com\n//TODO SWR?\n//TODO Tanstack Query?\nexport function useFetch<R>(\n fn: (...args: any[]) => Promise<R>,\n defaultValue: R | null = null,\n): [R | null, typeof fn, boolean, Error | undefined] {\n // An async function was passed to useActionState, but it was dispatched outside of an action context.\n // This is likely not what you intended. Either pass the dispatch function to an `action` prop, or dispatch manually inside `startTransition`\n const [isPending, startTransition] = useTransition();\n const [data, setData] = useState<R | null>(defaultValue);\n const [error, setError] = useState<Error>();\n\n const actionFn = useCallback(\n (...args: Parameters<typeof fn>) => {\n const promise = fn(...args);\n // https://react.dev/reference/react/useTransition#react-doesnt-treat-my-state-update-after-await-as-a-transition\n startTransition(() => promise.then(setData).catch(setError)); //FIXME sub-chain...\n return promise;\n },\n [fn],\n );\n\n return [data, actionFn, isPending, error];\n}\n"],"names":[],"mappings":";;AAOgB,SAAA,SACZ,IACA,eAAyB,MACwB;AAGjD,QAAM,CAAC,WAAW,eAAe,IAAI,cAAc;AACnD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB,YAAY;AACvD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAgB;AAE1C,QAAM,WAAW;AAAA,IACb,IAAI,SAAgC;AAC1B,YAAA,UAAU,GAAG,GAAG,IAAI;AAE1B,sBAAgB,MAAM,QAAQ,KAAK,OAAO,EAAE,MAAM,QAAQ,CAAC;AACpD,aAAA;AAAA,IACX;AAAA,IACA,CAAC,EAAE;AAAA,EACP;AAEA,SAAO,CAAC,MAAM,UAAU,WAAW,KAAK;AAC5C;"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare function useFetcher<T = any>(cb: any, { fetchOnMount, onError }?: {
|
|
2
|
-
fetchOnMount?: boolean;
|
|
3
|
-
onError?: (e: Error) => void;
|
|
4
|
-
}): {
|
|
5
|
-
loading: boolean;
|
|
6
|
-
error: Error | null;
|
|
7
|
-
data: T | null;
|
|
8
|
-
trigger: (...args: any[]) => Promise<any>;
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=useFetcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFetcher.d.ts","sourceRoot":"","sources":["../../src/react/useFetcher.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,CAAC,GAAG,GAAG,EAC9B,EAAE,EAAE,GAAG,EAEP,EAAE,YAAoB,EAAE,OAAO,EAAE,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;CAAO,GACjG;IACC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CAC7C,CA0CA"}
|
package/dist/react/useFetcher.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { useState, useRef, useCallback, useEffect } from "react";
|
|
2
|
-
function useFetcher(cb, { fetchOnMount = false, onError } = {}) {
|
|
3
|
-
const [loading, setLoading] = useState(fetchOnMount);
|
|
4
|
-
const [error, setError] = useState(null);
|
|
5
|
-
const [data, setData] = useState(null);
|
|
6
|
-
const isMounted = useRef(false);
|
|
7
|
-
const trigger = useCallback(
|
|
8
|
-
async (...args) => {
|
|
9
|
-
try {
|
|
10
|
-
setLoading(true);
|
|
11
|
-
setError(null);
|
|
12
|
-
const res = await cb(args);
|
|
13
|
-
if (!isMounted.current) return;
|
|
14
|
-
setData(res);
|
|
15
|
-
return res;
|
|
16
|
-
} catch (e) {
|
|
17
|
-
console.error("Fetch failed", e);
|
|
18
|
-
if (!isMounted.current) return;
|
|
19
|
-
setError(e);
|
|
20
|
-
onError == null ? void 0 : onError(e);
|
|
21
|
-
} finally {
|
|
22
|
-
if (isMounted.current) setLoading(false);
|
|
23
|
-
}
|
|
24
|
-
},
|
|
25
|
-
[cb, onError]
|
|
26
|
-
);
|
|
27
|
-
useEffect(() => {
|
|
28
|
-
if (fetchOnMount) {
|
|
29
|
-
trigger().catch((e) => console.error("Fetch on mount failed", e));
|
|
30
|
-
}
|
|
31
|
-
}, [fetchOnMount, cb, trigger]);
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
isMounted.current = true;
|
|
34
|
-
return () => {
|
|
35
|
-
isMounted.current = false;
|
|
36
|
-
};
|
|
37
|
-
});
|
|
38
|
-
return { loading, error, data, trigger };
|
|
39
|
-
}
|
|
40
|
-
export {
|
|
41
|
-
useFetcher
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=useFetcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFetcher.js","sources":["../../src/react/useFetcher.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport function useFetcher<T = any>(\n cb: any,\n\n { fetchOnMount = false, onError }: { fetchOnMount?: boolean; onError?: (e: Error) => void } = {},\n): {\n loading: boolean;\n error: Error | null;\n data: T | null;\n trigger: (...args: any[]) => Promise<any>;\n} {\n const [loading, setLoading] = useState(fetchOnMount);\n const [error, setError] = useState<Error | null>(null);\n const [data, setData] = useState<T | null>(null);\n\n const isMounted = useRef(false);\n\n const trigger = useCallback(\n async (...args: any[]): Promise<any> => {\n try {\n setLoading(true);\n setError(null);\n const res = await cb(args);\n if (!isMounted.current) return;\n setData(res);\n return res;\n } catch (e) {\n console.error('Fetch failed', e);\n if (!isMounted.current) return;\n setError(e);\n (onError as any)?.(e);\n } finally {\n if (isMounted.current) setLoading(false);\n }\n },\n [cb, onError],\n );\n\n useEffect(() => {\n if (fetchOnMount) {\n trigger().catch((e) => console.error('Fetch on mount failed', e)); // catch actually will never happen\n }\n }, [fetchOnMount, cb, trigger]);\n\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n });\n\n return { loading, error, data, trigger };\n}\n"],"names":[],"mappings":";AAEgB,SAAA,WACZ,IAEA,EAAE,eAAe,OAAO,QAAQ,IAA8D,IAMhG;AACE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,YAAY;AACnD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AACrD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAmB,IAAI;AAEzC,QAAA,YAAY,OAAO,KAAK;AAE9B,QAAM,UAAU;AAAA,IACZ,UAAU,SAA8B;AAChC,UAAA;AACA,mBAAW,IAAI;AACf,iBAAS,IAAI;AACP,cAAA,MAAM,MAAM,GAAG,IAAI;AACrB,YAAA,CAAC,UAAU,QAAS;AACxB,gBAAQ,GAAG;AACJ,eAAA;AAAA,eACF,GAAG;AACA,gBAAA,MAAM,gBAAgB,CAAC;AAC3B,YAAA,CAAC,UAAU,QAAS;AACxB,iBAAS,CAAC;AACT,2CAAkB;AAAA,MAAC,UACtB;AACM,YAAA,UAAU,QAAS,YAAW,KAAK;AAAA,MAAA;AAAA,IAE/C;AAAA,IACA,CAAC,IAAI,OAAO;AAAA,EAChB;AAEA,YAAU,MAAM;AACZ,QAAI,cAAc;AACN,cAAA,EAAE,MAAM,CAAC,MAAM,QAAQ,MAAM,yBAAyB,CAAC,CAAC;AAAA,IAAA;AAAA,EAErE,GAAA,CAAC,cAAc,IAAI,OAAO,CAAC;AAE9B,YAAU,MAAM;AACZ,cAAU,UAAU;AACpB,WAAO,MAAM;AACT,gBAAU,UAAU;AAAA,IACxB;AAAA,EAAA,CACH;AAED,SAAO,EAAE,SAAS,OAAO,MAAM,QAAQ;AAC3C;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* data:text/plain;base64,W29iamV
|
|
3
|
-
* @see https://stackoverflow.com/questions/69738812/problem-to-generate-pdf-from-a-blob-in-an-expo-app-using-filesystem
|
|
4
|
-
* @param base64
|
|
5
|
-
* @param fileName
|
|
6
|
-
* @returns {Promise<void>}
|
|
7
|
-
*/
|
|
8
|
-
export declare const shareDialog: (base64: string, fileName: string) => Promise<void>;
|
|
9
|
-
//# sourceMappingURL=share.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/react-native/share.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,WAAkB,MAAM,YAAY,MAAM,KAAG,OAAO,CAAC,IAAI,CAoBhF,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import * as FileSystem from "expo-file-system";
|
|
2
|
-
import * as Sharing from "expo-sharing";
|
|
3
|
-
const shareDialog = async (base64, fileName) => {
|
|
4
|
-
const path = `${FileSystem.documentDirectory}/${fileName}`;
|
|
5
|
-
try {
|
|
6
|
-
if (!await Sharing.isAvailableAsync()) throw new Error("Sharing is not available");
|
|
7
|
-
const [header, buffer] = base64.split(",");
|
|
8
|
-
const [, mimeTypeStr] = header.split(":");
|
|
9
|
-
const [mimeType] = mimeTypeStr.split(";");
|
|
10
|
-
await FileSystem.writeAsStringAsync(`${path}`, buffer, {
|
|
11
|
-
encoding: FileSystem.EncodingType.Base64
|
|
12
|
-
});
|
|
13
|
-
await Sharing.shareAsync(path, { mimeType, UTI: fileName, dialogTitle: "Save or share document" });
|
|
14
|
-
} catch (error) {
|
|
15
|
-
alert("Sharing failed: " + error.message);
|
|
16
|
-
} finally {
|
|
17
|
-
await FileSystem.deleteAsync(path);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
export {
|
|
21
|
-
shareDialog
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=share.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"share.js","sources":["../../src/react-native/share.ts"],"sourcesContent":["import * as FileSystem from 'expo-file-system';\nimport * as Sharing from 'expo-sharing';\n\n/**\n * data:text/plain;base64,W29iamV\n * @see https://stackoverflow.com/questions/69738812/problem-to-generate-pdf-from-a-blob-in-an-expo-app-using-filesystem\n * @param base64\n * @param fileName\n * @returns {Promise<void>}\n */\nexport const shareDialog = async (base64: string, fileName: string): Promise<void> => {\n const path = `${FileSystem.documentDirectory}/${fileName}`;\n\n try {\n if (!(await Sharing.isAvailableAsync())) throw new Error('Sharing is not available');\n\n const [header, buffer] = base64.split(',');\n const [, mimeTypeStr] = header.split(':');\n const [mimeType] = mimeTypeStr.split(';');\n\n await FileSystem.writeAsStringAsync(`${path}`, buffer, {\n encoding: FileSystem.EncodingType.Base64,\n });\n\n await Sharing.shareAsync(path, { mimeType, UTI: fileName, dialogTitle: 'Save or share document' });\n } catch (error) {\n alert('Sharing failed: ' + error.message);\n } finally {\n await FileSystem.deleteAsync(path);\n }\n};\n"],"names":[],"mappings":";;AAUa,MAAA,cAAc,OAAO,QAAgB,aAAoC;AAClF,QAAM,OAAO,GAAG,WAAW,iBAAiB,IAAI,QAAQ;AAEpD,MAAA;AACI,QAAA,CAAE,MAAM,QAAQ,mBAA2B,OAAA,IAAI,MAAM,0BAA0B;AAEnF,UAAM,CAAC,QAAQ,MAAM,IAAI,OAAO,MAAM,GAAG;AACzC,UAAM,CAAG,EAAA,WAAW,IAAI,OAAO,MAAM,GAAG;AACxC,UAAM,CAAC,QAAQ,IAAI,YAAY,MAAM,GAAG;AAExC,UAAM,WAAW,mBAAmB,GAAG,IAAI,IAAI,QAAQ;AAAA,MACnD,UAAU,WAAW,aAAa;AAAA,IAAA,CACrC;AAEK,UAAA,QAAQ,WAAW,MAAM,EAAE,UAAU,KAAK,UAAU,aAAa,0BAA0B;AAAA,WAC5F,OAAO;AACN,UAAA,qBAAqB,MAAM,OAAO;AAAA,EAAA,UAC1C;AACQ,UAAA,WAAW,YAAY,IAAI;AAAA,EAAA;AAEzC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/react-native/update.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAGhD,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,GAAG,CAmC1B,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { jsxs } from "react/jsx-runtime";
|
|
2
|
-
import * as Updates from "expo-updates";
|
|
3
|
-
import { useState, useEffect } from "react";
|
|
4
|
-
import { Text } from "react-native";
|
|
5
|
-
const Update = function Update2({ children }) {
|
|
6
|
-
const [updating, setUpdating] = useState(true);
|
|
7
|
-
useEffect(() => {
|
|
8
|
-
(async () => {
|
|
9
|
-
try {
|
|
10
|
-
if (__DEV__) {
|
|
11
|
-
setUpdating(false);
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const update = await Updates.checkForUpdateAsync();
|
|
15
|
-
if (!update.isAvailable) {
|
|
16
|
-
setUpdating(false);
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
await Updates.fetchUpdateAsync();
|
|
20
|
-
alert("Update is available. App will reload.");
|
|
21
|
-
await Updates.reloadAsync();
|
|
22
|
-
} catch (error) {
|
|
23
|
-
alert(`Error fetching latest Expo update: ${error}`);
|
|
24
|
-
setUpdating(false);
|
|
25
|
-
}
|
|
26
|
-
})();
|
|
27
|
-
});
|
|
28
|
-
if (updating) {
|
|
29
|
-
return /* @__PURE__ */ jsxs(Text, { children: [
|
|
30
|
-
"Checking for updates (",
|
|
31
|
-
Updates.channel,
|
|
32
|
-
")..."
|
|
33
|
-
] });
|
|
34
|
-
}
|
|
35
|
-
return children;
|
|
36
|
-
};
|
|
37
|
-
export {
|
|
38
|
-
Update
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sources":["../../src/react-native/update.tsx"],"sourcesContent":["import * as Updates from 'expo-updates';\nimport { FC, useEffect, useState } from 'react';\nimport { Text } from 'react-native';\n\nexport const Update: FC<any> = function Update({ children }) {\n //FIXME useUpdates https://blog.expo.dev/feature-preview-updates-js-api-for-expo-updates-3b92beb40dab\n const [updating, setUpdating] = useState(true);\n\n useEffect(() => {\n (async () => {\n try {\n if (__DEV__) {\n setUpdating(false);\n return;\n }\n\n const update = await Updates.checkForUpdateAsync();\n\n if (!update.isAvailable) {\n setUpdating(false);\n return;\n }\n\n await Updates.fetchUpdateAsync();\n alert('Update is available. App will reload.');\n await Updates.reloadAsync();\n } catch (error) {\n // You can also add an alert() to see the error message in case of an error when fetching updates.\n alert(`Error fetching latest Expo update: ${error}`);\n setUpdating(false);\n }\n })();\n });\n\n if (updating) {\n return <Text>Checking for updates ({Updates.channel})...</Text>;\n }\n\n return children;\n};\n"],"names":["Update"],"mappings":";;;;AAIO,MAAM,SAAkB,SAASA,QAAO,EAAE,YAAY;AAEzD,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,IAAI;AAE7C,YAAU,MAAM;AACZ,KAAC,YAAY;AACL,UAAA;AACA,YAAI,SAAS;AACT,sBAAY,KAAK;AACjB;AAAA,QAAA;AAGE,cAAA,SAAS,MAAM,QAAQ,oBAAoB;AAE7C,YAAA,CAAC,OAAO,aAAa;AACrB,sBAAY,KAAK;AACjB;AAAA,QAAA;AAGJ,cAAM,QAAQ,iBAAiB;AAC/B,cAAM,uCAAuC;AAC7C,cAAM,QAAQ,YAAY;AAAA,eACrB,OAAO;AAEN,cAAA,sCAAsC,KAAK,EAAE;AACnD,oBAAY,KAAK;AAAA,MAAA;AAAA,IACrB,GACD;AAAA,EAAA,CACN;AAED,MAAI,UAAU;AACV,gCAAQ,MAAK,EAAA,UAAA;AAAA,MAAA;AAAA,MAAuB,QAAQ;AAAA,MAAQ;AAAA,IAAA,GAAI;AAAA,EAAA;AAGrD,SAAA;AACX;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAppState.d.ts","sourceRoot":"","sources":["../../src/react-native/useAppState.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,IAAI,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAc5F"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect } from "react";
|
|
2
|
-
import { AppState } from "react-native";
|
|
3
|
-
function useAppState() {
|
|
4
|
-
const [appState, setAppState] = useState(AppState.currentState);
|
|
5
|
-
useEffect(() => {
|
|
6
|
-
const subscription = AppState.addEventListener("change", (nextAppState) => {
|
|
7
|
-
setAppState(nextAppState);
|
|
8
|
-
});
|
|
9
|
-
return () => {
|
|
10
|
-
subscription.remove();
|
|
11
|
-
};
|
|
12
|
-
}, []);
|
|
13
|
-
return appState;
|
|
14
|
-
}
|
|
15
|
-
export {
|
|
16
|
-
useAppState
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=useAppState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAppState.js","sources":["../../src/react-native/useAppState.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { AppState } from 'react-native';\n\nexport function useAppState(): 'active' | 'background' | 'inactive' | 'unknown' | 'extension' {\n const [appState, setAppState] = useState(AppState.currentState);\n\n useEffect(() => {\n const subscription = AppState.addEventListener('change', (nextAppState) => {\n setAppState(nextAppState);\n });\n\n return () => {\n subscription.remove();\n };\n }, []);\n\n return appState;\n}\n"],"names":[],"mappings":";;AAGO,SAAS,cAA8E;AAC1F,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,SAAS,YAAY;AAE9D,YAAU,MAAM;AACZ,UAAM,eAAe,SAAS,iBAAiB,UAAU,CAAC,iBAAiB;AACvE,kBAAY,YAAY;AAAA,IAAA,CAC3B;AAED,WAAO,MAAM;AACT,mBAAa,OAAO;AAAA,IACxB;AAAA,EACJ,GAAG,EAAE;AAEE,SAAA;AACX;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fullpage.d.ts","sourceRoot":"","sources":["../../src/tailwind/fullpage.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,GAAG,CAQ5B,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
const Fullpage = ({ divRef = null, className = "", children, ...props }) => /* @__PURE__ */ jsx(
|
|
3
|
-
"div",
|
|
4
|
-
{
|
|
5
|
-
ref: divRef,
|
|
6
|
-
...props,
|
|
7
|
-
className: `container h-screen flex flex-col justify-center items-center ${className}`,
|
|
8
|
-
children
|
|
9
|
-
}
|
|
10
|
-
);
|
|
11
|
-
export {
|
|
12
|
-
Fullpage
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=fullpage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fullpage.js","sources":["../../src/tailwind/fullpage.tsx"],"sourcesContent":["import React, { FC } from 'react';\n\nexport const Fullpage: FC<any> = ({ divRef = null, className = '', children, ...props }) => (\n <div\n ref={divRef}\n {...props}\n className={`container h-screen flex flex-col justify-center items-center ${className}`}\n >\n {children}\n </div>\n);\n"],"names":[],"mappings":";AAEa,MAAA,WAAoB,CAAC,EAAE,SAAS,MAAM,YAAY,IAAI,UAAU,GAAG,MAAA,MAC5E;AAAA,EAAC;AAAA,EAAA;AAAA,IACG,KAAK;AAAA,IACJ,GAAG;AAAA,IACJ,WAAW,gEAAgE,SAAS;AAAA,IAEnF;AAAA,EAAA;AACL;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"responsiveHelper.d.ts","sourceRoot":"","sources":["../../src/tailwind/responsiveHelper.tsx"],"names":[],"mappings":"AAEA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,GAAG,CAWtC,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
-
const ResponsiveHelperTW = function ResponsiveHelperTW2() {
|
|
4
|
-
return /* @__PURE__ */ jsxs("span", { className: "fixed bottom-0 right-2 z-30 leading-none text-xs", children: [
|
|
5
|
-
/* @__PURE__ */ jsx("small", { className: "hidden xs:max-sm:block", children: "XS" }),
|
|
6
|
-
/* @__PURE__ */ jsx("small", { className: "hidden sm:max-md:block", children: "SM" }),
|
|
7
|
-
/* @__PURE__ */ jsx("small", { className: "hidden md:max-lg:block", children: "MD" }),
|
|
8
|
-
/* @__PURE__ */ jsx("small", { className: "hidden lg:max-xl:block", children: "LG" }),
|
|
9
|
-
/* @__PURE__ */ jsx("small", { className: "hidden xl:max-2xl:block", children: "XL" }),
|
|
10
|
-
/* @__PURE__ */ jsx("small", { className: "hidden 2xl:block", children: "XXL" })
|
|
11
|
-
] });
|
|
12
|
-
};
|
|
13
|
-
export {
|
|
14
|
-
ResponsiveHelperTW
|
|
15
|
-
};
|
|
16
|
-
//# sourceMappingURL=responsiveHelper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"responsiveHelper.js","sources":["../../src/tailwind/responsiveHelper.tsx"],"sourcesContent":["'use client';\n\nimport React, { FC } from 'react';\n\nexport const ResponsiveHelperTW: FC<any> = function ResponsiveHelperTW() {\n return (\n <span className=\"fixed bottom-0 right-2 z-30 leading-none text-xs\">\n <small className=\"hidden xs:max-sm:block\">XS</small>\n <small className=\"hidden sm:max-md:block\">SM</small>\n <small className=\"hidden md:max-lg:block\">MD</small>\n <small className=\"hidden lg:max-xl:block\">LG</small>\n <small className=\"hidden xl:max-2xl:block\">XL</small>\n <small className=\"hidden 2xl:block\">XXL</small>\n </span>\n );\n};\n"],"names":["ResponsiveHelperTW"],"mappings":";;AAIa,MAAA,qBAA8B,SAASA,sBAAqB;AAEjE,SAAA,qBAAC,QAAK,EAAA,WAAU,oDACZ,UAAA;AAAA,IAAC,oBAAA,SAAA,EAAM,WAAU,0BAAyB,UAAE,MAAA;AAAA,IAC3C,oBAAA,SAAA,EAAM,WAAU,0BAAyB,UAAE,MAAA;AAAA,IAC3C,oBAAA,SAAA,EAAM,WAAU,0BAAyB,UAAE,MAAA;AAAA,IAC3C,oBAAA,SAAA,EAAM,WAAU,0BAAyB,UAAE,MAAA;AAAA,IAC3C,oBAAA,SAAA,EAAM,WAAU,2BAA0B,UAAE,MAAA;AAAA,IAC5C,oBAAA,SAAA,EAAM,WAAU,oBAAmB,UAAG,MAAA,CAAA;AAAA,EAAA,GAC3C;AAER;"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import React, { FC } from 'react';
|
|
2
|
-
import { Container, ContainerProps } from 'react-bootstrap';
|
|
3
|
-
import { useBreakpoint } from './responsiveHelper';
|
|
4
|
-
|
|
5
|
-
export const AdaptiveContainer: FC<ContainerProps> = function AdaptiveContainer({ children, ...props }) {
|
|
6
|
-
const { isMobile } = useBreakpoint();
|
|
7
|
-
return (
|
|
8
|
-
<Container fluid={isMobile} {...props}>
|
|
9
|
-
{children}
|
|
10
|
-
</Container>
|
|
11
|
-
);
|
|
12
|
-
};
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import React, { cloneElement, useCallback, useState } from 'react';
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
-
import { fn } from '@storybook/test';
|
|
4
|
-
|
|
5
|
-
import { Select, Control, Range, Checkbox } from './controls';
|
|
6
|
-
|
|
7
|
-
const defaultOptions = { num: 1, bool: false, select: 'bar' };
|
|
8
|
-
|
|
9
|
-
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
10
|
-
const meta: Meta<typeof Control> = {
|
|
11
|
-
title: 'Bootstrap / Controls',
|
|
12
|
-
parameters: {
|
|
13
|
-
layout: 'centered',
|
|
14
|
-
},
|
|
15
|
-
tags: ['autodocs'],
|
|
16
|
-
argTypes: {},
|
|
17
|
-
args: { options: { ...defaultOptions }, setOptions: fn(), defaultOptions: { ...defaultOptions }, name: 'unused' },
|
|
18
|
-
render: function Demo(args) {
|
|
19
|
-
const [options, setOptionsRaw] = useState(args.options);
|
|
20
|
-
|
|
21
|
-
const setOptions = useCallback(
|
|
22
|
-
(options: any) =>
|
|
23
|
-
setOptionsRaw((currentOptions) => {
|
|
24
|
-
return { ...currentOptions, ...options };
|
|
25
|
-
}),
|
|
26
|
-
[],
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
const controlProps = { options, setOptions, defaultOptions };
|
|
30
|
-
|
|
31
|
-
const { children, name, ...safeArgs } = args;
|
|
32
|
-
|
|
33
|
-
return <div style={{ width: '300px' }}>{cloneElement(children as any, { ...safeArgs, ...controlProps })}</div>;
|
|
34
|
-
},
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export default meta;
|
|
38
|
-
|
|
39
|
-
type Story = StoryObj<typeof meta>;
|
|
40
|
-
|
|
41
|
-
export const RangeControl: Story = {
|
|
42
|
-
args: {
|
|
43
|
-
children: <Range name="Num" min={0} max={1} />,
|
|
44
|
-
},
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
export const CheckboxControl: Story = {
|
|
48
|
-
args: {
|
|
49
|
-
children: <Checkbox name="Bool" />,
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export const SelectControl: Story = {
|
|
54
|
-
args: {
|
|
55
|
-
children: (
|
|
56
|
-
<Select name="Select">
|
|
57
|
-
<option value="foo">Foo</option>
|
|
58
|
-
<option value="bar">Bar</option>
|
|
59
|
-
</Select>
|
|
60
|
-
),
|
|
61
|
-
},
|
|
62
|
-
};
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import React, { HTMLInputTypeAttribute, memo, FC } from 'react';
|
|
2
|
-
|
|
3
|
-
const lcFirst = (str: string) => str[0].toLowerCase() + str.substring(1, str.length);
|
|
4
|
-
|
|
5
|
-
const toProperty = (str: string) => lcFirst(str).split(' ').join('');
|
|
6
|
-
|
|
7
|
-
export interface ControlProps {
|
|
8
|
-
value?: any;
|
|
9
|
-
setValue?: (v: any) => void;
|
|
10
|
-
defaultValue?: any;
|
|
11
|
-
options?: { [key: string]: any };
|
|
12
|
-
setOptions?: (v: { [key: string]: any }) => void;
|
|
13
|
-
defaultOptions?: { [key: string]: any };
|
|
14
|
-
name: string;
|
|
15
|
-
children?: React.ReactNode;
|
|
16
|
-
inputProps?: {
|
|
17
|
-
type: HTMLInputTypeAttribute;
|
|
18
|
-
property?: string;
|
|
19
|
-
valueExtractor?: (e: any) => any;
|
|
20
|
-
className?: string;
|
|
21
|
-
} & any;
|
|
22
|
-
hideValue?: boolean;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export type LabelProps = Pick<ControlProps, 'name' | 'value' | 'defaultValue'> & { reset: () => void };
|
|
26
|
-
|
|
27
|
-
export const Label: FC<LabelProps> = memo(function Label({ name, reset, value, defaultValue }) {
|
|
28
|
-
return (
|
|
29
|
-
<label className="flex-grow-1 mb-0 d-flex align-items-center justify-content-start gap-2">
|
|
30
|
-
{name}
|
|
31
|
-
{value !== defaultValue && (
|
|
32
|
-
<>
|
|
33
|
-
<a href="javascript: void(0)" onClick={reset}>
|
|
34
|
-
<small>reset</small>
|
|
35
|
-
</a>
|
|
36
|
-
</>
|
|
37
|
-
)}
|
|
38
|
-
</label>
|
|
39
|
-
);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
export const Control: FC<ControlProps> = memo(function Control({
|
|
43
|
-
value = null,
|
|
44
|
-
setValue,
|
|
45
|
-
defaultValue = null,
|
|
46
|
-
options = {},
|
|
47
|
-
setOptions,
|
|
48
|
-
defaultOptions = {},
|
|
49
|
-
name,
|
|
50
|
-
inputProps: { Tag = 'input', property = 'value', valueExtractor = (e: any) => e.target.value, ...inputProps } = {},
|
|
51
|
-
hideValue = false,
|
|
52
|
-
children,
|
|
53
|
-
}) {
|
|
54
|
-
const prop = toProperty(name);
|
|
55
|
-
|
|
56
|
-
defaultValue = defaultValue || defaultOptions[prop];
|
|
57
|
-
value = value || options?.[prop];
|
|
58
|
-
setValue = setValue || ((v) => setOptions?.({ [prop]: v }));
|
|
59
|
-
|
|
60
|
-
const reset = () => setValue(defaultValue);
|
|
61
|
-
|
|
62
|
-
return (
|
|
63
|
-
<div className="d-flex align-items-center gap-2">
|
|
64
|
-
<Label name={name} reset={reset} value={value} defaultValue={defaultValue} />
|
|
65
|
-
<Tag
|
|
66
|
-
{...inputProps}
|
|
67
|
-
{...{ [property]: value || '' }} // null is needed to make it always controlled
|
|
68
|
-
className={`${value === defaultValue ? 'opacity-75' : ''} ${inputProps.className}`}
|
|
69
|
-
onChange={(e: Event) => setValue(valueExtractor(e))}
|
|
70
|
-
>
|
|
71
|
-
{children}
|
|
72
|
-
</Tag>
|
|
73
|
-
{!hideValue && (
|
|
74
|
-
<span onDoubleClick={reset} className="text-start" style={{ width: '20px' }}>
|
|
75
|
-
{value}
|
|
76
|
-
</span>
|
|
77
|
-
)}
|
|
78
|
-
</div>
|
|
79
|
-
);
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
export interface RangeProps extends ControlProps {
|
|
83
|
-
min: number;
|
|
84
|
-
max: number;
|
|
85
|
-
step?: number;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export const Range: FC<RangeProps> = memo(function Range({ min, max, step = 0.1, ...props }) {
|
|
89
|
-
return (
|
|
90
|
-
<Control
|
|
91
|
-
inputProps={{
|
|
92
|
-
type: 'range',
|
|
93
|
-
min,
|
|
94
|
-
max,
|
|
95
|
-
step,
|
|
96
|
-
className: 'form-control-range',
|
|
97
|
-
valueExtractor: (e: any) => parseFloat(e.target.value),
|
|
98
|
-
}}
|
|
99
|
-
{...props}
|
|
100
|
-
/>
|
|
101
|
-
);
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
export const Checkbox: FC<ControlProps> = memo(function Checkbox(props) {
|
|
105
|
-
return (
|
|
106
|
-
<Control
|
|
107
|
-
inputProps={{ type: 'checkbox', property: 'checked', valueExtractor: (e: any) => e.target.checked }}
|
|
108
|
-
{...props}
|
|
109
|
-
/>
|
|
110
|
-
);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
export const Select: FC<ControlProps> = memo(function Select({ children, ...props }) {
|
|
114
|
-
return (
|
|
115
|
-
<Control inputProps={{ Tag: 'select', className: 'form-select' }} {...props} hideValue={true}>
|
|
116
|
-
{children}
|
|
117
|
-
</Control>
|
|
118
|
-
);
|
|
119
|
-
});
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { fn } from '@storybook/test';
|
|
3
|
-
|
|
4
|
-
import { ErrorAlert } from './error';
|
|
5
|
-
|
|
6
|
-
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
7
|
-
const meta: Meta<typeof ErrorAlert> = {
|
|
8
|
-
title: 'Bootstrap / ErrorAlert',
|
|
9
|
-
component: ErrorAlert,
|
|
10
|
-
parameters: {
|
|
11
|
-
layout: 'centered',
|
|
12
|
-
},
|
|
13
|
-
tags: ['autodocs'],
|
|
14
|
-
argTypes: {
|
|
15
|
-
// backgroundColor: { control: 'color' },
|
|
16
|
-
children: { control: 'text' },
|
|
17
|
-
},
|
|
18
|
-
args: { onRetry: fn() },
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export default meta;
|
|
22
|
-
type Story = StoryObj<typeof meta>;
|
|
23
|
-
|
|
24
|
-
export const String: Story = {
|
|
25
|
-
args: {
|
|
26
|
-
children: 'An error occurred',
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export const ErrorObject: Story = {
|
|
31
|
-
args: {
|
|
32
|
-
children: new Error('An error occurred') as any,
|
|
33
|
-
},
|
|
34
|
-
};
|
package/src/bootstrap/error.tsx
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import React, { FC } from 'react';
|
|
4
|
-
import { Alert, AlertProps, Button, ButtonProps } from 'react-bootstrap';
|
|
5
|
-
|
|
6
|
-
export type ErrorAlertProps = {
|
|
7
|
-
children?: Error | string | any;
|
|
8
|
-
onRetry?: () => any;
|
|
9
|
-
buttonProps?: ButtonProps;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
//TODO Create MUI-specific?
|
|
13
|
-
export const ErrorAlert: FC<ErrorAlertProps> = function ErrorAlert({ onRetry, children, buttonProps, ...props }) {
|
|
14
|
-
if (!children) return null;
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<Alert variant="danger" {...props}>
|
|
18
|
-
<div>{children.message || children.toString()}</div>
|
|
19
|
-
{onRetry && (
|
|
20
|
-
<div>
|
|
21
|
-
<Button
|
|
22
|
-
variant="link"
|
|
23
|
-
className="alert-link"
|
|
24
|
-
{...buttonProps}
|
|
25
|
-
onClick={(e) => {
|
|
26
|
-
e.preventDefault();
|
|
27
|
-
e.stopPropagation();
|
|
28
|
-
onRetry();
|
|
29
|
-
}}
|
|
30
|
-
>
|
|
31
|
-
Retry
|
|
32
|
-
</Button>
|
|
33
|
-
</div>
|
|
34
|
-
)}
|
|
35
|
-
</Alert>
|
|
36
|
-
);
|
|
37
|
-
};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
-
import { fn } from '@storybook/test';
|
|
4
|
-
|
|
5
|
-
import { FieldGroup } from './field';
|
|
6
|
-
import { FormControl } from 'react-bootstrap';
|
|
7
|
-
|
|
8
|
-
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
9
|
-
const meta: Meta<typeof FieldGroup> = {
|
|
10
|
-
title: 'Bootstrap / FieldGroup',
|
|
11
|
-
component: FieldGroup,
|
|
12
|
-
parameters: {
|
|
13
|
-
layout: 'centered',
|
|
14
|
-
},
|
|
15
|
-
tags: ['autodocs'],
|
|
16
|
-
argTypes: {
|
|
17
|
-
text: { control: 'text' },
|
|
18
|
-
label: { control: 'text' },
|
|
19
|
-
horizontal: { control: 'check' },
|
|
20
|
-
},
|
|
21
|
-
args: { onClick: fn() },
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export default meta;
|
|
25
|
-
|
|
26
|
-
type Story = StoryObj<typeof meta>;
|
|
27
|
-
|
|
28
|
-
export const Vertical: Story = {
|
|
29
|
-
args: {
|
|
30
|
-
label: 'Label',
|
|
31
|
-
children: <FormControl placeholder="Input" />,
|
|
32
|
-
text: 'Text',
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export const Horizontal: Story = {
|
|
37
|
-
args: {
|
|
38
|
-
label: 'Label',
|
|
39
|
-
children: <FormControl placeholder="Input" />,
|
|
40
|
-
horizontal: true,
|
|
41
|
-
},
|
|
42
|
-
};
|