@tailorkit/react 0.1.0-beta.22 → 0.1.0-beta.23
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ViewInstance } from "@tailorkit/app/client";
|
|
2
2
|
import type { SlotDefinitions, ViewDefinition } from "@tailorkit/core/schema";
|
|
3
3
|
import type { ReactNode } from "react";
|
|
4
|
-
import type { ViewContext, ViewName } from "../hooks/use-
|
|
4
|
+
import type { ViewContext, ViewName } from "../hooks/use-view-context";
|
|
5
5
|
import type { TailorKitApp } from "../tailorkit";
|
|
6
6
|
type DefaultViews = Record<`/${string}`, ViewDefinition>;
|
|
7
7
|
type ContextPaths<TViews extends Record<string, ViewDefinition>, TView extends ViewName<TViews>> = {
|
|
@@ -20,6 +20,6 @@ interface ErrorViewOptions<TView extends string> {
|
|
|
20
20
|
}
|
|
21
21
|
export type ViewOptions<TViews extends Record<string, ViewDefinition> = DefaultViews, TView extends ViewName<TViews> = ViewName<TViews>> = TView extends ViewName<TViews> ? ReadyViewOptions<TViews, TView> | LoadingViewOptions<TView> | ErrorViewOptions<TView> : never;
|
|
22
22
|
export type ViewState<TViews extends Record<string, ViewDefinition> = DefaultViews, TView extends ViewName<TViews> = ViewName<TViews>> = Omit<ReadyViewOptions<TViews, TView>, "view"> | Omit<LoadingViewOptions<TView>, "view"> | Omit<ErrorViewOptions<TView>, "view">;
|
|
23
|
-
export type
|
|
24
|
-
export declare function
|
|
23
|
+
export type UseViewContext<TViews extends Record<string, ViewDefinition>> = <TView extends ViewName<TViews>>(view: TView, options: ViewState<TViews, NoInfer<TView>>) => void;
|
|
24
|
+
export declare function useViewContext<TViews extends Record<string, ViewDefinition> = DefaultViews, TView extends ViewName<TViews> = ViewName<TViews>>(view: TView, options: ViewState<TViews, NoInfer<TView>>): void;
|
|
25
25
|
export {};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { TailorKitApp, SlotItem } from "@tailorkit/client-core";
|
|
2
2
|
import type { UseAppsOptions, UseAppsResult } from "./use-apps";
|
|
3
3
|
export type { SlotItem } from "@tailorkit/client-core";
|
|
4
|
-
export interface
|
|
4
|
+
export interface UseViewsOptions<TScopeNames extends string = string, TSlot extends string = string> extends UseAppsOptions<TScopeNames> {
|
|
5
5
|
slot: TSlot;
|
|
6
6
|
}
|
|
7
|
-
export interface
|
|
7
|
+
export interface UseViewsResult<TMultiple extends boolean = boolean> extends Omit<UseAppsResult, "data"> {
|
|
8
8
|
data: SlotItem<TMultiple>[] | undefined;
|
|
9
9
|
}
|
|
10
10
|
/** List apps for single-view slots or resolve instances for multiple-view slots. */
|
|
11
|
-
export declare function
|
|
11
|
+
export declare function useViews({ slot, scopes, appIds }: UseViewsOptions): UseViewsResult;
|
|
12
12
|
/** Managed Slot resolves only its explicitly supplied app. */
|
|
13
|
-
export declare function useAppSlot(app: TailorKitApp, slot: string):
|
|
13
|
+
export declare function useAppSlot(app: TailorKitApp, slot: string): UseViewsResult;
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,6 @@ export { components, createTailorKitClient } from "./tailorkit";
|
|
|
4
4
|
export type { TailorKitApp, TailorKitClientConfig, TailorKitInstance } from "./tailorkit";
|
|
5
5
|
export { Root } from "./components/root";
|
|
6
6
|
export type { UseAppsOptions, UseAppsResult } from "./hooks/use-apps";
|
|
7
|
-
export type { SlotItem,
|
|
8
|
-
export type {
|
|
7
|
+
export type { SlotItem, UseViewsOptions, UseViewsResult } from "./hooks/use-views";
|
|
8
|
+
export type { UseViewContext, ViewOptions, ViewState } from "./hooks/use-view-context";
|
|
9
9
|
export { primitives } from "./primitives";
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ function useStableContext(value) {
|
|
|
12
12
|
return ref.current.value;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
// src/hooks/use-
|
|
15
|
+
// src/hooks/use-views.ts
|
|
16
16
|
import { createSlotStore, matchesApp as matchesApp3, serializeCacheKey } from "@tailorkit/client-core";
|
|
17
17
|
import { useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo2, useSyncExternalStore as useSyncExternalStore2 } from "react";
|
|
18
18
|
|
|
@@ -80,9 +80,9 @@ function toUseAppsResult(snapshot, refetch) {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
// src/hooks/use-
|
|
84
|
-
function
|
|
85
|
-
const { store } = useTailorRootContext("
|
|
83
|
+
// src/hooks/use-views.ts
|
|
84
|
+
function useViews({ slot, scopes, appIds }) {
|
|
85
|
+
const { store } = useTailorRootContext("useViews");
|
|
86
86
|
const apps = useApps({ scopes, appIds });
|
|
87
87
|
const items = useResolvedSlot(slot, apps.data, apps.status, apps.error);
|
|
88
88
|
const refetch = useCallback2(async () => {
|
|
@@ -114,7 +114,7 @@ function useAppSlot(app, slot) {
|
|
|
114
114
|
return useResolvedSlot(slot, [app], "ready", null);
|
|
115
115
|
}
|
|
116
116
|
function useResolvedSlot(slot, apps, appsStatus, appsError) {
|
|
117
|
-
const { store } = useTailorRootContext("
|
|
117
|
+
const { store } = useTailorRootContext("useViews");
|
|
118
118
|
const activeView = useSyncExternalStore2(
|
|
119
119
|
store.views.subscribe,
|
|
120
120
|
store.views.getSnapshot,
|
|
@@ -707,10 +707,10 @@ function SlotRenderer({ app, name, state }) {
|
|
|
707
707
|
import { createTailorKitFetchClient } from "@tailorkit/client-core";
|
|
708
708
|
import { createElement as createElement2 } from "react";
|
|
709
709
|
|
|
710
|
-
// src/hooks/use-
|
|
710
|
+
// src/hooks/use-view-context.ts
|
|
711
711
|
import { useEffect as useEffect5, useMemo as useMemo6 } from "react";
|
|
712
|
-
function
|
|
713
|
-
const { store } = useTailorRootContext("
|
|
712
|
+
function useViewContext(view, options) {
|
|
713
|
+
const { store } = useTailorRootContext("useViewContext");
|
|
714
714
|
const id = useMemo6(() => /* @__PURE__ */ Symbol("tailorkit-current-view"), []);
|
|
715
715
|
const status = options.status ?? "ready";
|
|
716
716
|
const context = "context" in options ? options.context : void 0;
|
|
@@ -786,13 +786,13 @@ function createReactTailorKitClient(options) {
|
|
|
786
786
|
useTailorRootContext("useApps", client);
|
|
787
787
|
return useApps(options2);
|
|
788
788
|
},
|
|
789
|
-
|
|
790
|
-
useTailorRootContext("
|
|
791
|
-
return
|
|
789
|
+
useViews: function useClientViews(options2) {
|
|
790
|
+
useTailorRootContext("useViews", client);
|
|
791
|
+
return useViews(options2);
|
|
792
792
|
},
|
|
793
|
-
|
|
794
|
-
useTailorRootContext("
|
|
795
|
-
|
|
793
|
+
useViewContext: function useClientViewContext(view, options2) {
|
|
794
|
+
useTailorRootContext("useViewContext", client);
|
|
795
|
+
useViewContext(view, options2);
|
|
796
796
|
}
|
|
797
797
|
};
|
|
798
798
|
return client;
|
package/dist/tailorkit.d.ts
CHANGED
|
@@ -2,9 +2,9 @@ import type { TailorKitFetchClient, TailorKitCacheOptions } from "@tailorkit/cli
|
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
3
|
import type { TailorKitTheme, CallbackMap, ComponentDefinition, ComponentProps, Schema, ViewDefinition, SlotDefinitions, TailorKitSchema } from "@tailorkit/core/schema";
|
|
4
4
|
import type { primitives } from "./primitives";
|
|
5
|
-
import type {
|
|
5
|
+
import type { UseViewContext } from "./hooks/use-view-context";
|
|
6
6
|
import type { UseAppsOptions, UseAppsResult } from "./hooks/use-apps";
|
|
7
|
-
import type {
|
|
7
|
+
import type { UseViewsOptions, UseViewsResult } from "./hooks/use-views";
|
|
8
8
|
import type { SlotComponent } from "./components/slot";
|
|
9
9
|
type AnyComponentDefinition = ComponentDefinition<Schema | undefined, CallbackMap, boolean | undefined>;
|
|
10
10
|
type ComponentRenderer<TComponent extends AnyComponentDefinition> = (args: {
|
|
@@ -31,8 +31,8 @@ export interface TailorKitInstance<TViews extends Record<string, ViewDefinition>
|
|
|
31
31
|
readonly $views?: TViews;
|
|
32
32
|
readonly Slot: SlotComponent<TViews, TSlots>;
|
|
33
33
|
readonly useApps: (options?: UseAppsOptions<TScopeNames>) => UseAppsResult;
|
|
34
|
-
readonly
|
|
35
|
-
readonly
|
|
34
|
+
readonly useViews: <TSlot extends keyof TSlots & string>(options: UseViewsOptions<TScopeNames, TSlot>) => UseViewsResult<SlotMultiple<TSlots[TSlot]>>;
|
|
35
|
+
readonly useViewContext: UseViewContext<TViews>;
|
|
36
36
|
}
|
|
37
37
|
type SlotMultiple<TSlot> = TSlot extends {
|
|
38
38
|
multiple: infer TMultiple extends boolean;
|
|
@@ -78,4 +78,4 @@ export declare function createTailorKitClient<TTailor extends TailorKitServerSha
|
|
|
78
78
|
}): TailorKitInstance<ServerViews<TTailor>, TTailor extends {
|
|
79
79
|
readonly $slots?: infer V extends SlotDefinitions;
|
|
80
80
|
} ? V : SlotDefinitions, ServerScopeNames<TTailor>>;
|
|
81
|
-
export type { ViewOptions } from "./hooks/use-
|
|
81
|
+
export type { ViewOptions } from "./hooks/use-view-context";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailorkit/react",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.23",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@floating-ui/react-dom": "^2.1.9",
|
|
25
25
|
"@standard-schema/spec": "^1.1.0",
|
|
26
|
-
"@tailorkit/app": "0.1.0-beta.
|
|
27
|
-
"@tailorkit/client-core": "0.1.0-beta.
|
|
28
|
-
"@tailorkit/client-platform": "0.1.0-beta.
|
|
29
|
-
"@tailorkit/core": "0.1.0-beta.
|
|
30
|
-
"@tailorkit/sandbox": "0.1.0-beta.
|
|
26
|
+
"@tailorkit/app": "0.1.0-beta.23",
|
|
27
|
+
"@tailorkit/client-core": "0.1.0-beta.23",
|
|
28
|
+
"@tailorkit/client-platform": "0.1.0-beta.23",
|
|
29
|
+
"@tailorkit/core": "0.1.0-beta.23",
|
|
30
|
+
"@tailorkit/sandbox": "0.1.0-beta.23"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@tailorkit/config": "0.0.0",
|