@sqlrooms/kepler 0.26.1-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +9 -0
- package/README.md +3 -0
- package/dist/KeplerSlice.d.ts +86 -0
- package/dist/KeplerSlice.d.ts.map +1 -0
- package/dist/KeplerSlice.js +395 -0
- package/dist/KeplerSlice.js.map +1 -0
- package/dist/components/CustomDndContext.d.ts +11 -0
- package/dist/components/CustomDndContext.d.ts.map +1 -0
- package/dist/components/CustomDndContext.js +60 -0
- package/dist/components/CustomDndContext.js.map +1 -0
- package/dist/components/CustomFilterManager.d.ts +8 -0
- package/dist/components/CustomFilterManager.d.ts.map +1 -0
- package/dist/components/CustomFilterManager.js +85 -0
- package/dist/components/CustomFilterManager.js.map +1 -0
- package/dist/components/CustomInteractionManager.d.ts +5 -0
- package/dist/components/CustomInteractionManager.d.ts.map +1 -0
- package/dist/components/CustomInteractionManager.js +54 -0
- package/dist/components/CustomInteractionManager.js.map +1 -0
- package/dist/components/CustomLayerManager.d.ts +8 -0
- package/dist/components/CustomLayerManager.d.ts.map +1 -0
- package/dist/components/CustomLayerManager.js +111 -0
- package/dist/components/CustomLayerManager.js.map +1 -0
- package/dist/components/CustomMapManager.d.ts +7 -0
- package/dist/components/CustomMapManager.d.ts.map +1 -0
- package/dist/components/CustomMapManager.js +99 -0
- package/dist/components/CustomMapManager.js.map +1 -0
- package/dist/components/CustomTooltipConfig.d.ts +30 -0
- package/dist/components/CustomTooltipConfig.d.ts.map +1 -0
- package/dist/components/CustomTooltipConfig.js +85 -0
- package/dist/components/CustomTooltipConfig.js.map +1 -0
- package/dist/components/FileDropInput.d.ts +8 -0
- package/dist/components/FileDropInput.d.ts.map +1 -0
- package/dist/components/FileDropInput.js +35 -0
- package/dist/components/FileDropInput.js.map +1 -0
- package/dist/components/KeplerAddDataDialog.d.ts +24 -0
- package/dist/components/KeplerAddDataDialog.d.ts.map +1 -0
- package/dist/components/KeplerAddDataDialog.js +60 -0
- package/dist/components/KeplerAddDataDialog.js.map +1 -0
- package/dist/components/KeplerAddTileSetDialog.d.ts +14 -0
- package/dist/components/KeplerAddTileSetDialog.d.ts.map +1 -0
- package/dist/components/KeplerAddTileSetDialog.js +20 -0
- package/dist/components/KeplerAddTileSetDialog.js.map +1 -0
- package/dist/components/KeplerImageExport.d.ts +10 -0
- package/dist/components/KeplerImageExport.d.ts.map +1 -0
- package/dist/components/KeplerImageExport.js +30 -0
- package/dist/components/KeplerImageExport.js.map +1 -0
- package/dist/components/KeplerInjector.d.ts +2 -0
- package/dist/components/KeplerInjector.d.ts.map +1 -0
- package/dist/components/KeplerInjector.js +17 -0
- package/dist/components/KeplerInjector.js.map +1 -0
- package/dist/components/KeplerMapContainer.d.ts +5 -0
- package/dist/components/KeplerMapContainer.d.ts.map +1 -0
- package/dist/components/KeplerMapContainer.js +76 -0
- package/dist/components/KeplerMapContainer.js.map +1 -0
- package/dist/components/KeplerPlotContainer.d.ts +6 -0
- package/dist/components/KeplerPlotContainer.d.ts.map +1 -0
- package/dist/components/KeplerPlotContainer.js +33 -0
- package/dist/components/KeplerPlotContainer.js.map +1 -0
- package/dist/components/KeplerProvider.d.ts +7 -0
- package/dist/components/KeplerProvider.d.ts.map +1 -0
- package/dist/components/KeplerProvider.js +22 -0
- package/dist/components/KeplerProvider.js.map +1 -0
- package/dist/components/KeplerS3Browser.d.ts +19 -0
- package/dist/components/KeplerS3Browser.d.ts.map +1 -0
- package/dist/components/KeplerS3Browser.js +69 -0
- package/dist/components/KeplerS3Browser.js.map +1 -0
- package/dist/components/KeplerSidePanels.d.ts +9 -0
- package/dist/components/KeplerSidePanels.d.ts.map +1 -0
- package/dist/components/KeplerSidePanels.js +15 -0
- package/dist/components/KeplerSidePanels.js.map +1 -0
- package/dist/hooks/useDndEffects.d.ts +10 -0
- package/dist/hooks/useDndEffects.d.ts.map +1 -0
- package/dist/hooks/useDndEffects.js +52 -0
- package/dist/hooks/useDndEffects.js.map +1 -0
- package/dist/hooks/useDndLayers.d.ts +10 -0
- package/dist/hooks/useDndLayers.d.ts.map +1 -0
- package/dist/hooks/useDndLayers.js +53 -0
- package/dist/hooks/useDndLayers.js.map +1 -0
- package/dist/hooks/useKeplerStateActions.d.ts +17 -0
- package/dist/hooks/useKeplerStateActions.d.ts.map +1 -0
- package/dist/hooks/useKeplerStateActions.js +14 -0
- package/dist/hooks/useKeplerStateActions.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/theme.d.ts +468 -0
- package/dist/styles/theme.d.ts.map +1 -0
- package/dist/styles/theme.js +78 -0
- package/dist/styles/theme.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { messages } from '@kepler.gl/localization';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { IntlProvider } from 'react-intl';
|
|
5
|
+
import { ThemeProvider, StyleSheetManager } from 'styled-components';
|
|
6
|
+
import { useStoreWithKepler } from '../KeplerSlice';
|
|
7
|
+
import { KeplerGlContext, shouldForwardProp } from '@kepler.gl/components';
|
|
8
|
+
import { darkTheme } from '../styles/theme';
|
|
9
|
+
import { Provider } from 'react-redux';
|
|
10
|
+
// Provide intl, theme, context, and redux store to the kepler
|
|
11
|
+
export const KeplerProvider = ({ children, mapId, }) => {
|
|
12
|
+
const reduxProviderStore = useStoreWithKepler((state) => state.kepler.__reduxProviderStore);
|
|
13
|
+
const keplerContext = useMemo(() => ({
|
|
14
|
+
selector: (state) => state[mapId],
|
|
15
|
+
id: mapId,
|
|
16
|
+
}), [mapId]);
|
|
17
|
+
if (!reduxProviderStore) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return (_jsx(IntlProvider, { locale: "en", messages: messages['en'], children: _jsx(Provider, { store: reduxProviderStore, children: _jsx(StyleSheetManager, { shouldForwardProp: shouldForwardProp, children: _jsx(ThemeProvider, { theme: darkTheme, children: _jsx(KeplerGlContext.Provider, { value: keplerContext, children: _jsx(_Fragment, { children: children }) }) }) }) }) }));
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=KeplerProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeplerProvider.js","sourceRoot":"","sources":["../../src/components/KeplerProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAoB,OAAO,EAAC,MAAM,OAAO,CAAC;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,aAAa,EAAE,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAqB,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAMrC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC5D,QAAQ,EACR,KAAK,GACN,EAAE,EAAE;IACH,MAAM,kBAAkB,GAAG,kBAAkB,CAC3C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAC7C,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CAAC;QACL,QAAQ,EAAE,CAAC,KAAyB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;QACrD,EAAE,EAAE,KAAK;KACV,CAAC,EACF,CAAC,KAAK,CAAC,CACR,CAAC;IACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CACL,KAAC,YAAY,IAAC,MAAM,EAAC,IAAI,EAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,YAChD,KAAC,QAAQ,IAAC,KAAK,EAAE,kBAAkB,YACjC,KAAC,iBAAiB,IAAC,iBAAiB,EAAE,iBAAiB,YACrD,KAAC,aAAa,IAAC,KAAK,EAAE,SAAS,YAC7B,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa,YAC5C,4BAAG,QAAQ,GAAI,GACU,GACb,GACE,GACX,GACE,CAChB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {messages} from '@kepler.gl/localization';\nimport {PropsWithChildren, useMemo} from 'react';\nimport {IntlProvider} from 'react-intl';\nimport {ThemeProvider, StyleSheetManager} from 'styled-components';\nimport {KeplerGlReduxState, useStoreWithKepler} from '../KeplerSlice';\n\nimport {KeplerGlContext, shouldForwardProp} from '@kepler.gl/components';\nimport {darkTheme} from '../styles/theme';\nimport {Provider} from 'react-redux';\n\ntype KeplerProviderProps = PropsWithChildren<{\n mapId: string;\n}>;\n\n// Provide intl, theme, context, and redux store to the kepler\nexport const KeplerProvider: React.FC<KeplerProviderProps> = ({\n children,\n mapId,\n}) => {\n const reduxProviderStore = useStoreWithKepler(\n (state) => state.kepler.__reduxProviderStore,\n );\n\n const keplerContext = useMemo(\n () => ({\n selector: (state: KeplerGlReduxState) => state[mapId],\n id: mapId,\n }),\n [mapId],\n );\n if (!reduxProviderStore) {\n return null;\n }\n return (\n <IntlProvider locale=\"en\" messages={messages['en']}>\n <Provider store={reduxProviderStore}>\n <StyleSheetManager shouldForwardProp={shouldForwardProp}>\n <ThemeProvider theme={darkTheme}>\n <KeplerGlContext.Provider value={keplerContext}>\n <>{children}</>\n </KeplerGlContext.Provider>\n </ThemeProvider>\n </StyleSheetManager>\n </Provider>\n </IntlProvider>\n );\n};\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { S3BrowserState } from '@sqlrooms/s3-browser';
|
|
2
|
+
import { S3FileOrDirectory, S3Config, S3Credentials } from '@sqlrooms/s3-browser';
|
|
3
|
+
export type KeplerS3BrowserProps = {
|
|
4
|
+
listS3Files: (args: {
|
|
5
|
+
s3Config: S3Config;
|
|
6
|
+
prefix: string;
|
|
7
|
+
}) => Promise<S3FileOrDirectory[]>;
|
|
8
|
+
loadS3Files: (args: {
|
|
9
|
+
s3Config: S3Config;
|
|
10
|
+
prefix: string;
|
|
11
|
+
files: string[];
|
|
12
|
+
}) => Promise<void>;
|
|
13
|
+
s3Browser: S3BrowserState['s3Browser'];
|
|
14
|
+
saveS3Credentials: (s3Config: S3Config) => Promise<void>;
|
|
15
|
+
loadS3Credentials: () => Promise<S3Credentials[]>;
|
|
16
|
+
deleteS3Credentials: (id: string) => Promise<void>;
|
|
17
|
+
};
|
|
18
|
+
export declare const KeplerS3Browser: ({ listS3Files, s3Browser, loadS3Files, saveS3Credentials, loadS3Credentials, deleteS3Credentials, }: KeplerS3BrowserProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=KeplerS3Browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeplerS3Browser.d.ts","sourceRoot":"","sources":["../../src/components/KeplerS3Browser.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,iBAAiB,EAAE,QAAQ,EAAE,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAUhF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,CAAC,IAAI,EAAE;QAClB,QAAQ,EAAE,QAAQ,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,KAAK,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACnC,WAAW,EAAE,CAAC,IAAI,EAAE;QAClB,QAAQ,EAAE,QAAQ,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACvC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,iBAAiB,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAClD,mBAAmB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,CAAC;AACF,eAAO,MAAM,eAAe,GAAI,qGAO7B,oBAAoB,4CAkJtB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
3
|
+
import { S3FileBrowser, S3CredentialsForm, } from '@sqlrooms/s3-browser';
|
|
4
|
+
import { ChevronLeft } from 'lucide-react';
|
|
5
|
+
import { DialogFooter, Button, Spinner, Alert, AlertDescription, } from '@sqlrooms/ui';
|
|
6
|
+
export const KeplerS3Browser = ({ listS3Files, s3Browser, loadS3Files, saveS3Credentials, loadS3Credentials, deleteS3Credentials, }) => {
|
|
7
|
+
const [isConnecting, setIsConnecting] = useState(false);
|
|
8
|
+
const [error, setError] = useState('');
|
|
9
|
+
const [files, setFiles] = useState(null);
|
|
10
|
+
const [selectedDirectory, onChangeSelectedDirectory] = useState('');
|
|
11
|
+
const [selectedFiles, setSelectedFiles] = useState([]);
|
|
12
|
+
const { setCurrentS3Config, clearCurrentS3Config, currentS3Config } = s3Browser;
|
|
13
|
+
const listFiles = useCallback(async (s3Config, prefix) => {
|
|
14
|
+
try {
|
|
15
|
+
const files = await listS3Files({
|
|
16
|
+
s3Config,
|
|
17
|
+
prefix,
|
|
18
|
+
});
|
|
19
|
+
setCurrentS3Config(s3Config);
|
|
20
|
+
setFiles(files);
|
|
21
|
+
setError('');
|
|
22
|
+
onChangeSelectedDirectory(prefix);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
setError(error.message);
|
|
26
|
+
}
|
|
27
|
+
setIsConnecting(false);
|
|
28
|
+
}, [listS3Files, setCurrentS3Config, setFiles, setIsConnecting, setError]);
|
|
29
|
+
const handleLoadFiles = useCallback(async () => {
|
|
30
|
+
if (!currentS3Config)
|
|
31
|
+
return;
|
|
32
|
+
await loadS3Files({
|
|
33
|
+
s3Config: currentS3Config,
|
|
34
|
+
prefix: selectedDirectory,
|
|
35
|
+
files: selectedFiles,
|
|
36
|
+
});
|
|
37
|
+
}, [loadS3Files, currentS3Config, selectedFiles, selectedDirectory]);
|
|
38
|
+
// load files when the component mounts
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (currentS3Config) {
|
|
41
|
+
listFiles(currentS3Config, '');
|
|
42
|
+
}
|
|
43
|
+
}, []);
|
|
44
|
+
const onSelectDirectory = useCallback((directory) => {
|
|
45
|
+
if (!currentS3Config)
|
|
46
|
+
return;
|
|
47
|
+
setIsConnecting(true);
|
|
48
|
+
listFiles(currentS3Config, directory);
|
|
49
|
+
}, [currentS3Config, setIsConnecting, listFiles]);
|
|
50
|
+
const onConnect = useCallback((values) => {
|
|
51
|
+
setIsConnecting(true);
|
|
52
|
+
listFiles(values, '');
|
|
53
|
+
}, [listFiles]);
|
|
54
|
+
const onBack = useCallback(() => {
|
|
55
|
+
setIsConnecting(false);
|
|
56
|
+
setFiles(null);
|
|
57
|
+
setSelectedFiles([]);
|
|
58
|
+
onChangeSelectedDirectory('');
|
|
59
|
+
clearCurrentS3Config();
|
|
60
|
+
}, [
|
|
61
|
+
setIsConnecting,
|
|
62
|
+
setFiles,
|
|
63
|
+
setSelectedFiles,
|
|
64
|
+
clearCurrentS3Config,
|
|
65
|
+
onChangeSelectedDirectory,
|
|
66
|
+
]);
|
|
67
|
+
return (_jsxs("div", { className: "flex h-full flex-col items-center gap-4", children: [!files ? (_jsxs(_Fragment, { children: [error ? (_jsx("div", { className: "flex w-full justify-center px-4", children: _jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: error }) }) })) : null, _jsx(S3CredentialsForm, { onConnect: onConnect, isLoading: isConnecting, saveS3Credentials: saveS3Credentials, loadS3Credentials: loadS3Credentials, deleteS3Credentials: deleteS3Credentials, onInputChange: () => setError('') })] })) : files.length ? (_jsx("div", { className: "flex h-full w-full flex-col items-start justify-start gap-2", children: _jsx(S3FileBrowser, { files: files, selectedFiles: selectedFiles, selectedDirectory: selectedDirectory, onChangeSelectedFiles: setSelectedFiles, onChangeSelectedDirectory: onSelectDirectory, onCanConfirmChange: () => { }, renderFileActions: () => (_jsxs("div", { className: "flex w-full items-center justify-between px-2 text-xs", children: [_jsxs(Button, { variant: "link", className: "h-6 px-1 py-0", onClick: onBack, children: [_jsx(ChevronLeft, { size: 16 }), "Disconnect"] }), _jsxs("div", { className: "flex items-center gap-1", children: [isConnecting ? (_jsx("div", { className: "text-muted-foreground", children: _jsx(Spinner, { className: "h-6 w-6" }) })) : (_jsx("div", { className: "text-muted-foreground", children: "Connected to" })), _jsx("b", { children: currentS3Config?.bucket })] })] })) }) })) : (_jsx("div", { className: "flex h-full items-center justify-center", children: _jsx("p", { className: "text-muted-foreground", children: "No files found" }) })), _jsx(DialogFooter, { className: "mt-6 w-full justify-end", children: files?.length ? (_jsx(Button, { disabled: !selectedFiles.length, type: "submit", onClick: handleLoadFiles, children: "Add Selected" })) : null })] }));
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=KeplerS3Browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeplerS3Browser.js","sourceRoot":"","sources":["../../src/components/KeplerS3Browser.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, {useState, useEffect, useCallback} from 'react';\n\nimport {\n S3FileBrowser,\n S3CredentialsForm,\n S3BrowserState,\n} from '@sqlrooms/s3-browser';\nimport {S3FileOrDirectory, S3Config, S3Credentials} from '@sqlrooms/s3-browser';\nimport {ChevronLeft} from 'lucide-react';\nimport {\n DialogFooter,\n Button,\n Spinner,\n Alert,\n AlertDescription,\n} from '@sqlrooms/ui';\n\nexport type KeplerS3BrowserProps = {\n listS3Files: (args: {\n s3Config: S3Config;\n prefix: string;\n }) => Promise<S3FileOrDirectory[]>;\n loadS3Files: (args: {\n s3Config: S3Config;\n prefix: string;\n files: string[];\n }) => Promise<void>;\n s3Browser: S3BrowserState['s3Browser'];\n saveS3Credentials: (s3Config: S3Config) => Promise<void>;\n loadS3Credentials: () => Promise<S3Credentials[]>;\n deleteS3Credentials: (id: string) => Promise<void>;\n};\nexport const KeplerS3Browser = ({\n listS3Files,\n s3Browser,\n loadS3Files,\n saveS3Credentials,\n loadS3Credentials,\n deleteS3Credentials,\n}: KeplerS3BrowserProps) => {\n const [isConnecting, setIsConnecting] = useState(false);\n const [error, setError] = useState('');\n const [files, setFiles] = useState<S3FileOrDirectory[] | null>(null);\n const [selectedDirectory, onChangeSelectedDirectory] = useState('');\n const [selectedFiles, setSelectedFiles] = useState<string[]>([]);\n const {setCurrentS3Config, clearCurrentS3Config, currentS3Config} = s3Browser;\n\n const listFiles = useCallback(\n async (s3Config: S3Config, prefix: string) => {\n try {\n const files = await listS3Files({\n s3Config,\n prefix,\n });\n setCurrentS3Config(s3Config);\n setFiles(files);\n setError('');\n onChangeSelectedDirectory(prefix);\n } catch (error) {\n setError((error as Error).message);\n }\n setIsConnecting(false);\n },\n [listS3Files, setCurrentS3Config, setFiles, setIsConnecting, setError],\n );\n const handleLoadFiles = useCallback(async () => {\n if (!currentS3Config) return;\n await loadS3Files({\n s3Config: currentS3Config,\n prefix: selectedDirectory,\n files: selectedFiles,\n });\n }, [loadS3Files, currentS3Config, selectedFiles, selectedDirectory]);\n\n // load files when the component mounts\n useEffect(() => {\n if (currentS3Config) {\n listFiles(currentS3Config, '');\n }\n }, []);\n\n const onSelectDirectory = useCallback(\n (directory: string) => {\n if (!currentS3Config) return;\n setIsConnecting(true);\n listFiles(currentS3Config, directory);\n },\n [currentS3Config, setIsConnecting, listFiles],\n );\n\n const onConnect = useCallback(\n (values: S3Config) => {\n setIsConnecting(true);\n listFiles(values, '');\n },\n [listFiles],\n );\n const onBack = useCallback(() => {\n setIsConnecting(false);\n setFiles(null);\n setSelectedFiles([]);\n onChangeSelectedDirectory('');\n clearCurrentS3Config();\n }, [\n setIsConnecting,\n setFiles,\n setSelectedFiles,\n clearCurrentS3Config,\n onChangeSelectedDirectory,\n ]);\n return (\n <div className=\"flex h-full flex-col items-center gap-4\">\n {/* Connection Panel */}\n {!files ? (\n <>\n {error ? (\n <div className=\"flex w-full justify-center px-4\">\n <Alert variant=\"destructive\">\n <AlertDescription>{error}</AlertDescription>\n </Alert>\n </div>\n ) : null}\n <S3CredentialsForm\n onConnect={onConnect}\n isLoading={isConnecting}\n saveS3Credentials={saveS3Credentials}\n loadS3Credentials={loadS3Credentials}\n deleteS3Credentials={deleteS3Credentials}\n onInputChange={() => setError('')}\n />\n </>\n ) : files.length ? (\n <div className=\"flex h-full w-full flex-col items-start justify-start gap-2\">\n <S3FileBrowser\n files={files}\n selectedFiles={selectedFiles}\n selectedDirectory={selectedDirectory}\n onChangeSelectedFiles={setSelectedFiles}\n onChangeSelectedDirectory={onSelectDirectory}\n onCanConfirmChange={() => {}}\n renderFileActions={() => (\n <div className=\"flex w-full items-center justify-between px-2 text-xs\">\n <Button\n variant=\"link\"\n className=\"h-6 px-1 py-0\"\n onClick={onBack}\n >\n <ChevronLeft size={16} />\n Disconnect\n </Button>\n <div className=\"flex items-center gap-1\">\n {isConnecting ? (\n <div className=\"text-muted-foreground\">\n <Spinner className=\"h-6 w-6\" />\n </div>\n ) : (\n <div className=\"text-muted-foreground\">Connected to</div>\n )}\n\n <b>{currentS3Config?.bucket}</b>\n </div>\n </div>\n )}\n />\n </div>\n ) : (\n <div className=\"flex h-full items-center justify-center\">\n <p className=\"text-muted-foreground\">No files found</p>\n </div>\n )}\n\n {/* Footer */}\n <DialogFooter className=\"mt-6 w-full justify-end\">\n {files?.length ? (\n <Button\n disabled={!selectedFiles.length}\n type=\"submit\"\n onClick={handleLoadFiles}\n >\n Add Selected\n </Button>\n ) : null}\n </DialogFooter>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type KeplerSidePanelProps = {
|
|
3
|
+
mapId: string;
|
|
4
|
+
panelId: 'layer' | 'filter' | 'interaction' | 'map';
|
|
5
|
+
showDeleteDataset?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare const KeplerSidePanels: React.FC<KeplerSidePanelProps>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=KeplerSidePanels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeplerSidePanels.d.ts","sourceRoot":"","sources":["../../src/components/KeplerSidePanels.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,KAAK,oBAAoB,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,KAAK,CAAC;IACpD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AACF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA+B3D,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { DndContextFactory } from '@kepler.gl/components';
|
|
3
|
+
import { useKeplerStateActions } from '../hooks/useKeplerStateActions';
|
|
4
|
+
import { KeplerProvider } from './KeplerProvider';
|
|
5
|
+
import { KeplerInjector } from './KeplerInjector';
|
|
6
|
+
import { CustomLayerManager } from './CustomLayerManager';
|
|
7
|
+
import { CustomFilterManager } from './CustomFilterManager';
|
|
8
|
+
import { CustomMapManager } from './CustomMapManager';
|
|
9
|
+
import { CustomInteractionManager } from './CustomInteractionManager';
|
|
10
|
+
const DndContext = KeplerInjector.get(DndContextFactory);
|
|
11
|
+
export const KeplerSidePanels = ({ mapId, panelId, showDeleteDataset, }) => {
|
|
12
|
+
const { keplerState } = useKeplerStateActions({ mapId });
|
|
13
|
+
return (_jsx(KeplerProvider, { mapId: mapId, children: _jsx(DndContext, { visState: keplerState?.visState, children: _jsxs("div", { children: [panelId === 'layer' && (_jsx(CustomLayerManager, { mapId: mapId, showDeleteDataset: showDeleteDataset })), panelId === 'filter' && (_jsx(CustomFilterManager, { mapId: mapId, showDeleteDataset: showDeleteDataset })), panelId === 'map' && _jsx(CustomMapManager, { mapId: mapId }), panelId === 'interaction' && (_jsx(CustomInteractionManager, { mapId: mapId }))] }) }) }));
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=KeplerSidePanels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeplerSidePanels.js","sourceRoot":"","sources":["../../src/components/KeplerSidePanels.tsx"],"names":[],"mappings":";AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,qBAAqB,EAAC,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAC,wBAAwB,EAAC,MAAM,4BAA4B,CAAC;AAEpE,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAOzD,MAAM,CAAC,MAAM,gBAAgB,GAAmC,CAAC,EAC/D,KAAK,EACL,OAAO,EACP,iBAAiB,GAClB,EAAE,EAAE;IACH,MAAM,EAAC,WAAW,EAAC,GAAG,qBAAqB,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC;IAErD,OAAO,CACL,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,YAC1B,KAAC,UAAU,IAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,YACzC,0BACG,OAAO,KAAK,OAAO,IAAI,CACtB,KAAC,kBAAkB,IACjB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,iBAAiB,GACpC,CACH,EACA,OAAO,KAAK,QAAQ,IAAI,CACvB,KAAC,mBAAmB,IAClB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,iBAAiB,GACpC,CACH,EACA,OAAO,KAAK,KAAK,IAAI,KAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,GAAI,EACvD,OAAO,KAAK,aAAa,IAAI,CAC5B,KAAC,wBAAwB,IAAC,KAAK,EAAE,KAAK,GAAI,CAC3C,IACG,GACK,GACE,CAClB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport {DndContextFactory} from '@kepler.gl/components';\nimport {useKeplerStateActions} from '../hooks/useKeplerStateActions';\nimport {KeplerProvider} from './KeplerProvider';\nimport {KeplerInjector} from './KeplerInjector';\nimport {CustomLayerManager} from './CustomLayerManager';\nimport {CustomFilterManager} from './CustomFilterManager';\nimport {CustomMapManager} from './CustomMapManager';\nimport {CustomInteractionManager} from './CustomInteractionManager';\n\nconst DndContext = KeplerInjector.get(DndContextFactory);\n\ntype KeplerSidePanelProps = {\n mapId: string;\n panelId: 'layer' | 'filter' | 'interaction' | 'map';\n showDeleteDataset?: boolean;\n};\nexport const KeplerSidePanels: React.FC<KeplerSidePanelProps> = ({\n mapId,\n panelId,\n showDeleteDataset,\n}) => {\n const {keplerState} = useKeplerStateActions({mapId});\n\n return (\n <KeplerProvider mapId={mapId}>\n <DndContext visState={keplerState?.visState}>\n <div>\n {panelId === 'layer' && (\n <CustomLayerManager\n mapId={mapId}\n showDeleteDataset={showDeleteDataset}\n />\n )}\n {panelId === 'filter' && (\n <CustomFilterManager\n mapId={mapId}\n showDeleteDataset={showDeleteDataset}\n />\n )}\n {panelId === 'map' && <CustomMapManager mapId={mapId} />}\n {panelId === 'interaction' && (\n <CustomInteractionManager mapId={mapId} />\n )}\n </div>\n </DndContext>\n </KeplerProvider>\n );\n};\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DragEndEvent, DragStartEvent } from '@dnd-kit/core';
|
|
2
|
+
import { Effect } from '@kepler.gl/types';
|
|
3
|
+
type DndEffectsHook = {
|
|
4
|
+
activeEffect: Effect | undefined;
|
|
5
|
+
onDragStart: (event: DragStartEvent) => void;
|
|
6
|
+
onDragEnd: (event: DragEndEvent) => void;
|
|
7
|
+
};
|
|
8
|
+
declare const useDndEffects: (mapId: string, effects: Effect[], effectOrder: string[]) => DndEffectsHook;
|
|
9
|
+
export default useDndEffects;
|
|
10
|
+
//# sourceMappingURL=useDndEffects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDndEffects.d.ts","sourceRoot":"","sources":["../../src/hooks/useDndEffects.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAQxC,KAAK,cAAc,GAAG;IACpB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,MAAM,EAAE,KAClB,cAgFJ,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useCallback, useState } from 'react';
|
|
2
|
+
import { reorderEffect, updateEffect } from '@kepler.gl/actions';
|
|
3
|
+
import { reorderEffectOrder } from '@kepler.gl/utils';
|
|
4
|
+
import { SORTABLE_EFFECT_TYPE } from '@kepler.gl/components';
|
|
5
|
+
import { useStoreWithKepler } from '../KeplerSlice';
|
|
6
|
+
// TODO import from @kepler.gl/components once 3.2.1 release is available
|
|
7
|
+
const SORTABLE_EFFECT_PANEL_TYPE = 'root';
|
|
8
|
+
const useDndEffects = (mapId, effects, effectOrder) => {
|
|
9
|
+
// Use the proper sqlrooms dispatch mechanism instead of useDispatch
|
|
10
|
+
const dispatch = useStoreWithKepler((state) => state.kepler.dispatchAction);
|
|
11
|
+
const [activeEffect, setActiveEffect] = useState();
|
|
12
|
+
const onEffectDragStart = useCallback((event) => {
|
|
13
|
+
const { active } = event;
|
|
14
|
+
const newActiveEffect = effects.find((effect) => effect.id === active.id);
|
|
15
|
+
if (newActiveEffect) {
|
|
16
|
+
setActiveEffect(newActiveEffect);
|
|
17
|
+
if (newActiveEffect.isConfigActive) {
|
|
18
|
+
dispatch(mapId, updateEffect(newActiveEffect.id, { isConfigActive: false }));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}, [dispatch, effects, mapId]);
|
|
22
|
+
const onEffectDragEnd = useCallback((event) => {
|
|
23
|
+
const { active, over } = event;
|
|
24
|
+
const { id: activeEffectId } = active;
|
|
25
|
+
const overType = over?.data?.current?.type;
|
|
26
|
+
if (!overType) {
|
|
27
|
+
setActiveEffect(undefined);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
switch (overType) {
|
|
31
|
+
// swaping effects
|
|
32
|
+
case SORTABLE_EFFECT_TYPE:
|
|
33
|
+
dispatch(mapId, reorderEffect(reorderEffectOrder(effectOrder, activeEffectId.toString(), over.id.toString())));
|
|
34
|
+
break;
|
|
35
|
+
// moving effects within side panel
|
|
36
|
+
case SORTABLE_EFFECT_PANEL_TYPE:
|
|
37
|
+
// move effect to the end of the list
|
|
38
|
+
dispatch(mapId, reorderEffect(reorderEffectOrder(effectOrder, activeEffectId.toString(), effectOrder[effectOrder.length - 1] || '')));
|
|
39
|
+
break;
|
|
40
|
+
default:
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
setActiveEffect(undefined);
|
|
44
|
+
}, [dispatch, effectOrder, mapId]);
|
|
45
|
+
return {
|
|
46
|
+
activeEffect,
|
|
47
|
+
onDragStart: onEffectDragStart,
|
|
48
|
+
onDragEnd: onEffectDragEnd,
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
export default useDndEffects;
|
|
52
|
+
//# sourceMappingURL=useDndEffects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDndEffects.js","sourceRoot":"","sources":["../../src/hooks/useDndEffects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAElD,yEAAyE;AACzE,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAQ1C,MAAM,aAAa,GAIG,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IACpD,oEAAoE;IACpE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAE5E,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAGjC,QAAQ,EAAE,CAAC;IAEf,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAqB,EAAE,EAAE;QACxB,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC;QACvB,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1E,IAAI,eAAe,EAAE,CAAC;YACpB,eAAe,CAAC,eAAe,CAAC,CAAC;YACjC,IAAK,eAAuB,CAAC,cAAc,EAAE,CAAC;gBAC5C,QAAQ,CACN,KAAK,EACL,YAAY,CAAC,eAAe,CAAC,EAAE,EAAE,EAAC,cAAc,EAAE,KAAK,EAAC,CAAC,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAC3B,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,KAAmB,EAAE,EAAE;QACtB,MAAM,EAAC,MAAM,EAAE,IAAI,EAAC,GAAG,KAAK,CAAC;QAE7B,MAAM,EAAC,EAAE,EAAE,cAAc,EAAC,GAAG,MAAM,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;QAE3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,eAAe,CAAC,SAAS,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACjB,kBAAkB;YAClB,KAAK,oBAAoB;gBACvB,QAAQ,CACN,KAAK,EACL,aAAa,CACX,kBAAkB,CAChB,WAAW,EACX,cAAc,CAAC,QAAQ,EAAE,EACzB,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CACnB,CACF,CACF,CAAC;gBACF,MAAM;YACR,oCAAoC;YACpC,KAAK,0BAA0B;gBAC7B,qCAAqC;gBACrC,QAAQ,CACN,KAAK,EACL,aAAa,CACX,kBAAkB,CAChB,WAAW,EACX,cAAc,CAAC,QAAQ,EAAE,EACzB,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAC1C,CACF,CACF,CAAC;gBACF,MAAM;YACR;gBACE,MAAM;QACV,CAAC;QAED,eAAe,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC,EACD,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAC/B,CAAC;IAEF,OAAO;QACL,YAAY;QACZ,WAAW,EAAE,iBAAiB;QAC9B,SAAS,EAAE,eAAe;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import {useCallback, useState} from 'react';\nimport {DragEndEvent, DragStartEvent} from '@dnd-kit/core';\nimport {reorderEffect, updateEffect} from '@kepler.gl/actions';\nimport {reorderEffectOrder} from '@kepler.gl/utils';\nimport {Effect} from '@kepler.gl/types';\nimport {SORTABLE_EFFECT_TYPE} from '@kepler.gl/components';\n\nimport {useStoreWithKepler} from '../KeplerSlice';\n\n// TODO import from @kepler.gl/components once 3.2.1 release is available\nconst SORTABLE_EFFECT_PANEL_TYPE = 'root';\n\ntype DndEffectsHook = {\n activeEffect: Effect | undefined;\n onDragStart: (event: DragStartEvent) => void;\n onDragEnd: (event: DragEndEvent) => void;\n};\n\nconst useDndEffects: (\n mapId: string,\n effects: Effect[],\n effectOrder: string[],\n) => DndEffectsHook = (mapId, effects, effectOrder) => {\n // Use the proper sqlrooms dispatch mechanism instead of useDispatch\n const dispatch = useStoreWithKepler((state) => state.kepler.dispatchAction);\n\n const [activeEffect, setActiveEffect]: [\n Effect | undefined,\n (effect: Effect | undefined) => void,\n ] = useState();\n\n const onEffectDragStart = useCallback(\n (event: DragStartEvent) => {\n const {active} = event;\n const newActiveEffect = effects.find((effect) => effect.id === active.id);\n if (newActiveEffect) {\n setActiveEffect(newActiveEffect);\n if ((newActiveEffect as any).isConfigActive) {\n dispatch(\n mapId,\n updateEffect(newActiveEffect.id, {isConfigActive: false}),\n );\n }\n }\n },\n [dispatch, effects, mapId],\n );\n\n const onEffectDragEnd = useCallback(\n (event: DragEndEvent) => {\n const {active, over} = event;\n\n const {id: activeEffectId} = active;\n const overType = over?.data?.current?.type;\n\n if (!overType) {\n setActiveEffect(undefined);\n return;\n }\n\n switch (overType) {\n // swaping effects\n case SORTABLE_EFFECT_TYPE:\n dispatch(\n mapId,\n reorderEffect(\n reorderEffectOrder(\n effectOrder,\n activeEffectId.toString(),\n over.id.toString(),\n ),\n ),\n );\n break;\n // moving effects within side panel\n case SORTABLE_EFFECT_PANEL_TYPE:\n // move effect to the end of the list\n dispatch(\n mapId,\n reorderEffect(\n reorderEffectOrder(\n effectOrder,\n activeEffectId.toString(),\n effectOrder[effectOrder.length - 1] || '',\n ),\n ),\n );\n break;\n default:\n break;\n }\n\n setActiveEffect(undefined);\n },\n [dispatch, effectOrder, mapId],\n );\n\n return {\n activeEffect,\n onDragStart: onEffectDragStart,\n onDragEnd: onEffectDragEnd,\n };\n};\n\nexport default useDndEffects;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DragEndEvent, DragStartEvent } from '@dnd-kit/core';
|
|
2
|
+
import { Layer } from '@kepler.gl/layers';
|
|
3
|
+
type DndEffectsHook = {
|
|
4
|
+
activeLayer: Layer | undefined;
|
|
5
|
+
onDragStart: (event: DragStartEvent) => void;
|
|
6
|
+
onDragEnd: (event: DragEndEvent) => void;
|
|
7
|
+
};
|
|
8
|
+
declare const useDndLayers: (mapId: string, layers: Layer[], layerOrder: string[]) => DndEffectsHook;
|
|
9
|
+
export default useDndLayers;
|
|
10
|
+
//# sourceMappingURL=useDndLayers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDndLayers.d.ts","sourceRoot":"","sources":["../../src/hooks/useDndLayers.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAE,cAAc,EAAC,MAAM,eAAe,CAAC;AAO3D,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAQxC,KAAK,cAAc,GAAG;IACpB,WAAW,EAAE,KAAK,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,CAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,KAAK,EAAE,EACf,UAAU,EAAE,MAAM,EAAE,KACjB,cA8EJ,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { useCallback, useState } from 'react';
|
|
2
|
+
import { layerConfigChange, reorderLayer, toggleLayerForMap, } from '@kepler.gl/actions';
|
|
3
|
+
import { reorderLayerOrder } from '@kepler.gl/reducers';
|
|
4
|
+
import { DROPPABLE_MAP_CONTAINER_TYPE, SORTABLE_LAYER_TYPE, SORTABLE_SIDE_PANEL_TYPE, } from '@kepler.gl/components';
|
|
5
|
+
import { useStoreWithKepler } from '../KeplerSlice';
|
|
6
|
+
const useDndLayers = (mapId, layers, layerOrder) => {
|
|
7
|
+
const dispatch = useStoreWithKepler((state) => state.kepler.dispatchAction);
|
|
8
|
+
const [activeLayer, setActiveLayer] = useState();
|
|
9
|
+
const onDragStart = useCallback((event) => {
|
|
10
|
+
const { active } = event;
|
|
11
|
+
const newActiveLayer = layers.find((layer) => layer.id === active.id);
|
|
12
|
+
if (newActiveLayer) {
|
|
13
|
+
setActiveLayer(newActiveLayer);
|
|
14
|
+
if (newActiveLayer?.config.isConfigActive) {
|
|
15
|
+
dispatch(mapId, layerConfigChange(newActiveLayer, { isConfigActive: false }));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}, [dispatch, layers, mapId]);
|
|
19
|
+
const onDragEnd = useCallback((event) => {
|
|
20
|
+
const { active, over } = event;
|
|
21
|
+
const { id: activeLayerId } = active;
|
|
22
|
+
const overType = over?.data?.current?.type;
|
|
23
|
+
if (!overType) {
|
|
24
|
+
setActiveLayer(undefined);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
switch (overType) {
|
|
28
|
+
// moving layers into maps
|
|
29
|
+
case DROPPABLE_MAP_CONTAINER_TYPE: {
|
|
30
|
+
const mapIndex = over.data.current?.index ?? 0;
|
|
31
|
+
dispatch(mapId, toggleLayerForMap(mapIndex, activeLayerId));
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
// swaping layers
|
|
35
|
+
case SORTABLE_LAYER_TYPE: {
|
|
36
|
+
const newLayerOrder = reorderLayerOrder(layerOrder, activeLayerId, over.id);
|
|
37
|
+
dispatch(mapId, reorderLayer(newLayerOrder));
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
// moving layers within side panel
|
|
41
|
+
case SORTABLE_SIDE_PANEL_TYPE:
|
|
42
|
+
// move layer to the end of the list
|
|
43
|
+
dispatch(mapId, reorderLayer(reorderLayerOrder(layerOrder, activeLayerId, layerOrder[layerOrder.length - 1] || '')));
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
setActiveLayer(undefined);
|
|
49
|
+
}, [dispatch, layerOrder, mapId]);
|
|
50
|
+
return { activeLayer, onDragStart, onDragEnd };
|
|
51
|
+
};
|
|
52
|
+
export default useDndLayers;
|
|
53
|
+
//# sourceMappingURL=useDndLayers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDndLayers.js","sourceRoot":"","sources":["../../src/hooks/useDndLayers.ts"],"names":[],"mappings":"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","sourcesContent":["import {useCallback, useState} from 'react';\nimport {DragEndEvent, DragStartEvent} from '@dnd-kit/core';\nimport {\n layerConfigChange,\n reorderLayer,\n toggleLayerForMap,\n} from '@kepler.gl/actions';\nimport {reorderLayerOrder} from '@kepler.gl/reducers';\nimport {Layer} from '@kepler.gl/layers';\nimport {\n DROPPABLE_MAP_CONTAINER_TYPE,\n SORTABLE_LAYER_TYPE,\n SORTABLE_SIDE_PANEL_TYPE,\n} from '@kepler.gl/components';\nimport {useStoreWithKepler} from '../KeplerSlice';\n\ntype DndEffectsHook = {\n activeLayer: Layer | undefined;\n onDragStart: (event: DragStartEvent) => void;\n onDragEnd: (event: DragEndEvent) => void;\n};\n\nconst useDndLayers: (\n mapId: string,\n layers: Layer[],\n layerOrder: string[],\n) => DndEffectsHook = (mapId, layers, layerOrder) => {\n const dispatch = useStoreWithKepler((state) => state.kepler.dispatchAction);\n\n const [activeLayer, setActiveLayer]: [\n activeEffect: Layer | undefined,\n setActiveEffect: (effect: Layer | undefined) => void,\n ] = useState();\n\n const onDragStart = useCallback(\n (event: any) => {\n const {active} = event;\n const newActiveLayer = layers.find((layer) => layer.id === active.id);\n if (newActiveLayer) {\n setActiveLayer(newActiveLayer);\n if (newActiveLayer?.config.isConfigActive) {\n dispatch(\n mapId,\n layerConfigChange(newActiveLayer, {isConfigActive: false}),\n );\n }\n }\n },\n [dispatch, layers, mapId],\n );\n\n const onDragEnd = useCallback(\n (event: any) => {\n const {active, over} = event;\n\n const {id: activeLayerId} = active;\n const overType = over?.data?.current?.type;\n\n if (!overType) {\n setActiveLayer(undefined);\n return;\n }\n\n switch (overType) {\n // moving layers into maps\n case DROPPABLE_MAP_CONTAINER_TYPE: {\n const mapIndex = over.data.current?.index ?? 0;\n dispatch(mapId, toggleLayerForMap(mapIndex, activeLayerId));\n break;\n }\n // swaping layers\n case SORTABLE_LAYER_TYPE: {\n const newLayerOrder = reorderLayerOrder(\n layerOrder,\n activeLayerId,\n over.id,\n );\n dispatch(mapId, reorderLayer(newLayerOrder));\n break;\n }\n // moving layers within side panel\n case SORTABLE_SIDE_PANEL_TYPE:\n // move layer to the end of the list\n dispatch(\n mapId,\n reorderLayer(\n reorderLayerOrder(\n layerOrder,\n activeLayerId,\n layerOrder[layerOrder.length - 1] || '',\n ),\n ),\n );\n break;\n default:\n break;\n }\n\n setActiveLayer(undefined);\n },\n [dispatch, layerOrder, mapId],\n );\n\n return {activeLayer, onDragStart, onDragEnd};\n};\n\nexport default useDndLayers;\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { KeplerAction } from '../KeplerSlice';
|
|
2
|
+
import { KeplerGlState } from '@kepler.gl/reducers';
|
|
3
|
+
export type KeplerActions = {
|
|
4
|
+
visStateActions: any;
|
|
5
|
+
mapStateActions: any;
|
|
6
|
+
mapStyleActions: any;
|
|
7
|
+
uiStateActions: any;
|
|
8
|
+
providerActions: any;
|
|
9
|
+
dispatch: (action: KeplerAction) => void;
|
|
10
|
+
};
|
|
11
|
+
export declare function useKeplerStateActions({ mapId }: {
|
|
12
|
+
mapId: string;
|
|
13
|
+
}): {
|
|
14
|
+
keplerActions: KeplerActions;
|
|
15
|
+
keplerState: KeplerGlState | undefined;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=useKeplerStateActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeplerStateActions.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeplerStateActions.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGlD,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,GAAG,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC;IACrB,cAAc,EAAE,GAAG,CAAC;IACpB,eAAe,EAAE,GAAG,CAAC;IACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1C,CAAC;AACF,wBAAgB,qBAAqB,CAAC,EAAC,KAAK,EAAC,EAAE;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG;IAC/D,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;CACxC,CAoBA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { useStoreWithKepler } from '../KeplerSlice';
|
|
3
|
+
import { makeGetActionCreators } from '@kepler.gl/components';
|
|
4
|
+
const keplerActionSelector = makeGetActionCreators();
|
|
5
|
+
export function useKeplerStateActions({ mapId }) {
|
|
6
|
+
const dispatchAction = useStoreWithKepler((state) => state.kepler.dispatchAction);
|
|
7
|
+
const forwardToDispatch = useMemo(() => (action) => dispatchAction(mapId, action), [mapId, dispatchAction]);
|
|
8
|
+
const keplerState = useStoreWithKepler((state) => {
|
|
9
|
+
return state.kepler.map[mapId];
|
|
10
|
+
});
|
|
11
|
+
const keplerActions = useMemo(() => keplerActionSelector(forwardToDispatch, {}), [forwardToDispatch]);
|
|
12
|
+
return { keplerActions, keplerState };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=useKeplerStateActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useKeplerStateActions.js","sourceRoot":"","sources":["../../src/hooks/useKeplerStateActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAe,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAG5D,MAAM,oBAAoB,GAAG,qBAAqB,EAAE,CAAC;AASrD,MAAM,UAAU,qBAAqB,CAAC,EAAC,KAAK,EAAkB;IAI5D,MAAM,cAAc,GAAG,kBAAkB,CACvC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CACvC,CAAC;IAEF,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CAAC,CAAC,MAAoB,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAC7D,CAAC,KAAK,EAAE,cAAc,CAAC,CACxB,CAAC;IAEF,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE,CAAC,EACjD,CAAC,iBAAiB,CAAC,CACpB,CAAC;IAEF,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,CAAC;AACtC,CAAC","sourcesContent":["import {useMemo} from 'react';\nimport {KeplerAction, useStoreWithKepler} from '../KeplerSlice';\nimport {makeGetActionCreators} from '@kepler.gl/components';\nimport {KeplerGlState} from '@kepler.gl/reducers';\n\nconst keplerActionSelector = makeGetActionCreators();\nexport type KeplerActions = {\n visStateActions: any;\n mapStateActions: any;\n mapStyleActions: any;\n uiStateActions: any;\n providerActions: any;\n dispatch: (action: KeplerAction) => void;\n};\nexport function useKeplerStateActions({mapId}: {mapId: string}): {\n keplerActions: KeplerActions;\n keplerState: KeplerGlState | undefined;\n} {\n const dispatchAction = useStoreWithKepler(\n (state) => state.kepler.dispatchAction,\n );\n\n const forwardToDispatch = useMemo(\n () => (action: KeplerAction) => dispatchAction(mapId, action),\n [mapId, dispatchAction],\n );\n\n const keplerState = useStoreWithKepler((state) => {\n return state.kepler.map[mapId];\n });\n\n const keplerActions = useMemo(\n () => keplerActionSelector(forwardToDispatch, {}),\n [forwardToDispatch],\n );\n\n return {keplerActions, keplerState};\n}\n"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* {@include ../README.md}
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export { createKeplerSlice, useStoreWithKepler, createDefaultKeplerConfig, type KeplerSliceState, } from './KeplerSlice';
|
|
6
|
+
export { KeplerMapContainer } from './components/KeplerMapContainer';
|
|
7
|
+
export { KeplerSidePanels } from './components/KeplerSidePanels';
|
|
8
|
+
export { KeplerAddTileSetDialog, type LoadTileSet, } from './components/KeplerAddTileSetDialog';
|
|
9
|
+
export { KeplerAddDataDialog, type KeplerAddDataDialogProps, type AddDataMethods, } from './components/KeplerAddDataDialog';
|
|
10
|
+
export { FileDropInput } from './components/FileDropInput';
|
|
11
|
+
export { KeplerS3Browser, type KeplerS3BrowserProps, } from './components/KeplerS3Browser';
|
|
12
|
+
export { KeplerProvider } from './components/KeplerProvider';
|
|
13
|
+
export { useKeplerStateActions } from './hooks/useKeplerStateActions';
|
|
14
|
+
export { KeplerPlotContainer } from './components/KeplerPlotContainer';
|
|
15
|
+
export { KeplerImageExport } from './components/KeplerImageExport';
|
|
16
|
+
export * from '@sqlrooms/kepler-config';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,sBAAsB,EACtB,KAAK,WAAW,GACjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,GACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EACL,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AAEjE,cAAc,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* {@include ../README.md}
|
|
3
|
+
* @packageDocumentation
|
|
4
|
+
*/
|
|
5
|
+
export { createKeplerSlice, useStoreWithKepler, createDefaultKeplerConfig, } from './KeplerSlice';
|
|
6
|
+
export { KeplerMapContainer } from './components/KeplerMapContainer';
|
|
7
|
+
export { KeplerSidePanels } from './components/KeplerSidePanels';
|
|
8
|
+
export { KeplerAddTileSetDialog, } from './components/KeplerAddTileSetDialog';
|
|
9
|
+
export { KeplerAddDataDialog, } from './components/KeplerAddDataDialog';
|
|
10
|
+
export { FileDropInput } from './components/FileDropInput';
|
|
11
|
+
export { KeplerS3Browser, } from './components/KeplerS3Browser';
|
|
12
|
+
export { KeplerProvider } from './components/KeplerProvider';
|
|
13
|
+
export { useKeplerStateActions } from './hooks/useKeplerStateActions';
|
|
14
|
+
export { KeplerPlotContainer } from './components/KeplerPlotContainer';
|
|
15
|
+
export { KeplerImageExport } from './components/KeplerImageExport';
|
|
16
|
+
export * from '@sqlrooms/kepler-config';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,GAE1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,sBAAsB,GAEvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,mBAAmB,GAGpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC;AACzD,OAAO,EACL,eAAe,GAEhB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAC,qBAAqB,EAAC,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAC,mBAAmB,EAAC,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AAEjE,cAAc,yBAAyB,CAAC","sourcesContent":["/**\n * {@include ../README.md}\n * @packageDocumentation\n */\n\nexport {\n createKeplerSlice,\n useStoreWithKepler,\n createDefaultKeplerConfig,\n type KeplerSliceState,\n} from './KeplerSlice';\n\nexport {KeplerMapContainer} from './components/KeplerMapContainer';\nexport {KeplerSidePanels} from './components/KeplerSidePanels';\nexport {\n KeplerAddTileSetDialog,\n type LoadTileSet,\n} from './components/KeplerAddTileSetDialog';\nexport {\n KeplerAddDataDialog,\n type KeplerAddDataDialogProps,\n type AddDataMethods,\n} from './components/KeplerAddDataDialog';\nexport {FileDropInput} from './components/FileDropInput';\nexport {\n KeplerS3Browser,\n type KeplerS3BrowserProps,\n} from './components/KeplerS3Browser';\nexport {KeplerProvider} from './components/KeplerProvider';\nexport {useKeplerStateActions} from './hooks/useKeplerStateActions';\nexport {KeplerPlotContainer} from './components/KeplerPlotContainer';\nexport {KeplerImageExport} from './components/KeplerImageExport';\n\nexport * from '@sqlrooms/kepler-config';\n"]}
|