import * as __ctHelpers from "commontools"; import { pattern, UI } from "commontools"; interface State { firstName: string; lastName: string; title: string; message: string; count: number; } export default pattern((state) => { return { [UI]: (
{__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { firstName: { type: "string", asOpaque: true }, lastName: { type: "string", asOpaque: true } }, required: ["firstName", "lastName"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { firstName: state.firstName, lastName: state.lastName } }, ({ state }) => state.firstName + state.lastName)}
{__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { firstName: { type: "string", asOpaque: true } }, required: ["firstName"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { firstName: state.firstName } }, ({ state }) => "Hello, " + state.firstName + "!")}
{__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { firstName: { type: "string", asOpaque: true } }, required: ["firstName"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { firstName: state.firstName } }, ({ state }) => `Welcome, ${state.firstName}!`)}
{__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { firstName: { type: "string", asOpaque: true }, lastName: { type: "string", asOpaque: true } }, required: ["firstName", "lastName"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { firstName: state.firstName, lastName: state.lastName } }, ({ state }) => `Full name: ${state.firstName} ${state.lastName}`)}
{__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { title: { type: "string", asOpaque: true }, firstName: { type: "string", asOpaque: true }, lastName: { type: "string", asOpaque: true } }, required: ["title", "firstName", "lastName"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { title: state.title, firstName: state.firstName, lastName: state.lastName } }, ({ state }) => `${state.title}: ${state.firstName} ${state.lastName}`)}
Uppercase: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { firstName: { type: "string", asOpaque: true } }, required: ["firstName"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { firstName: state.firstName } }, ({ state }) => state.firstName.toUpperCase())}
Lowercase: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { title: { type: "string", asOpaque: true } }, required: ["title"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { title: state.title } }, ({ state }) => state.title.toLowerCase())}
Length: {state.message.length}
Substring: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { message: { type: "string", asOpaque: true } }, required: ["message"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { message: state.message } }, ({ state }) => state.message.substring(0, 5))}
{__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { firstName: { type: "string", asOpaque: true }, count: { type: "number", asOpaque: true } }, required: ["firstName", "count"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { firstName: state.firstName, count: state.count } }, ({ state }) => state.firstName + " has " + state.count + " items")}
{__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { firstName: { type: "string", asOpaque: true }, count: { type: "number", asOpaque: true } }, required: ["firstName", "count"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { firstName: state.firstName, count: state.count } }, ({ state }) => `${state.firstName} has ${state.count} items`)}
Count as string: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { count: { type: "number", asOpaque: true } }, required: ["count"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { count: state.count } }, ({ state }) => "Count: " + state.count)}