@flanksource/clicky-ui 0.3.6 → 0.3.7
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 +42 -0
- package/dist/components/DateField.d.ts +1 -1
- package/dist/components/DatePicker.d.ts +1 -1
- package/dist/components/DateTimePicker.d.ts +1 -1
- package/dist/components/FormLookupProvider.cjs +12 -0
- package/dist/components/FormLookupProvider.cjs.map +1 -0
- package/dist/components/FormLookupProvider.d.ts +7 -0
- package/dist/components/FormLookupProvider.d.ts.map +1 -0
- package/dist/components/FormLookupProvider.js +12 -0
- package/dist/components/FormLookupProvider.js.map +1 -0
- package/dist/components/JsonSchemaForm.cjs +2 -2
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.js +1 -1
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/ListMenu.cjs +145 -0
- package/dist/components/ListMenu.cjs.map +1 -0
- package/dist/components/ListMenu.d.ts +54 -0
- package/dist/components/ListMenu.d.ts.map +1 -0
- package/dist/components/ListMenu.js +145 -0
- package/dist/components/ListMenu.js.map +1 -0
- package/dist/components/MdxEditorField.cjs +128 -0
- package/dist/components/MdxEditorField.cjs.map +1 -0
- package/dist/components/MdxEditorField.d.ts +4 -0
- package/dist/components/MdxEditorField.d.ts.map +1 -0
- package/dist/components/MdxEditorField.js +106 -0
- package/dist/components/MdxEditorField.js.map +1 -0
- package/dist/components/MdxEditorToolbar.cjs +76 -0
- package/dist/components/MdxEditorToolbar.cjs.map +1 -0
- package/dist/components/MdxEditorToolbar.d.ts +8 -0
- package/dist/components/MdxEditorToolbar.d.ts.map +1 -0
- package/dist/components/MdxEditorToolbar.js +76 -0
- package/dist/components/MdxEditorToolbar.js.map +1 -0
- package/dist/components/button-variants.d.ts +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/form-lookup-context.cjs +1 -8
- package/dist/components/form-lookup-context.cjs.map +1 -1
- package/dist/components/form-lookup-context.d.ts +1 -5
- package/dist/components/form-lookup-context.d.ts.map +1 -1
- package/dist/components/form-lookup-context.js +1 -8
- package/dist/components/form-lookup-context.js.map +1 -1
- package/dist/components/jotai-bindings-core.cjs +197 -0
- package/dist/components/jotai-bindings-core.cjs.map +1 -0
- package/dist/components/jotai-bindings-core.d.ts +45 -0
- package/dist/components/jotai-bindings-core.d.ts.map +1 -0
- package/dist/components/jotai-bindings-core.js +197 -0
- package/dist/components/jotai-bindings-core.js.map +1 -0
- package/dist/components/jotai-bindings.cjs +17 -0
- package/dist/components/jotai-bindings.cjs.map +1 -0
- package/dist/components/jotai-bindings.d.ts +4 -0
- package/dist/components/jotai-bindings.d.ts.map +1 -0
- package/dist/components/jotai-bindings.js +17 -0
- package/dist/components/jotai-bindings.js.map +1 -0
- package/dist/components/json-schema-form-fields.cjs +37 -0
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts +6 -0
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +38 -1
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +3 -1
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +4 -2
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +9 -0
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +9 -0
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +4 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/mdx-editor-field-plugins.cjs +124 -0
- package/dist/components/mdx-editor-field-plugins.cjs.map +1 -0
- package/dist/components/mdx-editor-field-plugins.d.ts +6 -0
- package/dist/components/mdx-editor-field-plugins.d.ts.map +1 -0
- package/dist/components/mdx-editor-field-plugins.js +124 -0
- package/dist/components/mdx-editor-field-plugins.js.map +1 -0
- package/dist/components/mdx-editor-options.d.ts +77 -0
- package/dist/components/mdx-editor-options.d.ts.map +1 -0
- package/dist/components/use-list-menu-selection.cjs +77 -0
- package/dist/components/use-list-menu-selection.cjs.map +1 -0
- package/dist/components/use-list-menu-selection.d.ts +40 -0
- package/dist/components/use-list-menu-selection.d.ts.map +1 -0
- package/dist/components/use-list-menu-selection.js +77 -0
- package/dist/components/use-list-menu-selection.js.map +1 -0
- package/dist/components.cjs +10 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +4 -1
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +10 -1
- package/dist/components.js.map +1 -1
- package/dist/data/MarkdownEditor.model.d.ts +1 -1
- package/dist/data/PromptBanner.cjs +199 -0
- package/dist/data/PromptBanner.cjs.map +1 -0
- package/dist/data/PromptBanner.d.ts +17 -0
- package/dist/data/PromptBanner.d.ts.map +1 -0
- package/dist/data/PromptBanner.js +199 -0
- package/dist/data/PromptBanner.js.map +1 -0
- package/dist/data/PromptBanner.model.cjs +132 -0
- package/dist/data/PromptBanner.model.cjs.map +1 -0
- package/dist/data/PromptBanner.model.d.ts +23 -0
- package/dist/data/PromptBanner.model.d.ts.map +1 -0
- package/dist/data/PromptBanner.model.js +132 -0
- package/dist/data/PromptBanner.model.js.map +1 -0
- package/dist/data/PromptDialog.cjs +43 -0
- package/dist/data/PromptDialog.cjs.map +1 -0
- package/dist/data/PromptDialog.d.ts +14 -0
- package/dist/data/PromptDialog.d.ts.map +1 -0
- package/dist/data/PromptDialog.js +43 -0
- package/dist/data/PromptDialog.js.map +1 -0
- package/dist/data/TaskManager.cjs +8 -1
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +8 -1
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskProgress.cjs +15 -2
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +0 -10
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +15 -2
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +53 -9
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +53 -9
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +232 -39
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +4 -7
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +234 -41
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +89 -3
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +89 -3
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +7 -1
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/task-status.cjs +19 -12
- package/dist/data/task-status.cjs.map +1 -1
- package/dist/data/task-status.d.ts +2 -1
- package/dist/data/task-status.d.ts.map +1 -1
- package/dist/data/task-status.js +19 -12
- package/dist/data/task-status.js.map +1 -1
- package/dist/data/test-runner/TestRunner.fixtures.d.ts +11 -4
- package/dist/data/test-runner/TestRunner.fixtures.d.ts.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +7 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +3 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +7 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-prompts.cjs +83 -0
- package/dist/hooks/use-prompts.cjs.map +1 -0
- package/dist/hooks/use-prompts.d.ts +43 -0
- package/dist/hooks/use-prompts.d.ts.map +1 -0
- package/dist/hooks/use-prompts.js +83 -0
- package/dist/hooks/use-prompts.js.map +1 -0
- package/dist/hooks.cjs +3 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +1 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +3 -0
- package/dist/hooks.js.map +1 -1
- package/dist/index.cjs +17 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/jotai.cjs +9 -0
- package/dist/jotai.cjs.map +1 -0
- package/dist/jotai.d.ts +4 -0
- package/dist/jotai.d.ts.map +1 -0
- package/dist/jotai.js +9 -0
- package/dist/jotai.js.map +1 -0
- package/dist/lib/utils.cjs +18 -1
- package/dist/lib/utils.cjs.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +18 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/mdx-editor.cjs +5 -0
- package/dist/mdx-editor.cjs.map +1 -0
- package/dist/mdx-editor.css +2 -0
- package/dist/mdx-editor.d.ts +2 -0
- package/dist/mdx-editor.d.ts.map +1 -0
- package/dist/mdx-editor.js +5 -0
- package/dist/mdx-editor.js.map +1 -0
- package/dist/rpc/apiClient.cjs +1 -1
- package/dist/rpc/apiClient.cjs.map +1 -1
- package/dist/rpc/apiClient.js +1 -1
- package/dist/rpc/apiClient.js.map +1 -1
- package/dist/rpc/surfaceIconMap.cjs +12 -1
- package/dist/rpc/surfaceIconMap.cjs.map +1 -1
- package/dist/rpc/surfaceIconMap.d.ts.map +1 -1
- package/dist/rpc/surfaceIconMap.js +12 -1
- package/dist/rpc/surfaceIconMap.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +1 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/oxlint-plugins/README.md +148 -0
- package/oxlint-plugins/clicky-ui-no-adhoc-overlay.js +88 -0
- package/oxlint-plugins/clicky-ui-prefer-components.js +46 -0
- package/oxlint-plugins/clicky-ui-prefer-icons.js +121 -0
- package/oxlint-plugins/clicky-ui-prefer-tailwind.js +98 -0
- package/oxlint-plugins/clicky-ui-prefer-theme.js +134 -0
- package/oxlint-plugins/clicky-ui-shared.js +132 -0
- package/oxlint-plugins/clicky-ui.js +34 -0
- package/oxlint-plugins/no-iconify-names.js +37 -0
- package/package.json +21 -1
|
@@ -11,7 +11,7 @@ export type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & VariantProps
|
|
|
11
11
|
};
|
|
12
12
|
export declare const Button: import('react').ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<(props?: ({
|
|
13
13
|
variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
|
|
14
|
-
size?: "sm" | "lg" | "
|
|
14
|
+
size?: "sm" | "lg" | "icon" | "default" | null | undefined;
|
|
15
15
|
} & import('class-variance-authority/types').ClassProp) | undefined) => string> & {
|
|
16
16
|
/** Render the button styles onto the child element via Radix Slot. */
|
|
17
17
|
asChild?: boolean;
|
|
@@ -1,14 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const jsxRuntime = require("react/jsx-runtime");
|
|
4
3
|
const react = require("react");
|
|
5
4
|
const FormLookupContext = react.createContext(void 0);
|
|
6
|
-
function FormLookupProvider({
|
|
7
|
-
fetcher,
|
|
8
|
-
children
|
|
9
|
-
}) {
|
|
10
|
-
return /* @__PURE__ */ jsxRuntime.jsx(FormLookupContext.Provider, { value: fetcher, children });
|
|
11
|
-
}
|
|
12
5
|
function useLookupFetcher() {
|
|
13
6
|
return react.useContext(FormLookupContext);
|
|
14
7
|
}
|
|
@@ -30,7 +23,7 @@ function resolveLookupScope(descriptor, rootValue) {
|
|
|
30
23
|
if (values.length === 0) return {};
|
|
31
24
|
return { [scope.param]: values.join(scope.join ?? ",") };
|
|
32
25
|
}
|
|
33
|
-
exports.
|
|
26
|
+
exports.FormLookupContext = FormLookupContext;
|
|
34
27
|
exports.resolveLookupScope = resolveLookupScope;
|
|
35
28
|
exports.useLookupFetcher = useLookupFetcher;
|
|
36
29
|
//# sourceMappingURL=form-lookup-context.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-lookup-context.cjs","sources":["../../src/components/form-lookup-context.
|
|
1
|
+
{"version":3,"file":"form-lookup-context.cjs","sources":["../../src/components/form-lookup-context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { LookupDescriptor, LookupFetcher } from \"./json-schema-form-types\";\n\n// FormLookupContext carries the host-provided LookupFetcher down to the\n// LookupControl rendered deep inside the form, so the form stays decoupled from\n// any specific RPC client. FormLookupProvider provides it when JsonSchemaForm is\n// given a lookupFetcher.\nexport const FormLookupContext = createContext<LookupFetcher | undefined>(undefined);\n\nexport function useLookupFetcher(): LookupFetcher | undefined {\n return useContext(FormLookupContext);\n}\n\n// readPath resolves a dotted path (e.g. \"provider.type\") against the form's root\n// value, returning the string at that path or \"\" when absent/non-scalar.\nfunction readPath(root: Record<string, unknown> | undefined, path: string): string {\n if (!root || !path) return \"\";\n let cur: unknown = root;\n for (const segment of path.split(\".\")) {\n if (cur == null || typeof cur !== \"object\") return \"\";\n cur = (cur as Record<string, unknown>)[segment];\n }\n return typeof cur === \"string\" || typeof cur === \"number\" ? String(cur) : \"\";\n}\n\n// resolveLookupScope computes the extra query params a lookup should send based\n// on a sibling field's value (LookupScope). Returns an empty object when the\n// descriptor has no scope or the source field is unset/unmapped — the lookup then\n// returns the full, unscoped option set.\nexport function resolveLookupScope(\n descriptor: LookupDescriptor,\n rootValue: Record<string, unknown> | undefined,\n): Record<string, string> {\n const scope = descriptor.scope;\n if (!scope) return {};\n const source = readPath(rootValue, scope.from);\n if (!source) return {};\n const values = scope.map ? (scope.map[source] ?? []) : [source];\n if (values.length === 0) return {};\n return { [scope.param]: values.join(scope.join ?? \",\") };\n}\n"],"names":["createContext","useContext"],"mappings":";;;AAOO,MAAM,oBAAoBA,MAAAA,cAAyC,MAAS;AAE5E,SAAS,mBAA8C;AAC5D,SAAOC,MAAAA,WAAW,iBAAiB;AACrC;AAIA,SAAS,SAAS,MAA2C,MAAsB;AACjF,MAAI,CAAC,QAAQ,CAAC,KAAM,QAAO;AAC3B,MAAI,MAAe;AACnB,aAAW,WAAW,KAAK,MAAM,GAAG,GAAG;AACrC,QAAI,OAAO,QAAQ,OAAO,QAAQ,SAAU,QAAO;AACnD,UAAO,IAAgC,OAAO;AAAA,EAChD;AACA,SAAO,OAAO,QAAQ,YAAY,OAAO,QAAQ,WAAW,OAAO,GAAG,IAAI;AAC5E;AAMO,SAAS,mBACd,YACA,WACwB;AACxB,QAAM,QAAQ,WAAW;AACzB,MAAI,CAAC,MAAO,QAAO,CAAA;AACnB,QAAM,SAAS,SAAS,WAAW,MAAM,IAAI;AAC7C,MAAI,CAAC,OAAQ,QAAO,CAAA;AACpB,QAAM,SAAS,MAAM,MAAO,MAAM,IAAI,MAAM,KAAK,KAAM,CAAC,MAAM;AAC9D,MAAI,OAAO,WAAW,EAAG,QAAO,CAAA;AAChC,SAAO,EAAE,CAAC,MAAM,KAAK,GAAG,OAAO,KAAK,MAAM,QAAQ,GAAG,EAAA;AACvD;;;;"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
1
|
import { LookupDescriptor, LookupFetcher } from './json-schema-form-types';
|
|
3
|
-
export declare
|
|
4
|
-
fetcher?: LookupFetcher;
|
|
5
|
-
children: ReactNode;
|
|
6
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const FormLookupContext: import('react').Context<LookupFetcher | undefined>;
|
|
7
3
|
export declare function useLookupFetcher(): LookupFetcher | undefined;
|
|
8
4
|
export declare function resolveLookupScope(descriptor: LookupDescriptor, rootValue: Record<string, unknown> | undefined): Record<string, string>;
|
|
9
5
|
//# sourceMappingURL=form-lookup-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-lookup-context.d.ts","sourceRoot":"","sources":["../../src/components/form-lookup-context.
|
|
1
|
+
{"version":3,"file":"form-lookup-context.d.ts","sourceRoot":"","sources":["../../src/components/form-lookup-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMhF,eAAO,MAAM,iBAAiB,oDAAsD,CAAC;AAErF,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,SAAS,CAE5D;AAkBD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,gBAAgB,EAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC7C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB"}
|
|
@@ -1,12 +1,5 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
1
|
import { useContext, createContext } from "react";
|
|
3
2
|
const FormLookupContext = createContext(void 0);
|
|
4
|
-
function FormLookupProvider({
|
|
5
|
-
fetcher,
|
|
6
|
-
children
|
|
7
|
-
}) {
|
|
8
|
-
return /* @__PURE__ */ jsx(FormLookupContext.Provider, { value: fetcher, children });
|
|
9
|
-
}
|
|
10
3
|
function useLookupFetcher() {
|
|
11
4
|
return useContext(FormLookupContext);
|
|
12
5
|
}
|
|
@@ -29,7 +22,7 @@ function resolveLookupScope(descriptor, rootValue) {
|
|
|
29
22
|
return { [scope.param]: values.join(scope.join ?? ",") };
|
|
30
23
|
}
|
|
31
24
|
export {
|
|
32
|
-
|
|
25
|
+
FormLookupContext,
|
|
33
26
|
resolveLookupScope,
|
|
34
27
|
useLookupFetcher
|
|
35
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-lookup-context.js","sources":["../../src/components/form-lookup-context.
|
|
1
|
+
{"version":3,"file":"form-lookup-context.js","sources":["../../src/components/form-lookup-context.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { LookupDescriptor, LookupFetcher } from \"./json-schema-form-types\";\n\n// FormLookupContext carries the host-provided LookupFetcher down to the\n// LookupControl rendered deep inside the form, so the form stays decoupled from\n// any specific RPC client. FormLookupProvider provides it when JsonSchemaForm is\n// given a lookupFetcher.\nexport const FormLookupContext = createContext<LookupFetcher | undefined>(undefined);\n\nexport function useLookupFetcher(): LookupFetcher | undefined {\n return useContext(FormLookupContext);\n}\n\n// readPath resolves a dotted path (e.g. \"provider.type\") against the form's root\n// value, returning the string at that path or \"\" when absent/non-scalar.\nfunction readPath(root: Record<string, unknown> | undefined, path: string): string {\n if (!root || !path) return \"\";\n let cur: unknown = root;\n for (const segment of path.split(\".\")) {\n if (cur == null || typeof cur !== \"object\") return \"\";\n cur = (cur as Record<string, unknown>)[segment];\n }\n return typeof cur === \"string\" || typeof cur === \"number\" ? String(cur) : \"\";\n}\n\n// resolveLookupScope computes the extra query params a lookup should send based\n// on a sibling field's value (LookupScope). Returns an empty object when the\n// descriptor has no scope or the source field is unset/unmapped — the lookup then\n// returns the full, unscoped option set.\nexport function resolveLookupScope(\n descriptor: LookupDescriptor,\n rootValue: Record<string, unknown> | undefined,\n): Record<string, string> {\n const scope = descriptor.scope;\n if (!scope) return {};\n const source = readPath(rootValue, scope.from);\n if (!source) return {};\n const values = scope.map ? (scope.map[source] ?? []) : [source];\n if (values.length === 0) return {};\n return { [scope.param]: values.join(scope.join ?? \",\") };\n}\n"],"names":[],"mappings":";AAOO,MAAM,oBAAoB,cAAyC,MAAS;AAE5E,SAAS,mBAA8C;AAC5D,SAAO,WAAW,iBAAiB;AACrC;AAIA,SAAS,SAAS,MAA2C,MAAsB;AACjF,MAAI,CAAC,QAAQ,CAAC,KAAM,QAAO;AAC3B,MAAI,MAAe;AACnB,aAAW,WAAW,KAAK,MAAM,GAAG,GAAG;AACrC,QAAI,OAAO,QAAQ,OAAO,QAAQ,SAAU,QAAO;AACnD,UAAO,IAAgC,OAAO;AAAA,EAChD;AACA,SAAO,OAAO,QAAQ,YAAY,OAAO,QAAQ,WAAW,OAAO,GAAG,IAAI;AAC5E;AAMO,SAAS,mBACd,YACA,WACwB;AACxB,QAAM,QAAQ,WAAW;AACzB,MAAI,CAAC,MAAO,QAAO,CAAA;AACnB,QAAM,SAAS,SAAS,WAAW,MAAM,IAAI;AAC7C,MAAI,CAAC,OAAQ,QAAO,CAAA;AACpB,QAAM,SAAS,MAAM,MAAO,MAAM,IAAI,MAAM,KAAK,KAAM,CAAC,MAAM;AAC9D,MAAI,OAAO,WAAW,EAAG,QAAO,CAAA;AAChC,SAAO,EAAE,CAAC,MAAM,KAAK,GAAG,OAAO,KAAK,MAAM,QAAQ,GAAG,EAAA;AACvD;"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const jotai = require("jotai");
|
|
5
|
+
function useAtomSubscriptions(atoms) {
|
|
6
|
+
const store = jotai.useStore();
|
|
7
|
+
const [, forceRender] = react.useReducer((count) => count + 1, 0);
|
|
8
|
+
const uniqueAtoms = react.useMemo(() => Array.from(new Set(atoms)), [atoms]);
|
|
9
|
+
react.useEffect(() => {
|
|
10
|
+
if (uniqueAtoms.length === 0) return void 0;
|
|
11
|
+
const unsubscribers = uniqueAtoms.map((atom) => store.sub(atom, forceRender));
|
|
12
|
+
return () => {
|
|
13
|
+
unsubscribers.forEach((unsubscribe) => unsubscribe());
|
|
14
|
+
};
|
|
15
|
+
}, [store, uniqueAtoms]);
|
|
16
|
+
}
|
|
17
|
+
function useAtomValueSetter(atom) {
|
|
18
|
+
const store = jotai.useStore();
|
|
19
|
+
const value = store.get(atom);
|
|
20
|
+
const setValue = react.useCallback(
|
|
21
|
+
(next) => {
|
|
22
|
+
store.set(atom, next);
|
|
23
|
+
},
|
|
24
|
+
[atom, store]
|
|
25
|
+
);
|
|
26
|
+
return [value, setValue];
|
|
27
|
+
}
|
|
28
|
+
function useJotaiJsonSchemaFormProps(atom, onChange) {
|
|
29
|
+
const atoms = react.useMemo(() => [atom], [atom]);
|
|
30
|
+
useAtomSubscriptions(atoms);
|
|
31
|
+
const [value, setValue] = useAtomValueSetter(atom);
|
|
32
|
+
return react.useMemo(
|
|
33
|
+
() => ({
|
|
34
|
+
value,
|
|
35
|
+
onChange: (next) => {
|
|
36
|
+
setValue(next);
|
|
37
|
+
onChange == null ? void 0 : onChange(next);
|
|
38
|
+
}
|
|
39
|
+
}),
|
|
40
|
+
[onChange, setValue, value]
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
function useJotaiFilterBarAtoms({
|
|
44
|
+
search,
|
|
45
|
+
filters,
|
|
46
|
+
timeRange,
|
|
47
|
+
dateRange
|
|
48
|
+
}) {
|
|
49
|
+
const atoms = react.useMemo(() => {
|
|
50
|
+
const next = [];
|
|
51
|
+
if (search) next.push(search.atom);
|
|
52
|
+
filters == null ? void 0 : filters.forEach((filter) => next.push(filter.atom));
|
|
53
|
+
if (timeRange) next.push(timeRange.atom);
|
|
54
|
+
if (dateRange) next.push(dateRange.atom);
|
|
55
|
+
return next;
|
|
56
|
+
}, [dateRange, filters, search, timeRange]);
|
|
57
|
+
useAtomSubscriptions(atoms);
|
|
58
|
+
}
|
|
59
|
+
function useJotaiSearch(search) {
|
|
60
|
+
const store = jotai.useStore();
|
|
61
|
+
if (!search) return void 0;
|
|
62
|
+
const { atom, onChange, ...rest } = search;
|
|
63
|
+
return {
|
|
64
|
+
...rest,
|
|
65
|
+
value: store.get(atom),
|
|
66
|
+
onChange: (next) => {
|
|
67
|
+
store.set(atom, next);
|
|
68
|
+
onChange == null ? void 0 : onChange(next);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function useJotaiRange(range) {
|
|
73
|
+
const store = jotai.useStore();
|
|
74
|
+
if (!range) return void 0;
|
|
75
|
+
const { atom, onApply, ...rest } = range;
|
|
76
|
+
const value = store.get(atom);
|
|
77
|
+
return {
|
|
78
|
+
...rest,
|
|
79
|
+
...value.from !== void 0 ? { from: value.from } : {},
|
|
80
|
+
...value.to !== void 0 ? { to: value.to } : {},
|
|
81
|
+
onApply: (from, to) => {
|
|
82
|
+
store.set(atom, { from, to });
|
|
83
|
+
onApply == null ? void 0 : onApply(from, to);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function useJotaiFilters(filters) {
|
|
88
|
+
const store = jotai.useStore();
|
|
89
|
+
if (!filters) return void 0;
|
|
90
|
+
return filters.map((filter) => bindJotaiFilter(store, filter));
|
|
91
|
+
}
|
|
92
|
+
function bindJotaiFilter(store, filter) {
|
|
93
|
+
switch (filter.kind) {
|
|
94
|
+
case "text": {
|
|
95
|
+
const { atom, onChange, ...rest } = filter;
|
|
96
|
+
return {
|
|
97
|
+
...rest,
|
|
98
|
+
value: store.get(atom),
|
|
99
|
+
onChange: (next) => {
|
|
100
|
+
store.set(atom, next);
|
|
101
|
+
onChange == null ? void 0 : onChange(next);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
case "lookup": {
|
|
106
|
+
const { atom, onChange, ...rest } = filter;
|
|
107
|
+
return {
|
|
108
|
+
...rest,
|
|
109
|
+
value: store.get(atom),
|
|
110
|
+
onChange: (next) => {
|
|
111
|
+
store.set(atom, next);
|
|
112
|
+
onChange == null ? void 0 : onChange(next);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
case "lookup-multi":
|
|
117
|
+
case "select-multi": {
|
|
118
|
+
const { atom, onChange, ...rest } = filter;
|
|
119
|
+
return {
|
|
120
|
+
...rest,
|
|
121
|
+
value: store.get(atom),
|
|
122
|
+
onChange: (next) => {
|
|
123
|
+
store.set(atom, next);
|
|
124
|
+
onChange == null ? void 0 : onChange(next);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
case "multi":
|
|
129
|
+
case "nested-multi": {
|
|
130
|
+
const { atom, onChange, ...rest } = filter;
|
|
131
|
+
return {
|
|
132
|
+
...rest,
|
|
133
|
+
value: store.get(atom),
|
|
134
|
+
onChange: (next) => {
|
|
135
|
+
store.set(atom, next);
|
|
136
|
+
onChange == null ? void 0 : onChange(next);
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
case "number": {
|
|
141
|
+
const { atom, onChange, ...rest } = filter;
|
|
142
|
+
return {
|
|
143
|
+
...rest,
|
|
144
|
+
value: store.get(atom),
|
|
145
|
+
onChange: (next) => {
|
|
146
|
+
store.set(atom, next);
|
|
147
|
+
onChange == null ? void 0 : onChange(next);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
case "enum": {
|
|
152
|
+
const { atom, onChange, ...rest } = filter;
|
|
153
|
+
return {
|
|
154
|
+
...rest,
|
|
155
|
+
value: store.get(atom),
|
|
156
|
+
onChange: (next) => {
|
|
157
|
+
store.set(atom, next);
|
|
158
|
+
onChange == null ? void 0 : onChange(next);
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
case "boolean": {
|
|
163
|
+
const { atom, onChange, ...rest } = filter;
|
|
164
|
+
return {
|
|
165
|
+
...rest,
|
|
166
|
+
value: store.get(atom),
|
|
167
|
+
onChange: (next) => {
|
|
168
|
+
store.set(atom, next);
|
|
169
|
+
onChange == null ? void 0 : onChange(next);
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function useJotaiFilterBarProps({
|
|
176
|
+
search,
|
|
177
|
+
filters,
|
|
178
|
+
timeRange,
|
|
179
|
+
dateRange,
|
|
180
|
+
...props
|
|
181
|
+
}) {
|
|
182
|
+
useJotaiFilterBarAtoms({ search, filters, timeRange, dateRange });
|
|
183
|
+
const controlledSearch = useJotaiSearch(search);
|
|
184
|
+
const controlledFilters = useJotaiFilters(filters);
|
|
185
|
+
const controlledTimeRange = useJotaiRange(timeRange);
|
|
186
|
+
const controlledDateRange = useJotaiRange(dateRange);
|
|
187
|
+
return {
|
|
188
|
+
...props,
|
|
189
|
+
...controlledSearch ? { search: controlledSearch } : {},
|
|
190
|
+
...controlledFilters ? { filters: controlledFilters } : {},
|
|
191
|
+
...controlledTimeRange ? { timeRange: controlledTimeRange } : {},
|
|
192
|
+
...controlledDateRange ? { dateRange: controlledDateRange } : {}
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
exports.useJotaiFilterBarProps = useJotaiFilterBarProps;
|
|
196
|
+
exports.useJotaiJsonSchemaFormProps = useJotaiJsonSchemaFormProps;
|
|
197
|
+
//# sourceMappingURL=jotai-bindings-core.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jotai-bindings-core.cjs","sources":["../../src/components/jotai-bindings-core.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { useStore, type WritableAtom } from \"jotai\";\nimport type {\n FilterBarBooleanFilter,\n FilterBarEnumFilter,\n FilterBarFilter,\n FilterBarLookupFilter,\n FilterBarLookupMultiFilter,\n FilterBarMultiFilter,\n FilterBarNestedMultiFilter,\n FilterBarNumberFilter,\n FilterBarProps,\n FilterBarRangeProps,\n FilterBarSearchProps,\n FilterBarSelectMultiFilter,\n FilterBarTextFilter,\n} from \"./FilterBar\";\nimport type { JsonSchemaFormProps } from \"./json-schema-form-types\";\n\nexport type JotaiWritableAtom<Value> = WritableAtom<Value, [Value], unknown>;\nexport type JotaiJsonSchemaFormAtom = JotaiWritableAtom<Record<string, unknown>>;\n\nexport type JotaiJsonSchemaFormProps = Omit<JsonSchemaFormProps, \"value\" | \"onChange\"> & {\n atom: JotaiJsonSchemaFormAtom;\n onChange?: JsonSchemaFormProps[\"onChange\"];\n};\n\nexport type JotaiFilterBarSearchProps = Omit<FilterBarSearchProps, \"value\" | \"onChange\"> & {\n atom: JotaiWritableAtom<string>;\n onChange?: FilterBarSearchProps[\"onChange\"];\n};\n\nexport type JotaiFilterBarRangeValue = {\n from?: string;\n to?: string;\n};\n\nexport type JotaiFilterBarRangeProps = Omit<FilterBarRangeProps, \"from\" | \"to\" | \"onApply\"> & {\n atom: JotaiWritableAtom<JotaiFilterBarRangeValue>;\n onApply?: FilterBarRangeProps[\"onApply\"];\n};\n\ntype AtomizedFilter<TFilter extends FilterBarFilter> = Omit<TFilter, \"value\" | \"onChange\"> & {\n atom: JotaiWritableAtom<TFilter[\"value\"]>;\n onChange?: TFilter[\"onChange\"];\n};\n\nexport type JotaiFilterBarTextFilter = AtomizedFilter<FilterBarTextFilter>;\nexport type JotaiFilterBarLookupFilter = AtomizedFilter<FilterBarLookupFilter>;\nexport type JotaiFilterBarLookupMultiFilter = AtomizedFilter<FilterBarLookupMultiFilter>;\nexport type JotaiFilterBarMultiFilter = AtomizedFilter<FilterBarMultiFilter>;\nexport type JotaiFilterBarNestedMultiFilter = AtomizedFilter<FilterBarNestedMultiFilter>;\nexport type JotaiFilterBarSelectMultiFilter = AtomizedFilter<FilterBarSelectMultiFilter>;\nexport type JotaiFilterBarNumberFilter = AtomizedFilter<FilterBarNumberFilter>;\nexport type JotaiFilterBarEnumFilter = AtomizedFilter<FilterBarEnumFilter>;\nexport type JotaiFilterBarBooleanFilter = AtomizedFilter<FilterBarBooleanFilter>;\n\nexport type JotaiFilterBarFilter =\n | JotaiFilterBarTextFilter\n | JotaiFilterBarLookupFilter\n | JotaiFilterBarLookupMultiFilter\n | JotaiFilterBarMultiFilter\n | JotaiFilterBarNestedMultiFilter\n | JotaiFilterBarSelectMultiFilter\n | JotaiFilterBarNumberFilter\n | JotaiFilterBarEnumFilter\n | JotaiFilterBarBooleanFilter;\n\nexport type JotaiFilterBarProps = Omit<\n FilterBarProps,\n \"search\" | \"filters\" | \"timeRange\" | \"dateRange\"\n> & {\n search?: JotaiFilterBarSearchProps;\n filters?: JotaiFilterBarFilter[];\n timeRange?: JotaiFilterBarRangeProps;\n dateRange?: JotaiFilterBarRangeProps;\n};\n\ntype AnyJotaiAtom = JotaiWritableAtom<unknown>;\n\nfunction useAtomSubscriptions(atoms: AnyJotaiAtom[]) {\n const store = useStore();\n const [, forceRender] = useReducer((count: number) => count + 1, 0);\n const uniqueAtoms = useMemo(() => Array.from(new Set(atoms)), [atoms]);\n\n useEffect(() => {\n if (uniqueAtoms.length === 0) return undefined;\n const unsubscribers = uniqueAtoms.map((atom) => store.sub(atom, forceRender));\n return () => {\n unsubscribers.forEach((unsubscribe) => unsubscribe());\n };\n }, [store, uniqueAtoms]);\n}\n\nfunction useAtomValueSetter<Value>(atom: JotaiWritableAtom<Value>) {\n const store = useStore();\n const value = store.get(atom);\n const setValue = useCallback(\n (next: Value) => {\n store.set(atom, next);\n },\n [atom, store],\n );\n return [value, setValue] as const;\n}\n\nexport function useJotaiJsonSchemaFormProps(\n atom: JotaiJsonSchemaFormAtom,\n onChange?: JsonSchemaFormProps[\"onChange\"],\n): Pick<JsonSchemaFormProps, \"value\" | \"onChange\"> {\n const atoms = useMemo(() => [atom as AnyJotaiAtom], [atom]);\n useAtomSubscriptions(atoms);\n const [value, setValue] = useAtomValueSetter(atom);\n\n return useMemo(\n () => ({\n value,\n onChange: (next: Record<string, unknown>) => {\n setValue(next);\n onChange?.(next);\n },\n }),\n [onChange, setValue, value],\n );\n}\n\nfunction useJotaiFilterBarAtoms({\n search,\n filters,\n timeRange,\n dateRange,\n}: {\n search?: JotaiFilterBarSearchProps | undefined;\n filters?: JotaiFilterBarFilter[] | undefined;\n timeRange?: JotaiFilterBarRangeProps | undefined;\n dateRange?: JotaiFilterBarRangeProps | undefined;\n}) {\n const atoms = useMemo(() => {\n const next: AnyJotaiAtom[] = [];\n if (search) next.push(search.atom as AnyJotaiAtom);\n filters?.forEach((filter) => next.push(filter.atom as AnyJotaiAtom));\n if (timeRange) next.push(timeRange.atom as AnyJotaiAtom);\n if (dateRange) next.push(dateRange.atom as AnyJotaiAtom);\n return next;\n }, [dateRange, filters, search, timeRange]);\n useAtomSubscriptions(atoms);\n}\n\nfunction useJotaiSearch(search: JotaiFilterBarSearchProps | undefined): FilterBarSearchProps | undefined {\n const store = useStore();\n if (!search) return undefined;\n const { atom, onChange, ...rest } = search;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n}\n\nfunction useJotaiRange(range: JotaiFilterBarRangeProps | undefined): FilterBarRangeProps | undefined {\n const store = useStore();\n if (!range) return undefined;\n const { atom, onApply, ...rest } = range;\n const value = store.get(atom);\n return {\n ...rest,\n ...(value.from !== undefined ? { from: value.from } : {}),\n ...(value.to !== undefined ? { to: value.to } : {}),\n onApply: (from: string, to: string) => {\n store.set(atom, { from, to });\n onApply?.(from, to);\n },\n };\n}\n\nfunction useJotaiFilters(filters: JotaiFilterBarFilter[] | undefined): FilterBarFilter[] | undefined {\n const store = useStore();\n if (!filters) return undefined;\n return filters.map((filter) => bindJotaiFilter(store, filter));\n}\n\nfunction bindJotaiFilter(store: ReturnType<typeof useStore>, filter: JotaiFilterBarFilter): FilterBarFilter {\n switch (filter.kind) {\n case \"text\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n case \"lookup\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n case \"lookup-multi\":\n case \"select-multi\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string[]) => {\n store.set(atom, next);\n onChange?.(next);\n },\n } as FilterBarFilter;\n }\n case \"multi\":\n case \"nested-multi\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: FilterBarMultiFilter[\"value\"]) => {\n store.set(atom, next);\n onChange?.(next);\n },\n } as FilterBarFilter;\n }\n case \"number\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: FilterBarNumberFilter[\"value\"]) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n case \"enum\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n case \"boolean\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: boolean) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n }\n}\n\nexport function useJotaiFilterBarProps({\n search,\n filters,\n timeRange,\n dateRange,\n ...props\n}: JotaiFilterBarProps): FilterBarProps {\n useJotaiFilterBarAtoms({ search, filters, timeRange, dateRange });\n const controlledSearch = useJotaiSearch(search);\n const controlledFilters = useJotaiFilters(filters);\n const controlledTimeRange = useJotaiRange(timeRange);\n const controlledDateRange = useJotaiRange(dateRange);\n\n return {\n ...props,\n ...(controlledSearch ? { search: controlledSearch } : {}),\n ...(controlledFilters ? { filters: controlledFilters } : {}),\n ...(controlledTimeRange ? { timeRange: controlledTimeRange } : {}),\n ...(controlledDateRange ? { dateRange: controlledDateRange } : {}),\n };\n}\n"],"names":["useStore","useReducer","useMemo","useEffect","useCallback"],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { WritableAtom } from 'jotai';
|
|
2
|
+
import { FilterBarBooleanFilter, FilterBarEnumFilter, FilterBarFilter, FilterBarLookupFilter, FilterBarLookupMultiFilter, FilterBarMultiFilter, FilterBarNestedMultiFilter, FilterBarNumberFilter, FilterBarProps, FilterBarRangeProps, FilterBarSearchProps, FilterBarSelectMultiFilter, FilterBarTextFilter } from './FilterBar';
|
|
3
|
+
import { JsonSchemaFormProps } from './json-schema-form-types';
|
|
4
|
+
export type JotaiWritableAtom<Value> = WritableAtom<Value, [Value], unknown>;
|
|
5
|
+
export type JotaiJsonSchemaFormAtom = JotaiWritableAtom<Record<string, unknown>>;
|
|
6
|
+
export type JotaiJsonSchemaFormProps = Omit<JsonSchemaFormProps, "value" | "onChange"> & {
|
|
7
|
+
atom: JotaiJsonSchemaFormAtom;
|
|
8
|
+
onChange?: JsonSchemaFormProps["onChange"];
|
|
9
|
+
};
|
|
10
|
+
export type JotaiFilterBarSearchProps = Omit<FilterBarSearchProps, "value" | "onChange"> & {
|
|
11
|
+
atom: JotaiWritableAtom<string>;
|
|
12
|
+
onChange?: FilterBarSearchProps["onChange"];
|
|
13
|
+
};
|
|
14
|
+
export type JotaiFilterBarRangeValue = {
|
|
15
|
+
from?: string;
|
|
16
|
+
to?: string;
|
|
17
|
+
};
|
|
18
|
+
export type JotaiFilterBarRangeProps = Omit<FilterBarRangeProps, "from" | "to" | "onApply"> & {
|
|
19
|
+
atom: JotaiWritableAtom<JotaiFilterBarRangeValue>;
|
|
20
|
+
onApply?: FilterBarRangeProps["onApply"];
|
|
21
|
+
};
|
|
22
|
+
type AtomizedFilter<TFilter extends FilterBarFilter> = Omit<TFilter, "value" | "onChange"> & {
|
|
23
|
+
atom: JotaiWritableAtom<TFilter["value"]>;
|
|
24
|
+
onChange?: TFilter["onChange"];
|
|
25
|
+
};
|
|
26
|
+
export type JotaiFilterBarTextFilter = AtomizedFilter<FilterBarTextFilter>;
|
|
27
|
+
export type JotaiFilterBarLookupFilter = AtomizedFilter<FilterBarLookupFilter>;
|
|
28
|
+
export type JotaiFilterBarLookupMultiFilter = AtomizedFilter<FilterBarLookupMultiFilter>;
|
|
29
|
+
export type JotaiFilterBarMultiFilter = AtomizedFilter<FilterBarMultiFilter>;
|
|
30
|
+
export type JotaiFilterBarNestedMultiFilter = AtomizedFilter<FilterBarNestedMultiFilter>;
|
|
31
|
+
export type JotaiFilterBarSelectMultiFilter = AtomizedFilter<FilterBarSelectMultiFilter>;
|
|
32
|
+
export type JotaiFilterBarNumberFilter = AtomizedFilter<FilterBarNumberFilter>;
|
|
33
|
+
export type JotaiFilterBarEnumFilter = AtomizedFilter<FilterBarEnumFilter>;
|
|
34
|
+
export type JotaiFilterBarBooleanFilter = AtomizedFilter<FilterBarBooleanFilter>;
|
|
35
|
+
export type JotaiFilterBarFilter = JotaiFilterBarTextFilter | JotaiFilterBarLookupFilter | JotaiFilterBarLookupMultiFilter | JotaiFilterBarMultiFilter | JotaiFilterBarNestedMultiFilter | JotaiFilterBarSelectMultiFilter | JotaiFilterBarNumberFilter | JotaiFilterBarEnumFilter | JotaiFilterBarBooleanFilter;
|
|
36
|
+
export type JotaiFilterBarProps = Omit<FilterBarProps, "search" | "filters" | "timeRange" | "dateRange"> & {
|
|
37
|
+
search?: JotaiFilterBarSearchProps;
|
|
38
|
+
filters?: JotaiFilterBarFilter[];
|
|
39
|
+
timeRange?: JotaiFilterBarRangeProps;
|
|
40
|
+
dateRange?: JotaiFilterBarRangeProps;
|
|
41
|
+
};
|
|
42
|
+
export declare function useJotaiJsonSchemaFormProps(atom: JotaiJsonSchemaFormAtom, onChange?: JsonSchemaFormProps["onChange"]): Pick<JsonSchemaFormProps, "value" | "onChange">;
|
|
43
|
+
export declare function useJotaiFilterBarProps({ search, filters, timeRange, dateRange, ...props }: JotaiFilterBarProps): FilterBarProps;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=jotai-bindings-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jotai-bindings-core.d.ts","sourceRoot":"","sources":["../../src/components/jotai-bindings-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { useMemo, useReducer, useEffect, useCallback } from "react";
|
|
2
|
+
import { useStore } from "jotai";
|
|
3
|
+
function useAtomSubscriptions(atoms) {
|
|
4
|
+
const store = useStore();
|
|
5
|
+
const [, forceRender] = useReducer((count) => count + 1, 0);
|
|
6
|
+
const uniqueAtoms = useMemo(() => Array.from(new Set(atoms)), [atoms]);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
if (uniqueAtoms.length === 0) return void 0;
|
|
9
|
+
const unsubscribers = uniqueAtoms.map((atom) => store.sub(atom, forceRender));
|
|
10
|
+
return () => {
|
|
11
|
+
unsubscribers.forEach((unsubscribe) => unsubscribe());
|
|
12
|
+
};
|
|
13
|
+
}, [store, uniqueAtoms]);
|
|
14
|
+
}
|
|
15
|
+
function useAtomValueSetter(atom) {
|
|
16
|
+
const store = useStore();
|
|
17
|
+
const value = store.get(atom);
|
|
18
|
+
const setValue = useCallback(
|
|
19
|
+
(next) => {
|
|
20
|
+
store.set(atom, next);
|
|
21
|
+
},
|
|
22
|
+
[atom, store]
|
|
23
|
+
);
|
|
24
|
+
return [value, setValue];
|
|
25
|
+
}
|
|
26
|
+
function useJotaiJsonSchemaFormProps(atom, onChange) {
|
|
27
|
+
const atoms = useMemo(() => [atom], [atom]);
|
|
28
|
+
useAtomSubscriptions(atoms);
|
|
29
|
+
const [value, setValue] = useAtomValueSetter(atom);
|
|
30
|
+
return useMemo(
|
|
31
|
+
() => ({
|
|
32
|
+
value,
|
|
33
|
+
onChange: (next) => {
|
|
34
|
+
setValue(next);
|
|
35
|
+
onChange == null ? void 0 : onChange(next);
|
|
36
|
+
}
|
|
37
|
+
}),
|
|
38
|
+
[onChange, setValue, value]
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
function useJotaiFilterBarAtoms({
|
|
42
|
+
search,
|
|
43
|
+
filters,
|
|
44
|
+
timeRange,
|
|
45
|
+
dateRange
|
|
46
|
+
}) {
|
|
47
|
+
const atoms = useMemo(() => {
|
|
48
|
+
const next = [];
|
|
49
|
+
if (search) next.push(search.atom);
|
|
50
|
+
filters == null ? void 0 : filters.forEach((filter) => next.push(filter.atom));
|
|
51
|
+
if (timeRange) next.push(timeRange.atom);
|
|
52
|
+
if (dateRange) next.push(dateRange.atom);
|
|
53
|
+
return next;
|
|
54
|
+
}, [dateRange, filters, search, timeRange]);
|
|
55
|
+
useAtomSubscriptions(atoms);
|
|
56
|
+
}
|
|
57
|
+
function useJotaiSearch(search) {
|
|
58
|
+
const store = useStore();
|
|
59
|
+
if (!search) return void 0;
|
|
60
|
+
const { atom, onChange, ...rest } = search;
|
|
61
|
+
return {
|
|
62
|
+
...rest,
|
|
63
|
+
value: store.get(atom),
|
|
64
|
+
onChange: (next) => {
|
|
65
|
+
store.set(atom, next);
|
|
66
|
+
onChange == null ? void 0 : onChange(next);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function useJotaiRange(range) {
|
|
71
|
+
const store = useStore();
|
|
72
|
+
if (!range) return void 0;
|
|
73
|
+
const { atom, onApply, ...rest } = range;
|
|
74
|
+
const value = store.get(atom);
|
|
75
|
+
return {
|
|
76
|
+
...rest,
|
|
77
|
+
...value.from !== void 0 ? { from: value.from } : {},
|
|
78
|
+
...value.to !== void 0 ? { to: value.to } : {},
|
|
79
|
+
onApply: (from, to) => {
|
|
80
|
+
store.set(atom, { from, to });
|
|
81
|
+
onApply == null ? void 0 : onApply(from, to);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function useJotaiFilters(filters) {
|
|
86
|
+
const store = useStore();
|
|
87
|
+
if (!filters) return void 0;
|
|
88
|
+
return filters.map((filter) => bindJotaiFilter(store, filter));
|
|
89
|
+
}
|
|
90
|
+
function bindJotaiFilter(store, filter) {
|
|
91
|
+
switch (filter.kind) {
|
|
92
|
+
case "text": {
|
|
93
|
+
const { atom, onChange, ...rest } = filter;
|
|
94
|
+
return {
|
|
95
|
+
...rest,
|
|
96
|
+
value: store.get(atom),
|
|
97
|
+
onChange: (next) => {
|
|
98
|
+
store.set(atom, next);
|
|
99
|
+
onChange == null ? void 0 : onChange(next);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
case "lookup": {
|
|
104
|
+
const { atom, onChange, ...rest } = filter;
|
|
105
|
+
return {
|
|
106
|
+
...rest,
|
|
107
|
+
value: store.get(atom),
|
|
108
|
+
onChange: (next) => {
|
|
109
|
+
store.set(atom, next);
|
|
110
|
+
onChange == null ? void 0 : onChange(next);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
case "lookup-multi":
|
|
115
|
+
case "select-multi": {
|
|
116
|
+
const { atom, onChange, ...rest } = filter;
|
|
117
|
+
return {
|
|
118
|
+
...rest,
|
|
119
|
+
value: store.get(atom),
|
|
120
|
+
onChange: (next) => {
|
|
121
|
+
store.set(atom, next);
|
|
122
|
+
onChange == null ? void 0 : onChange(next);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
case "multi":
|
|
127
|
+
case "nested-multi": {
|
|
128
|
+
const { atom, onChange, ...rest } = filter;
|
|
129
|
+
return {
|
|
130
|
+
...rest,
|
|
131
|
+
value: store.get(atom),
|
|
132
|
+
onChange: (next) => {
|
|
133
|
+
store.set(atom, next);
|
|
134
|
+
onChange == null ? void 0 : onChange(next);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
case "number": {
|
|
139
|
+
const { atom, onChange, ...rest } = filter;
|
|
140
|
+
return {
|
|
141
|
+
...rest,
|
|
142
|
+
value: store.get(atom),
|
|
143
|
+
onChange: (next) => {
|
|
144
|
+
store.set(atom, next);
|
|
145
|
+
onChange == null ? void 0 : onChange(next);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
case "enum": {
|
|
150
|
+
const { atom, onChange, ...rest } = filter;
|
|
151
|
+
return {
|
|
152
|
+
...rest,
|
|
153
|
+
value: store.get(atom),
|
|
154
|
+
onChange: (next) => {
|
|
155
|
+
store.set(atom, next);
|
|
156
|
+
onChange == null ? void 0 : onChange(next);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
case "boolean": {
|
|
161
|
+
const { atom, onChange, ...rest } = filter;
|
|
162
|
+
return {
|
|
163
|
+
...rest,
|
|
164
|
+
value: store.get(atom),
|
|
165
|
+
onChange: (next) => {
|
|
166
|
+
store.set(atom, next);
|
|
167
|
+
onChange == null ? void 0 : onChange(next);
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function useJotaiFilterBarProps({
|
|
174
|
+
search,
|
|
175
|
+
filters,
|
|
176
|
+
timeRange,
|
|
177
|
+
dateRange,
|
|
178
|
+
...props
|
|
179
|
+
}) {
|
|
180
|
+
useJotaiFilterBarAtoms({ search, filters, timeRange, dateRange });
|
|
181
|
+
const controlledSearch = useJotaiSearch(search);
|
|
182
|
+
const controlledFilters = useJotaiFilters(filters);
|
|
183
|
+
const controlledTimeRange = useJotaiRange(timeRange);
|
|
184
|
+
const controlledDateRange = useJotaiRange(dateRange);
|
|
185
|
+
return {
|
|
186
|
+
...props,
|
|
187
|
+
...controlledSearch ? { search: controlledSearch } : {},
|
|
188
|
+
...controlledFilters ? { filters: controlledFilters } : {},
|
|
189
|
+
...controlledTimeRange ? { timeRange: controlledTimeRange } : {},
|
|
190
|
+
...controlledDateRange ? { dateRange: controlledDateRange } : {}
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
export {
|
|
194
|
+
useJotaiFilterBarProps,
|
|
195
|
+
useJotaiJsonSchemaFormProps
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=jotai-bindings-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jotai-bindings-core.js","sources":["../../src/components/jotai-bindings-core.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useReducer } from \"react\";\nimport { useStore, type WritableAtom } from \"jotai\";\nimport type {\n FilterBarBooleanFilter,\n FilterBarEnumFilter,\n FilterBarFilter,\n FilterBarLookupFilter,\n FilterBarLookupMultiFilter,\n FilterBarMultiFilter,\n FilterBarNestedMultiFilter,\n FilterBarNumberFilter,\n FilterBarProps,\n FilterBarRangeProps,\n FilterBarSearchProps,\n FilterBarSelectMultiFilter,\n FilterBarTextFilter,\n} from \"./FilterBar\";\nimport type { JsonSchemaFormProps } from \"./json-schema-form-types\";\n\nexport type JotaiWritableAtom<Value> = WritableAtom<Value, [Value], unknown>;\nexport type JotaiJsonSchemaFormAtom = JotaiWritableAtom<Record<string, unknown>>;\n\nexport type JotaiJsonSchemaFormProps = Omit<JsonSchemaFormProps, \"value\" | \"onChange\"> & {\n atom: JotaiJsonSchemaFormAtom;\n onChange?: JsonSchemaFormProps[\"onChange\"];\n};\n\nexport type JotaiFilterBarSearchProps = Omit<FilterBarSearchProps, \"value\" | \"onChange\"> & {\n atom: JotaiWritableAtom<string>;\n onChange?: FilterBarSearchProps[\"onChange\"];\n};\n\nexport type JotaiFilterBarRangeValue = {\n from?: string;\n to?: string;\n};\n\nexport type JotaiFilterBarRangeProps = Omit<FilterBarRangeProps, \"from\" | \"to\" | \"onApply\"> & {\n atom: JotaiWritableAtom<JotaiFilterBarRangeValue>;\n onApply?: FilterBarRangeProps[\"onApply\"];\n};\n\ntype AtomizedFilter<TFilter extends FilterBarFilter> = Omit<TFilter, \"value\" | \"onChange\"> & {\n atom: JotaiWritableAtom<TFilter[\"value\"]>;\n onChange?: TFilter[\"onChange\"];\n};\n\nexport type JotaiFilterBarTextFilter = AtomizedFilter<FilterBarTextFilter>;\nexport type JotaiFilterBarLookupFilter = AtomizedFilter<FilterBarLookupFilter>;\nexport type JotaiFilterBarLookupMultiFilter = AtomizedFilter<FilterBarLookupMultiFilter>;\nexport type JotaiFilterBarMultiFilter = AtomizedFilter<FilterBarMultiFilter>;\nexport type JotaiFilterBarNestedMultiFilter = AtomizedFilter<FilterBarNestedMultiFilter>;\nexport type JotaiFilterBarSelectMultiFilter = AtomizedFilter<FilterBarSelectMultiFilter>;\nexport type JotaiFilterBarNumberFilter = AtomizedFilter<FilterBarNumberFilter>;\nexport type JotaiFilterBarEnumFilter = AtomizedFilter<FilterBarEnumFilter>;\nexport type JotaiFilterBarBooleanFilter = AtomizedFilter<FilterBarBooleanFilter>;\n\nexport type JotaiFilterBarFilter =\n | JotaiFilterBarTextFilter\n | JotaiFilterBarLookupFilter\n | JotaiFilterBarLookupMultiFilter\n | JotaiFilterBarMultiFilter\n | JotaiFilterBarNestedMultiFilter\n | JotaiFilterBarSelectMultiFilter\n | JotaiFilterBarNumberFilter\n | JotaiFilterBarEnumFilter\n | JotaiFilterBarBooleanFilter;\n\nexport type JotaiFilterBarProps = Omit<\n FilterBarProps,\n \"search\" | \"filters\" | \"timeRange\" | \"dateRange\"\n> & {\n search?: JotaiFilterBarSearchProps;\n filters?: JotaiFilterBarFilter[];\n timeRange?: JotaiFilterBarRangeProps;\n dateRange?: JotaiFilterBarRangeProps;\n};\n\ntype AnyJotaiAtom = JotaiWritableAtom<unknown>;\n\nfunction useAtomSubscriptions(atoms: AnyJotaiAtom[]) {\n const store = useStore();\n const [, forceRender] = useReducer((count: number) => count + 1, 0);\n const uniqueAtoms = useMemo(() => Array.from(new Set(atoms)), [atoms]);\n\n useEffect(() => {\n if (uniqueAtoms.length === 0) return undefined;\n const unsubscribers = uniqueAtoms.map((atom) => store.sub(atom, forceRender));\n return () => {\n unsubscribers.forEach((unsubscribe) => unsubscribe());\n };\n }, [store, uniqueAtoms]);\n}\n\nfunction useAtomValueSetter<Value>(atom: JotaiWritableAtom<Value>) {\n const store = useStore();\n const value = store.get(atom);\n const setValue = useCallback(\n (next: Value) => {\n store.set(atom, next);\n },\n [atom, store],\n );\n return [value, setValue] as const;\n}\n\nexport function useJotaiJsonSchemaFormProps(\n atom: JotaiJsonSchemaFormAtom,\n onChange?: JsonSchemaFormProps[\"onChange\"],\n): Pick<JsonSchemaFormProps, \"value\" | \"onChange\"> {\n const atoms = useMemo(() => [atom as AnyJotaiAtom], [atom]);\n useAtomSubscriptions(atoms);\n const [value, setValue] = useAtomValueSetter(atom);\n\n return useMemo(\n () => ({\n value,\n onChange: (next: Record<string, unknown>) => {\n setValue(next);\n onChange?.(next);\n },\n }),\n [onChange, setValue, value],\n );\n}\n\nfunction useJotaiFilterBarAtoms({\n search,\n filters,\n timeRange,\n dateRange,\n}: {\n search?: JotaiFilterBarSearchProps | undefined;\n filters?: JotaiFilterBarFilter[] | undefined;\n timeRange?: JotaiFilterBarRangeProps | undefined;\n dateRange?: JotaiFilterBarRangeProps | undefined;\n}) {\n const atoms = useMemo(() => {\n const next: AnyJotaiAtom[] = [];\n if (search) next.push(search.atom as AnyJotaiAtom);\n filters?.forEach((filter) => next.push(filter.atom as AnyJotaiAtom));\n if (timeRange) next.push(timeRange.atom as AnyJotaiAtom);\n if (dateRange) next.push(dateRange.atom as AnyJotaiAtom);\n return next;\n }, [dateRange, filters, search, timeRange]);\n useAtomSubscriptions(atoms);\n}\n\nfunction useJotaiSearch(search: JotaiFilterBarSearchProps | undefined): FilterBarSearchProps | undefined {\n const store = useStore();\n if (!search) return undefined;\n const { atom, onChange, ...rest } = search;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n}\n\nfunction useJotaiRange(range: JotaiFilterBarRangeProps | undefined): FilterBarRangeProps | undefined {\n const store = useStore();\n if (!range) return undefined;\n const { atom, onApply, ...rest } = range;\n const value = store.get(atom);\n return {\n ...rest,\n ...(value.from !== undefined ? { from: value.from } : {}),\n ...(value.to !== undefined ? { to: value.to } : {}),\n onApply: (from: string, to: string) => {\n store.set(atom, { from, to });\n onApply?.(from, to);\n },\n };\n}\n\nfunction useJotaiFilters(filters: JotaiFilterBarFilter[] | undefined): FilterBarFilter[] | undefined {\n const store = useStore();\n if (!filters) return undefined;\n return filters.map((filter) => bindJotaiFilter(store, filter));\n}\n\nfunction bindJotaiFilter(store: ReturnType<typeof useStore>, filter: JotaiFilterBarFilter): FilterBarFilter {\n switch (filter.kind) {\n case \"text\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n case \"lookup\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n case \"lookup-multi\":\n case \"select-multi\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string[]) => {\n store.set(atom, next);\n onChange?.(next);\n },\n } as FilterBarFilter;\n }\n case \"multi\":\n case \"nested-multi\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: FilterBarMultiFilter[\"value\"]) => {\n store.set(atom, next);\n onChange?.(next);\n },\n } as FilterBarFilter;\n }\n case \"number\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: FilterBarNumberFilter[\"value\"]) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n case \"enum\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: string) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n case \"boolean\": {\n const { atom, onChange, ...rest } = filter;\n return {\n ...rest,\n value: store.get(atom),\n onChange: (next: boolean) => {\n store.set(atom, next);\n onChange?.(next);\n },\n };\n }\n }\n}\n\nexport function useJotaiFilterBarProps({\n search,\n filters,\n timeRange,\n dateRange,\n ...props\n}: JotaiFilterBarProps): FilterBarProps {\n useJotaiFilterBarAtoms({ search, filters, timeRange, dateRange });\n const controlledSearch = useJotaiSearch(search);\n const controlledFilters = useJotaiFilters(filters);\n const controlledTimeRange = useJotaiRange(timeRange);\n const controlledDateRange = useJotaiRange(dateRange);\n\n return {\n ...props,\n ...(controlledSearch ? { search: controlledSearch } : {}),\n ...(controlledFilters ? { filters: controlledFilters } : {}),\n ...(controlledTimeRange ? { timeRange: controlledTimeRange } : {}),\n ...(controlledDateRange ? { dateRange: controlledDateRange } : {}),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const FilterBar = require("./FilterBar.cjs");
|
|
5
|
+
const JsonSchemaForm = require("./JsonSchemaForm.cjs");
|
|
6
|
+
const jotaiBindingsCore = require("./jotai-bindings-core.cjs");
|
|
7
|
+
function JotaiJsonSchemaForm({ atom, onChange, ...props }) {
|
|
8
|
+
const controlled = jotaiBindingsCore.useJotaiJsonSchemaFormProps(atom, onChange);
|
|
9
|
+
return /* @__PURE__ */ jsxRuntime.jsx(JsonSchemaForm.JsonSchemaForm, { ...props, ...controlled });
|
|
10
|
+
}
|
|
11
|
+
function JotaiFilterBar(props) {
|
|
12
|
+
const controlled = jotaiBindingsCore.useJotaiFilterBarProps(props);
|
|
13
|
+
return /* @__PURE__ */ jsxRuntime.jsx(FilterBar.FilterBar, { ...controlled });
|
|
14
|
+
}
|
|
15
|
+
exports.JotaiFilterBar = JotaiFilterBar;
|
|
16
|
+
exports.JotaiJsonSchemaForm = JotaiJsonSchemaForm;
|
|
17
|
+
//# sourceMappingURL=jotai-bindings.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jotai-bindings.cjs","sources":["../../src/components/jotai-bindings.tsx"],"sourcesContent":["import { FilterBar } from \"./FilterBar\";\nimport { JsonSchemaForm } from \"./JsonSchemaForm\";\nimport {\n useJotaiFilterBarProps,\n useJotaiJsonSchemaFormProps,\n type JotaiFilterBarProps,\n type JotaiJsonSchemaFormProps,\n} from \"./jotai-bindings-core\";\n\nexport function JotaiJsonSchemaForm({ atom, onChange, ...props }: JotaiJsonSchemaFormProps) {\n const controlled = useJotaiJsonSchemaFormProps(atom, onChange);\n return <JsonSchemaForm {...props} {...controlled} />;\n}\n\nexport function JotaiFilterBar(props: JotaiFilterBarProps) {\n const controlled = useJotaiFilterBarProps(props);\n return <FilterBar {...controlled} />;\n}\n"],"names":["useJotaiJsonSchemaFormProps","jsx","JsonSchemaForm","useJotaiFilterBarProps","FilterBar"],"mappings":";;;;;;AASO,SAAS,oBAAoB,EAAE,MAAM,UAAU,GAAG,SAAmC;AAC1F,QAAM,aAAaA,kBAAAA,4BAA4B,MAAM,QAAQ;AAC7D,SAAOC,2BAAAA,IAACC,eAAAA,gBAAA,EAAgB,GAAG,OAAQ,GAAG,WAAA,CAAY;AACpD;AAEO,SAAS,eAAe,OAA4B;AACzD,QAAM,aAAaC,kBAAAA,uBAAuB,KAAK;AAC/C,SAAOF,+BAACG,UAAAA,WAAA,EAAW,GAAG,WAAA,CAAY;AACpC;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { JotaiFilterBarProps, JotaiJsonSchemaFormProps } from './jotai-bindings-core';
|
|
2
|
+
export declare function JotaiJsonSchemaForm({ atom, onChange, ...props }: JotaiJsonSchemaFormProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare function JotaiFilterBar(props: JotaiFilterBarProps): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
//# sourceMappingURL=jotai-bindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jotai-bindings.d.ts","sourceRoot":"","sources":["../../src/components/jotai-bindings.tsx"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,wBAAwB,2CAGzF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CAGxD"}
|