@tai42/studio-sdk 9.2.1 → 10.0.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/README.md +45 -1
- package/SECURITY.md +10 -2
- package/dist/index.d.ts +18 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -6
- package/dist/index.js.map +1 -1
- package/dist/schema-form/SchemaForm.d.ts +21 -1
- package/dist/schema-form/SchemaForm.d.ts.map +1 -1
- package/dist/schema-form/SchemaForm.js +8 -3
- package/dist/schema-form/SchemaForm.js.map +1 -1
- package/dist/schema-form/context.d.ts +73 -1
- package/dist/schema-form/context.d.ts.map +1 -1
- package/dist/schema-form/context.js +16 -2
- package/dist/schema-form/context.js.map +1 -1
- package/dist/schema-form/index.d.ts +27 -0
- package/dist/schema-form/index.d.ts.map +1 -1
- package/dist/schema-form/index.js +26 -0
- package/dist/schema-form/index.js.map +1 -1
- package/dist/schema-form/string-field.d.ts +15 -16
- package/dist/schema-form/string-field.d.ts.map +1 -1
- package/dist/schema-form/string-field.js +43 -50
- package/dist/schema-form/string-field.js.map +1 -1
- package/package.json +9 -5
- package/src/index.ts +27 -26
- package/src/schema-form/SchemaForm.tsx +46 -14
- package/src/schema-form/context.ts +86 -3
- package/src/schema-form/index.ts +32 -0
- package/src/schema-form/string-field.tsx +64 -70
- package/dist/jq.d.ts +0 -23
- package/dist/jq.d.ts.map +0 -1
- package/dist/jq.js +0 -33
- package/dist/jq.js.map +0 -1
- package/src/jq.ts +0 -53
package/README.md
CHANGED
|
@@ -19,8 +19,14 @@ pnpm add @tai42/studio-sdk
|
|
|
19
19
|
|
|
20
20
|
## Entry points
|
|
21
21
|
|
|
22
|
-
- `@tai42/studio-sdk` — the plugin API, design system, and
|
|
22
|
+
- `@tai42/studio-sdk` — the plugin API, design system, hooks, and the
|
|
23
|
+
schema-driven `SchemaForm`. It exports **no jq**: the visual jq editor is the
|
|
24
|
+
separately published `@tai42/jq-studio`, which consumers import directly (see
|
|
25
|
+
[Expression fields](#expression-fields)).
|
|
23
26
|
- `@tai42/studio-sdk/host` — the host-only plugin registry.
|
|
27
|
+
- `@tai42/studio-sdk/schema-form` — a form-only `SchemaForm` entry for bundling
|
|
28
|
+
consumers that want the form without the barrel. It imports no CSS by design —
|
|
29
|
+
a subpath consumer loads `tokens.css` and `components.css` explicitly.
|
|
24
30
|
- `@tai42/studio-sdk/testing` — test-only helpers: a registry reset and
|
|
25
31
|
`installJsdomStubs()`, which fills the browser APIs jsdom omits.
|
|
26
32
|
- `@tai42/studio-sdk/tokens.css` — the design-token stylesheet. It also emits the
|
|
@@ -42,6 +48,44 @@ A host that bundles the SDK gets all three through the barrel's side-effect
|
|
|
42
48
|
imports. A host that consumes the SDK as an external module (the Studio shell
|
|
43
49
|
resolves it through the served import map) imports the three stylesheets itself.
|
|
44
50
|
|
|
51
|
+
## Expression fields
|
|
52
|
+
|
|
53
|
+
A string field carrying the `x-tai42-expression` annotation authors through a
|
|
54
|
+
visual expression editor — but **only when the host injects one**. The SDK owns
|
|
55
|
+
the injection point and nothing else:
|
|
56
|
+
|
|
57
|
+
- `ExpressionFieldContext` — the ambient door for a whole tree.
|
|
58
|
+
- `SchemaForm`'s `expressionField` prop — the per-form door.
|
|
59
|
+
- `ExpressionFieldComponent` / `ExpressionFieldProps` / `ExpressionInputShape` —
|
|
60
|
+
the door contract, which MIRRORS jq-studio's field props without importing
|
|
61
|
+
them.
|
|
62
|
+
|
|
63
|
+
With no door, an annotated field renders the plain string input, and the SDK's
|
|
64
|
+
module graph reaches no jq at all — no editor, no Web Worker, no wasm.
|
|
65
|
+
|
|
66
|
+
The door itself is `JqField` from
|
|
67
|
+
[`@tai42/jq-studio`](https://www.npmjs.com/package/@tai42/jq-studio), imported
|
|
68
|
+
directly by whoever wants it:
|
|
69
|
+
|
|
70
|
+
```tsx
|
|
71
|
+
import { SchemaForm } from '@tai42/studio-sdk';
|
|
72
|
+
import { JqField } from '@tai42/jq-studio';
|
|
73
|
+
|
|
74
|
+
<SchemaForm schema={schema} value={value} onChange={onChange} expressionField={JqField} />;
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
A host that wants the editor everywhere mounts the door once at its root
|
|
78
|
+
(`ExpressionFieldContext.Provider`), injects its design system into the editor
|
|
79
|
+
once (`PrimitivesProvider` from `@tai42/jq-studio`), and installs the shared
|
|
80
|
+
evaluation worker once at boot (`installDefaultJqWorker()`).
|
|
81
|
+
|
|
82
|
+
**Singleton.** jq-studio holds a module-scoped React context and one shared
|
|
83
|
+
worker, so a deployment must resolve `@tai42/jq-studio` to ONE module. In the
|
|
84
|
+
Studio that is the served import map (`/vendor/jq-studio.js`), exactly as it
|
|
85
|
+
serves react and `@tai42/studio-sdk`; a second bundled copy would give a second
|
|
86
|
+
primitives context (the design-system injection silently falls back to the
|
|
87
|
+
built-ins), a second worker, and a duplicate multi-megabyte wasm.
|
|
88
|
+
|
|
45
89
|
## Browser support
|
|
46
90
|
|
|
47
91
|
The stylesheets ship as authored, with no build-time lowering, so the CSS they
|
package/SECURITY.md
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
`@tai42/studio-sdk` ships as three entry points, split along a trust boundary:
|
|
4
4
|
|
|
5
5
|
- **`@tai42/studio-sdk`** — the plugin surface. Types, `PluginContext`/`PluginEntry`,
|
|
6
|
-
contribution types, the design system, and hooks. This is the only entry a
|
|
7
|
-
Studio plugin is allowed to import, and it is the
|
|
6
|
+
contribution types, the design system, and hooks. This is the only SDK entry a
|
|
7
|
+
Studio plugin is allowed to import, and it is the served vendor asset
|
|
8
8
|
(`/vendor/studio-sdk.js`) every plugin bundle binds through the import map.
|
|
9
9
|
- **`@tai42/studio-sdk/host`** — the host-only registry API: `loadPlugin` (the one
|
|
10
10
|
entry a plugin's `register` contributes through) and `getContributions` (what the
|
|
@@ -13,6 +13,14 @@
|
|
|
13
13
|
- **`@tai42/studio-sdk/testing`** — a test-only registry reset (`__resetContributions`).
|
|
14
14
|
Never served to the browser.
|
|
15
15
|
|
|
16
|
+
The SDK is not the only shared module the import map serves to plugins. The other
|
|
17
|
+
is **`@tai42/jq-studio`** (`/vendor/jq-studio.js`), the standalone visual jq editor:
|
|
18
|
+
a separately published package, not an SDK entry point — the SDK re-exports none of
|
|
19
|
+
it — that a plugin rendering `JqField` imports directly. It sits on the plugin side
|
|
20
|
+
of the boundary: it carries no registry, and being served as one module is what
|
|
21
|
+
makes a plugin's editor share the host's single primitives context and evaluation
|
|
22
|
+
worker, exactly as the served react and `@tai42/studio-sdk` are shared.
|
|
23
|
+
|
|
16
24
|
## Why the split
|
|
17
25
|
|
|
18
26
|
The in-memory registry lives in one module and is a singleton across the plugin
|
package/dist/index.d.ts
CHANGED
|
@@ -11,9 +11,22 @@
|
|
|
11
11
|
* exported only from `@tai42/studio-sdk/host`, which the host bundle imports. See
|
|
12
12
|
* SECURITY.md for the trust boundary.
|
|
13
13
|
*
|
|
14
|
-
* The
|
|
15
|
-
* across the plugin boundary; this package imports nothing internal at
|
|
16
|
-
* (the `ApiClient`/`Interaction` types are type-only imports).
|
|
14
|
+
* The shared modules (react, react-dom, @tai42/studio-sdk, @tai42/jq-studio) are
|
|
15
|
+
* singletons across the plugin boundary; this package imports nothing internal at
|
|
16
|
+
* runtime (the `ApiClient`/`Interaction` types are type-only imports).
|
|
17
|
+
*
|
|
18
|
+
* NO JQ. The visual jq editor is `@tai42/jq-studio`, a separately published,
|
|
19
|
+
* client-agnostic package, and this barrel does not re-export it — not even as a
|
|
20
|
+
* thin pass-through. A bundler emits a package's Web Worker file and wasm engine
|
|
21
|
+
* from the mere PRESENCE of the module in the graph (the assets are emitted while
|
|
22
|
+
* the module is transformed, before tree-shaking can drop an unused re-export), so
|
|
23
|
+
* a pass-through here would put ~2.9MB of jq runtime into every consumer that
|
|
24
|
+
* imports this barrel for a Button. Consumers that want the editor import
|
|
25
|
+
* `@tai42/jq-studio` directly; the import map resolves that bare specifier to the
|
|
26
|
+
* one served copy, so the whole deployment still shares a single jq instance, a
|
|
27
|
+
* single primitives injection, and a single worker. What the SDK keeps is the
|
|
28
|
+
* INJECTION POINT — `ExpressionFieldContext` / `SchemaForm`'s `expressionField`
|
|
29
|
+
* prop, plus the mirrored contract types — which holds no edge to jq at all.
|
|
17
30
|
*/
|
|
18
31
|
import './components/tokens.css';
|
|
19
32
|
import './components/fonts.css';
|
|
@@ -21,8 +34,6 @@ import './components/components.css';
|
|
|
21
34
|
export type { PluginContext, PluginEntry, ToolPanelProps, PluginPageProps, PluginPageParamsSchema, SettingsTabProps, ToolPanelContribution, PageContribution, RegisteredPage, SettingsTabContribution, RegisteredSettingsTab, NavEntryContribution, NavEntrySection, RegisteredNavEntry, PluginContributions, RequiredCapabilities, } from './plugin/types';
|
|
22
35
|
export { STUDIO_PLUGIN_API_VERSION, checkPluginApiVersion } from './plugin/version';
|
|
23
36
|
export type { VersionGateResult } from './plugin/version';
|
|
24
|
-
export { JqField, JQEditorDialog, JqEditorDialog, preloadJq, installDefaultJqWorker, PrimitivesProvider, } from './jq';
|
|
25
|
-
export type { JqFieldProps, JQEditorDialogProps, JqEditorDialogProps, ExpressionLanguage, JqInputKey, JqInputShapeDescriptor, SampleInputProvider, ServerValidationResult, ServerValidateHook, JqFieldDeclaration, Primitives, } from './jq';
|
|
26
37
|
export { ApiProvider, useApi } from './hooks/useApi';
|
|
27
38
|
export type { ApiClient } from './hooks/useApi';
|
|
28
39
|
export { UnauthorizedProvider, useOnUnauthorized } from './hooks/useUnauthorized';
|
|
@@ -133,8 +144,8 @@ export { TOKEN_NAMES } from './components/tokens';
|
|
|
133
144
|
export type { TokenName } from './components/tokens';
|
|
134
145
|
export { NAV_ICONS, DashboardIcon, ToolsIcon, AgentsIcon, PresetsIcon, ExtensionsIcon, TemplatesIcon, ConnectorsIcon, HooksIcon, StorageIcon, SchedulingIcon, InteractionsIcon, NotificationsIcon, ConversationsIcon, MarketplaceIcon, ManifestIcon, SettingsIcon, SystemIcon, SearchIcon, SignOutIcon, MenuIcon, CloseIcon, FolderIcon, GridIcon, FilterIcon, ArrowLeftIcon, ArrowUpIcon, ArrowDownIcon, ChevronDownIcon, ChevronRightIcon, CheckIcon, MinusIcon, CopyIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, SortAscIcon, SortDescIcon, SunIcon, MoonIcon, MonitorIcon, CheckCircleIcon, AlertTriangleIcon, XCircleIcon, PendingIcon, } from './components/icons';
|
|
135
146
|
export type { IconProps, IconComponent } from './components/icons';
|
|
136
|
-
export { SchemaForm, RecordEntryRendererContext, SecretRefField, defaultValueForSchema, validateAgainstSchema, resolveRef, } from './schema-form';
|
|
137
|
-
export type { SchemaFormProps, CompletionProvider, RecordEntryRenderer, RecordEntryContext, SecretRefFieldProps, SecretRef, JsonSchema, JsonSchemaType, Discriminator, SchemaFormErrors, } from './schema-form';
|
|
147
|
+
export { SchemaForm, RecordEntryRendererContext, ExpressionFieldContext, SecretRefField, defaultValueForSchema, validateAgainstSchema, resolveRef, } from './schema-form';
|
|
148
|
+
export type { SchemaFormProps, CompletionProvider, RecordEntryRenderer, RecordEntryContext, ExpressionFieldComponent, ExpressionFieldProps, ExpressionInputShape, ExpressionInputKey, SecretRefFieldProps, SecretRef, JsonSchema, JsonSchemaType, Discriminator, SchemaFormErrors, } from './schema-form';
|
|
138
149
|
export { SchemaEditor, lintSchemaText } from './schema-editor';
|
|
139
150
|
export type { SchemaEditorProps, SchemaEditorChange, SchemaLintResult } from './schema-editor';
|
|
140
151
|
export { ProgressBar } from './components/progress-bar';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,9 +11,22 @@
|
|
|
11
11
|
* exported only from `@tai42/studio-sdk/host`, which the host bundle imports. See
|
|
12
12
|
* SECURITY.md for the trust boundary.
|
|
13
13
|
*
|
|
14
|
-
* The
|
|
15
|
-
* across the plugin boundary; this package imports nothing internal at
|
|
16
|
-
* (the `ApiClient`/`Interaction` types are type-only imports).
|
|
14
|
+
* The shared modules (react, react-dom, @tai42/studio-sdk, @tai42/jq-studio) are
|
|
15
|
+
* singletons across the plugin boundary; this package imports nothing internal at
|
|
16
|
+
* runtime (the `ApiClient`/`Interaction` types are type-only imports).
|
|
17
|
+
*
|
|
18
|
+
* NO JQ. The visual jq editor is `@tai42/jq-studio`, a separately published,
|
|
19
|
+
* client-agnostic package, and this barrel does not re-export it — not even as a
|
|
20
|
+
* thin pass-through. A bundler emits a package's Web Worker file and wasm engine
|
|
21
|
+
* from the mere PRESENCE of the module in the graph (the assets are emitted while
|
|
22
|
+
* the module is transformed, before tree-shaking can drop an unused re-export), so
|
|
23
|
+
* a pass-through here would put ~2.9MB of jq runtime into every consumer that
|
|
24
|
+
* imports this barrel for a Button. Consumers that want the editor import
|
|
25
|
+
* `@tai42/jq-studio` directly; the import map resolves that bare specifier to the
|
|
26
|
+
* one served copy, so the whole deployment still shares a single jq instance, a
|
|
27
|
+
* single primitives injection, and a single worker. What the SDK keeps is the
|
|
28
|
+
* INJECTION POINT — `ExpressionFieldContext` / `SchemaForm`'s `expressionField`
|
|
29
|
+
* prop, plus the mirrored contract types — which holds no edge to jq at all.
|
|
17
30
|
*/
|
|
18
31
|
// The design system, delivered by the BARREL so each host app loads it once and a
|
|
19
32
|
// plugin never ships its own copy. These are bare side-effect imports, so they
|
|
@@ -26,8 +39,6 @@ import './components/tokens.css';
|
|
|
26
39
|
import './components/fonts.css';
|
|
27
40
|
import './components/components.css';
|
|
28
41
|
export { STUDIO_PLUGIN_API_VERSION, checkPluginApiVersion } from './plugin/version';
|
|
29
|
-
// -- jq fields (re-exported from @tai42/jq-studio; the platform owns no jq code) --
|
|
30
|
-
export { JqField, JQEditorDialog, JqEditorDialog, preloadJq, installDefaultJqWorker, PrimitivesProvider, } from './jq';
|
|
31
42
|
// -- Hooks -------------------------------------------------------------------
|
|
32
43
|
export { ApiProvider, useApi } from './hooks/useApi';
|
|
33
44
|
export { UnauthorizedProvider, useOnUnauthorized } from './hooks/useUnauthorized';
|
|
@@ -103,7 +114,14 @@ export { TOKEN_NAMES } from './components/tokens';
|
|
|
103
114
|
// -- Iconography (the only sanctioned marks; Unicode glyphs are banned) -------
|
|
104
115
|
export { NAV_ICONS, DashboardIcon, ToolsIcon, AgentsIcon, PresetsIcon, ExtensionsIcon, TemplatesIcon, ConnectorsIcon, HooksIcon, StorageIcon, SchedulingIcon, InteractionsIcon, NotificationsIcon, ConversationsIcon, MarketplaceIcon, ManifestIcon, SettingsIcon, SystemIcon, SearchIcon, SignOutIcon, MenuIcon, CloseIcon, FolderIcon, GridIcon, FilterIcon, ArrowLeftIcon, ArrowUpIcon, ArrowDownIcon, ChevronDownIcon, ChevronRightIcon, CheckIcon, MinusIcon, CopyIcon, ExternalLinkIcon, EyeIcon, EyeOffIcon, SortAscIcon, SortDescIcon, SunIcon, MoonIcon, MonitorIcon, CheckCircleIcon, AlertTriangleIcon, XCircleIcon, PendingIcon, } from './components/icons';
|
|
105
116
|
// -- Schema-driven forms -----------------------------------------------------
|
|
106
|
-
export { SchemaForm, RecordEntryRendererContext,
|
|
117
|
+
export { SchemaForm, RecordEntryRendererContext,
|
|
118
|
+
// The expression-door injection point: a host that wants `x-tai42-expression`
|
|
119
|
+
// fields to author through the visual editor imports `JqField` from
|
|
120
|
+
// `@tai42/jq-studio` and hands it to a form (the `expressionField` prop) or
|
|
121
|
+
// mounts this context above its tree. A form with no door renders those fields
|
|
122
|
+
// as plain string inputs and stays free of the jq subgraph — the editor, its
|
|
123
|
+
// worker, and its wasm — entirely.
|
|
124
|
+
ExpressionFieldContext, SecretRefField, defaultValueForSchema, validateAgainstSchema, resolveRef, } from './schema-form';
|
|
107
125
|
// -- Schema-editor (validated JSON-Schema authoring control) -----------------
|
|
108
126
|
export { SchemaEditor, lintSchemaText } from './schema-editor';
|
|
109
127
|
// -- MCP context widgets (elicitation / progress / completions / output) -----
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,8 +32,20 @@
|
|
|
32
32
|
* validator ignores it); these client-side caps are UX guards, and the SERVER
|
|
33
33
|
* MUST independently validate the decoded size. The base64 decoding and cap
|
|
34
34
|
* checks live in the sibling `media` module.
|
|
35
|
+
*
|
|
36
|
+
* EXPRESSION FIELDS ARE OPT-IN. A string field carrying `x-tai42-expression`
|
|
37
|
+
* renders an expression-authoring door — `JqField` from `@tai42/jq-studio` — only
|
|
38
|
+
* when the host
|
|
39
|
+
* INJECTS one, through {@link SchemaFormProps.expressionField} or the ambient
|
|
40
|
+
* {@link ExpressionFieldContext}; with no door it renders the plain string input.
|
|
41
|
+
* The form owns no edge to the door: importing it here, even dynamically behind
|
|
42
|
+
* `lazy`, would EMIT the visual editor, its worker file, and a multi-megabyte wasm
|
|
43
|
+
* engine into every consumer that bundles the SDK to render forms, whether or not
|
|
44
|
+
* a form ever authors an expression. Injection puts that weight on the hosts that
|
|
45
|
+
* want it and only there.
|
|
35
46
|
*/
|
|
36
47
|
import type { ReactNode } from 'react';
|
|
48
|
+
import type { ExpressionFieldComponent } from './context';
|
|
37
49
|
import type { JsonSchema, SchemaFormErrors } from './types';
|
|
38
50
|
/**
|
|
39
51
|
* Fetch argument-value suggestions for a string field. `argName` is the field's
|
|
@@ -61,10 +73,18 @@ export interface SchemaFormProps {
|
|
|
61
73
|
* absent both, {@link DEFAULT_MAX_UPLOAD_BYTES} applies.
|
|
62
74
|
*/
|
|
63
75
|
readonly maxUploadBytes?: number;
|
|
76
|
+
/**
|
|
77
|
+
* Optional. The expression-authoring door for `x-tai42-expression` fields —
|
|
78
|
+
* `JqField` from `@tai42/jq-studio`, which the host imports directly and passes
|
|
79
|
+
* here (see the module doc-comment). Omitted, the enclosing
|
|
80
|
+
* {@link ExpressionFieldContext} supplies it; absent both, an annotated field
|
|
81
|
+
* renders the plain string input.
|
|
82
|
+
*/
|
|
83
|
+
readonly expressionField?: ExpressionFieldComponent;
|
|
64
84
|
}
|
|
65
85
|
/**
|
|
66
86
|
* Render a controlled form for `schema`. The root is usually an object (a tool's
|
|
67
87
|
* input schema); a scalar/array/union root renders as a single field group.
|
|
68
88
|
*/
|
|
69
|
-
export declare function SchemaForm({ schema, value, onChange, errors, idPrefix, completionProvider, maxUploadBytes, }: SchemaFormProps): ReactNode;
|
|
89
|
+
export declare function SchemaForm({ schema, value, onChange, errors, idPrefix, completionProvider, maxUploadBytes, expressionField, }: SchemaFormProps): ReactNode;
|
|
70
90
|
//# sourceMappingURL=SchemaForm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaForm.d.ts","sourceRoot":"","sources":["../../src/schema-form/SchemaForm.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"SchemaForm.d.ts","sourceRoot":"","sources":["../../src/schema-form/SchemaForm.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAS1D,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAI5D;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;CACrD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAwB,EACxB,kBAAkB,EAClB,cAAyC,EACzC,eAAe,GAChB,EAAE,eAAe,GAAG,SAAS,CA0B7B"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
import { CompletionProviderContext, ExpressionFieldContext, MaxUploadBytesContext, } from './context';
|
|
3
4
|
import { FieldNode } from './field-node';
|
|
4
5
|
import { DEFAULT_MAX_UPLOAD_BYTES } from './media';
|
|
5
6
|
import { stackClass } from './styles';
|
|
@@ -7,7 +8,11 @@ import { stackClass } from './styles';
|
|
|
7
8
|
* Render a controlled form for `schema`. The root is usually an object (a tool's
|
|
8
9
|
* input schema); a scalar/array/union root renders as a single field group.
|
|
9
10
|
*/
|
|
10
|
-
export function SchemaForm({ schema, value, onChange, errors, idPrefix = 'schema-form', completionProvider, maxUploadBytes = DEFAULT_MAX_UPLOAD_BYTES, }) {
|
|
11
|
-
|
|
11
|
+
export function SchemaForm({ schema, value, onChange, errors, idPrefix = 'schema-form', completionProvider, maxUploadBytes = DEFAULT_MAX_UPLOAD_BYTES, expressionField, }) {
|
|
12
|
+
// The prop overrides the ambient door for this form only; omitted, the
|
|
13
|
+
// enclosing one flows through unchanged (providing `undefined` would BLIND the
|
|
14
|
+
// form to a door the host wired above it).
|
|
15
|
+
const ambientExpressionField = useContext(ExpressionFieldContext);
|
|
16
|
+
return (_jsx(CompletionProviderContext.Provider, { value: completionProvider, children: _jsx(MaxUploadBytesContext.Provider, { value: maxUploadBytes, children: _jsx(ExpressionFieldContext.Provider, { value: expressionField ?? ambientExpressionField, children: _jsx("div", { className: stackClass, "data-testid": idPrefix, children: _jsx(FieldNode, { schema: schema, root: schema, value: value, onChange: onChange, path: "", label: undefined, required: true, errors: errors, idPrefix: idPrefix }) }) }) }) }));
|
|
12
17
|
}
|
|
13
18
|
//# sourceMappingURL=SchemaForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaForm.js","sourceRoot":"","sources":["../../src/schema-form/SchemaForm.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"SchemaForm.js","sourceRoot":"","sources":["../../src/schema-form/SchemaForm.tsx"],"names":[],"mappings":";AA+CA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA0CtC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,aAAa,EACxB,kBAAkB,EAClB,cAAc,GAAG,wBAAwB,EACzC,eAAe,GACC;IAChB,uEAAuE;IACvE,+EAA+E;IAC/E,2CAA2C;IAC3C,MAAM,sBAAsB,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAClE,OAAO,CACL,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,kBAAkB,YAC3D,KAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,cAAc,YACnD,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,eAAe,IAAI,sBAAsB,YAC/E,cAAK,SAAS,EAAE,UAAU,iBAAe,QAAQ,YAC/C,KAAC,SAAS,IACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,EAAE,EACP,KAAK,EAAE,SAAS,EAChB,QAAQ,QACR,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAClB,GACE,GAC0B,GACH,GACE,CACtC,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
1
|
+
import type { ComponentType, ReactNode } from 'react';
|
|
2
2
|
import type { CompletionProvider } from './SchemaForm';
|
|
3
3
|
import type { JsonSchema } from './types';
|
|
4
4
|
export declare const CompletionProviderContext: import("react").Context<CompletionProvider | undefined>;
|
|
@@ -25,4 +25,76 @@ export interface RecordEntryContext {
|
|
|
25
25
|
*/
|
|
26
26
|
export type RecordEntryRenderer = (entry: RecordEntryContext) => ReactNode;
|
|
27
27
|
export declare const RecordEntryRendererContext: import("react").Context<RecordEntryRenderer | undefined>;
|
|
28
|
+
/** One top-level key of the expression's input document, with a one-line gloss. */
|
|
29
|
+
export interface ExpressionInputKey {
|
|
30
|
+
readonly name: string;
|
|
31
|
+
readonly gloss: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* What `.` IS for an expression-annotated field, as the form hands it to the
|
|
35
|
+
* injected door. Built by the renderer from the schema's `x-tai42-expression`
|
|
36
|
+
* annotation.
|
|
37
|
+
*
|
|
38
|
+
* Like the annotation type it is built from, this MIRRORS jq-studio's input-shape
|
|
39
|
+
* descriptor without importing it: the schema-form tree names no jq type, in code
|
|
40
|
+
* OR in its declarations, which is what keeps a consumer that never injects a door
|
|
41
|
+
* free of the jq subgraph. `JqField` satisfies it structurally; a test pins that.
|
|
42
|
+
*/
|
|
43
|
+
export interface ExpressionInputShape {
|
|
44
|
+
/** Stable, host-namespaced id, opaque to the door (memoisation/telemetry). */
|
|
45
|
+
readonly id: string;
|
|
46
|
+
/** Short chip label — what `.` is here, e.g. "node envelope". */
|
|
47
|
+
readonly label: string;
|
|
48
|
+
/** One sentence: what `.` is in this field. */
|
|
49
|
+
readonly blurb: string;
|
|
50
|
+
/** The top-level keys of `.`, each with a one-liner. */
|
|
51
|
+
readonly keys: readonly ExpressionInputKey[];
|
|
52
|
+
/** What the expression must RETURN, e.g. "true or false". */
|
|
53
|
+
readonly returns: string;
|
|
54
|
+
/** Per-field caveats. */
|
|
55
|
+
readonly caveats?: readonly string[];
|
|
56
|
+
/** A static skeleton of `.` for the door's test surface. */
|
|
57
|
+
readonly sample?: unknown;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Exactly the props the form hands an injected expression field — no more, so any
|
|
61
|
+
* expression editor can satisfy the contract, and no less, so the form is free to
|
|
62
|
+
* pass all of them. The label/description/error slots are the door's own chrome:
|
|
63
|
+
* an expression field brings its a11y-linked label and helper slots, so the form
|
|
64
|
+
* does NOT wrap it in the usual `Field`.
|
|
65
|
+
*/
|
|
66
|
+
export interface ExpressionFieldProps {
|
|
67
|
+
readonly label: string;
|
|
68
|
+
readonly value: string;
|
|
69
|
+
readonly onChange: (value: string) => void;
|
|
70
|
+
readonly description?: ReactNode;
|
|
71
|
+
readonly error?: ReactNode;
|
|
72
|
+
readonly shape?: ExpressionInputShape;
|
|
73
|
+
/** Render a multiline resting control; the form always asks for one. */
|
|
74
|
+
readonly multiline?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The expression-authoring door a host INJECTS into the form — `JqField`, which the
|
|
78
|
+
* host imports straight from `@tai42/jq-studio`.
|
|
79
|
+
*
|
|
80
|
+
* It is a COMPONENT, rendered as an element, never called as a function: the door
|
|
81
|
+
* owns hooks and state (editor open, worker handle), which only survive as its own
|
|
82
|
+
* element identity. A host may inject a `lazy` door to keep the jq subgraph in a
|
|
83
|
+
* split chunk — the form mounts it inside a Suspense boundary that paints the
|
|
84
|
+
* resting shell while that chunk resolves.
|
|
85
|
+
*/
|
|
86
|
+
export type ExpressionFieldComponent = ComponentType<ExpressionFieldProps>;
|
|
87
|
+
/**
|
|
88
|
+
* The ambient door for the whole form. Absent (the default), an
|
|
89
|
+
* expression-annotated field renders the PLAIN string input, byte-identically to
|
|
90
|
+
* an unannotated one — the jq authoring door is opt-in, because the dynamic import
|
|
91
|
+
* that would fetch it on demand still EMITS its chunks, worker, and wasm into
|
|
92
|
+
* every consumer that bundles the SDK.
|
|
93
|
+
*
|
|
94
|
+
* A host wires it ONCE above its tree (`SchemaEditor`'s preview and
|
|
95
|
+
* `ElicitationForm` render forms a caller does not own the props of, and a plugin
|
|
96
|
+
* page renders its own); the form's own `expressionField` prop overrides it for a
|
|
97
|
+
* single form.
|
|
98
|
+
*/
|
|
99
|
+
export declare const ExpressionFieldContext: import("react").Context<ExpressionFieldComponent | undefined>;
|
|
28
100
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/schema-form/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/schema-form/context.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAI1C,eAAO,MAAM,yBAAyB,yDAA2D,CAAC;AAIlG,eAAO,MAAM,qBAAqB,iCAAkD,CAAC;AAErF,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAC;AAI3E,eAAO,MAAM,0BAA0B,0DAA4D,CAAC;AAEpG,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC7C,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yBAAyB;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IACtC,wEAAwE;IACxE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;GASG;AAIH,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAE3E;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,+DAElC,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Ambient React contexts for the schema-form tree: the optional argument
|
|
3
|
-
* completion provider
|
|
4
|
-
*
|
|
3
|
+
* completion provider, the default media-upload byte cap, the record-entry value
|
|
4
|
+
* renderer, and the expression-field door. A field deep in the tree reads these
|
|
5
|
+
* here rather than every intermediate node drilling the prop.
|
|
5
6
|
*/
|
|
6
7
|
import { createContext } from 'react';
|
|
7
8
|
import { DEFAULT_MAX_UPLOAD_BYTES } from './media';
|
|
@@ -14,4 +15,17 @@ export const MaxUploadBytesContext = createContext(DEFAULT_MAX_UPLOAD_BYTES);
|
|
|
14
15
|
// Ambient record-entry value renderer for the whole form; the record field reads
|
|
15
16
|
// it here so intermediate object/array/record nodes never drill the prop.
|
|
16
17
|
export const RecordEntryRendererContext = createContext(undefined);
|
|
18
|
+
/**
|
|
19
|
+
* The ambient door for the whole form. Absent (the default), an
|
|
20
|
+
* expression-annotated field renders the PLAIN string input, byte-identically to
|
|
21
|
+
* an unannotated one — the jq authoring door is opt-in, because the dynamic import
|
|
22
|
+
* that would fetch it on demand still EMITS its chunks, worker, and wasm into
|
|
23
|
+
* every consumer that bundles the SDK.
|
|
24
|
+
*
|
|
25
|
+
* A host wires it ONCE above its tree (`SchemaEditor`'s preview and
|
|
26
|
+
* `ElicitationForm` render forms a caller does not own the props of, and a plugin
|
|
27
|
+
* page renders its own); the form's own `expressionField` prop overrides it for a
|
|
28
|
+
* single form.
|
|
29
|
+
*/
|
|
30
|
+
export const ExpressionFieldContext = createContext(undefined);
|
|
17
31
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/schema-form/context.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/schema-form/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAInD,6EAA6E;AAC7E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAiC,SAAS,CAAC,CAAC;AAElG,gFAAgF;AAChF,wDAAwD;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAS,wBAAwB,CAAC,CAAC;AAyBrF,iFAAiF;AACjF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAa,CAAkC,SAAS,CAAC,CAAC;AAoEpG;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CACjD,SAAS,CACV,CAAC"}
|
|
@@ -3,11 +3,38 @@
|
|
|
3
3
|
* the tools and interactions features. Public surface: the `SchemaForm`
|
|
4
4
|
* component plus the value/validation helpers a caller needs to seed, validate,
|
|
5
5
|
* and submit.
|
|
6
|
+
*
|
|
7
|
+
* THE FORM-ONLY ENTRY POINT. This module is published as
|
|
8
|
+
* `@tai42/studio-sdk/schema-form` for a consumer that BUNDLES the SDK — a
|
|
9
|
+
* standalone widget rather than a host serving the SDK as a shared module — and
|
|
10
|
+
* wants the form without the barrel: no CSS side effects, and no module graph
|
|
11
|
+
* beyond what the form itself renders.
|
|
12
|
+
*
|
|
13
|
+
* It is also jq-free, and so is the barrel: the visual editor lives in the
|
|
14
|
+
* separately published `@tai42/jq-studio`, which nothing under the SDK imports at
|
|
15
|
+
* runtime. Expression authoring reaches a form only by INJECTION (see
|
|
16
|
+
* `SchemaForm`'s `expressionField` and `ExpressionFieldContext`), so a consumer
|
|
17
|
+
* that never injects a door ships zero jq bytes through either entry point.
|
|
18
|
+
*
|
|
19
|
+
* The design system reaches this entry point through relative imports, so the
|
|
20
|
+
* form renders complete; only the barrel's three CSS side-effect imports stay
|
|
21
|
+
* behind. A consumer importing from here loads the stylesheets it wants
|
|
22
|
+
* explicitly (`@tai42/studio-sdk/tokens.css` and `…/components.css`, plus
|
|
23
|
+
* `…/fonts.css` if it wants the bundled faces).
|
|
24
|
+
*
|
|
25
|
+
* For a BUNDLING consumer only. The shell and every Studio plugin externalise
|
|
26
|
+
* `@tai42/studio-sdk` and resolve it through the served import map, so they must
|
|
27
|
+
* keep importing the barrel: an import map that serves the barrel alone would
|
|
28
|
+
* leave this subpath to be bundled, and the second copy's contexts — the
|
|
29
|
+
* completion provider, the injected expression door — would be different objects
|
|
30
|
+
* from the ones the host provides.
|
|
6
31
|
*/
|
|
7
32
|
export { SchemaForm } from './SchemaForm';
|
|
8
33
|
export type { SchemaFormProps, CompletionProvider } from './SchemaForm';
|
|
9
34
|
export { RecordEntryRendererContext } from './context';
|
|
10
35
|
export type { RecordEntryRenderer, RecordEntryContext } from './context';
|
|
36
|
+
export { ExpressionFieldContext } from './context';
|
|
37
|
+
export type { ExpressionFieldComponent, ExpressionFieldProps, ExpressionInputShape, ExpressionInputKey, } from './context';
|
|
11
38
|
export { SecretRefField } from './SecretRefField';
|
|
12
39
|
export type { SecretRefFieldProps, SecretRef } from './SecretRefField';
|
|
13
40
|
export { defaultValueForSchema } from './default-value';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -3,9 +3,35 @@
|
|
|
3
3
|
* the tools and interactions features. Public surface: the `SchemaForm`
|
|
4
4
|
* component plus the value/validation helpers a caller needs to seed, validate,
|
|
5
5
|
* and submit.
|
|
6
|
+
*
|
|
7
|
+
* THE FORM-ONLY ENTRY POINT. This module is published as
|
|
8
|
+
* `@tai42/studio-sdk/schema-form` for a consumer that BUNDLES the SDK — a
|
|
9
|
+
* standalone widget rather than a host serving the SDK as a shared module — and
|
|
10
|
+
* wants the form without the barrel: no CSS side effects, and no module graph
|
|
11
|
+
* beyond what the form itself renders.
|
|
12
|
+
*
|
|
13
|
+
* It is also jq-free, and so is the barrel: the visual editor lives in the
|
|
14
|
+
* separately published `@tai42/jq-studio`, which nothing under the SDK imports at
|
|
15
|
+
* runtime. Expression authoring reaches a form only by INJECTION (see
|
|
16
|
+
* `SchemaForm`'s `expressionField` and `ExpressionFieldContext`), so a consumer
|
|
17
|
+
* that never injects a door ships zero jq bytes through either entry point.
|
|
18
|
+
*
|
|
19
|
+
* The design system reaches this entry point through relative imports, so the
|
|
20
|
+
* form renders complete; only the barrel's three CSS side-effect imports stay
|
|
21
|
+
* behind. A consumer importing from here loads the stylesheets it wants
|
|
22
|
+
* explicitly (`@tai42/studio-sdk/tokens.css` and `…/components.css`, plus
|
|
23
|
+
* `…/fonts.css` if it wants the bundled faces).
|
|
24
|
+
*
|
|
25
|
+
* For a BUNDLING consumer only. The shell and every Studio plugin externalise
|
|
26
|
+
* `@tai42/studio-sdk` and resolve it through the served import map, so they must
|
|
27
|
+
* keep importing the barrel: an import map that serves the barrel alone would
|
|
28
|
+
* leave this subpath to be bundled, and the second copy's contexts — the
|
|
29
|
+
* completion provider, the injected expression door — would be different objects
|
|
30
|
+
* from the ones the host provides.
|
|
6
31
|
*/
|
|
7
32
|
export { SchemaForm } from './SchemaForm';
|
|
8
33
|
export { RecordEntryRendererContext } from './context';
|
|
34
|
+
export { ExpressionFieldContext } from './context';
|
|
9
35
|
export { SecretRefField } from './SecretRefField';
|
|
10
36
|
export { defaultValueForSchema } from './default-value';
|
|
11
37
|
export { validateAgainstSchema } from './validate';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAOnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The string field renderer. A plain string renders as a text input (its
|
|
3
3
|
* `type` derived from any JSON-Schema `format`); an expression-annotated schema
|
|
4
|
-
* renders the
|
|
5
|
-
*
|
|
6
|
-
* supplies a completion provider, the input is
|
|
4
|
+
* renders the INJECTED expression door (a resting textarea with the visual-editor
|
|
5
|
+
* button) when the host supplies one; a media-annotated schema renders the upload
|
|
6
|
+
* control instead; and when the form supplies a completion provider, the input is
|
|
7
|
+
* backed by argument autocomplete.
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
* `@tai42/jq-studio`
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* import keeps it out of `schema-form`'s static graph and pulls it only when an
|
|
20
|
-
* annotated field actually mounts.
|
|
9
|
+
* NO JQ EDGE. This module — and every module under `schema-form`, and the package
|
|
10
|
+
* barrel above them — names no jq type and imports `@tai42/jq-studio` neither
|
|
11
|
+
* statically NOR dynamically.
|
|
12
|
+
* The jq authoring door drags a heavy subgraph (the xyflow visual editor, a Web
|
|
13
|
+
* Worker entry, and a multi-megabyte wasm engine), and a bundler EMITS that whole
|
|
14
|
+
* subgraph for a dynamic import just as it does for a static one — `lazy` defers
|
|
15
|
+
* the FETCH, never the emission. A consumer that bundles the SDK to render forms
|
|
16
|
+
* would still ship the chunks, the worker file, and the wasm it can never run.
|
|
17
|
+
* So the door arrives from the host instead, through
|
|
18
|
+
* {@link ExpressionFieldContext} (or the form's `expressionField` prop), and an
|
|
19
|
+
* annotated field with no injected door falls back to the plain string input.
|
|
21
20
|
*/
|
|
22
21
|
import type { ReactNode } from 'react';
|
|
23
22
|
import type { ExpressionAnnotation, MediaUpload } from './classify';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-field.d.ts","sourceRoot":"","sources":["../../src/schema-form/string-field.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"string-field.d.ts","sourceRoot":"","sources":["../../src/schema-form/string-field.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAMpE,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,WAAW,EACX,KAAK,EACL,MAAM,EACN,KAAK,EACL,UAAU,EACV,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,GAAG,SAAS,CAqEZ"}
|