import * as __ctHelpers from "commontools"; import { pattern, UI } from "commontools"; interface State { a: number; b: number; price: number; text: string; values: number[]; name: string; float: string; } export default pattern((state) => { return { [UI]: (
Max: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { a: { type: "number", asOpaque: true }, b: { type: "number", asOpaque: true } }, required: ["a", "b"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { a: state.a, b: state.b } }, ({ state }) => Math.max(state.a, state.b))}
Min: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { a: { type: "number", asOpaque: true } }, required: ["a"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { a: state.a } }, ({ state }) => Math.min(state.a, 10))}
Abs: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { a: { type: "number", asOpaque: true }, b: { type: "number", asOpaque: true } }, required: ["a", "b"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { a: state.a, b: state.b } }, ({ state }) => Math.abs(state.a - state.b))}
Round: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { price: { type: "number", asOpaque: true } }, required: ["price"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { price: state.price } }, ({ state }) => Math.round(state.price))}
Floor: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { price: { type: "number", asOpaque: true } }, required: ["price"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { price: state.price } }, ({ state }) => Math.floor(state.price))}
Ceiling: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { price: { type: "number", asOpaque: true } }, required: ["price"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { price: state.price } }, ({ state }) => Math.ceil(state.price))}
Square root: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { a: { type: "number", asOpaque: true } }, required: ["a"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { a: state.a } }, ({ state }) => Math.sqrt(state.a))}
Uppercase: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { name: { type: "string", asOpaque: true } }, required: ["name"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { name: state.name } }, ({ state }) => state.name.toUpperCase())}
Lowercase: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { name: { type: "string", asOpaque: true } }, required: ["name"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { name: state.name } }, ({ state }) => state.name.toLowerCase())}
Substring: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { text: { type: "string", asOpaque: true } }, required: ["text"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { text: state.text } }, ({ state }) => state.text.substring(0, 5))}
Replace: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { text: { type: "string", asOpaque: true } }, required: ["text"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { text: state.text } }, ({ state }) => state.text.replace("old", "new"))}
Includes: {__ctHelpers.ifElse({ type: "boolean" } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { "enum": ["Yes", "No"] } as const satisfies __ctHelpers.JSONSchema, __ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { text: { type: "string", asOpaque: true } }, required: ["text"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "boolean" } as const satisfies __ctHelpers.JSONSchema, { state: { text: state.text } }, ({ state }) => state.text.includes("test")), "Yes", "No")}
Starts with: {__ctHelpers.ifElse({ type: "boolean" } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { "enum": ["Yes", "No"] } as const satisfies __ctHelpers.JSONSchema, __ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { name: { type: "string", asOpaque: true } }, required: ["name"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "boolean" } as const satisfies __ctHelpers.JSONSchema, { state: { name: state.name } }, ({ state }) => state.name.startsWith("A")), "Yes", "No")}
To Fixed: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { price: { type: "number", asOpaque: true } }, required: ["price"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { price: state.price } }, ({ state }) => state.price.toFixed(2))}
To Precision: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { price: { type: "number", asOpaque: true } }, required: ["price"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { price: state.price } }, ({ state }) => state.price.toPrecision(4))}
Parse Int: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { float: { type: "string", asOpaque: true } }, required: ["float"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { float: state.float } }, ({ state }) => parseInt(state.float))}
Parse Float: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { float: { type: "string", asOpaque: true } }, required: ["float"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { float: state.float } }, ({ state }) => parseFloat(state.float))}
Sum: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { values: { type: "array", items: { type: "number" }, asOpaque: true } }, required: ["values"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { values: state.values } }, ({ state }) => state.values.reduce((a, b) => a + b, 0))}
Max value: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { values: { type: "array", items: { type: "number" }, asOpaque: true } }, required: ["values"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { values: state.values } }, ({ state }) => Math.max(...state.values))}
Joined: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { values: { type: "array", items: { type: "number" }, asOpaque: true } }, required: ["values"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { values: state.values } }, ({ state }) => state.values.join(", "))}
Multiple args: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { a: { type: "number", asOpaque: true } }, required: ["a"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { a: state.a } }, ({ state }) => Math.pow(state.a, 2))}
Nested calls: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { a: { type: "number", asOpaque: true } }, required: ["a"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { a: state.a } }, ({ state }) => Math.round(Math.sqrt(state.a)))}
Chained calls: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { name: { type: "string", asOpaque: true } }, required: ["name"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "string" } as const satisfies __ctHelpers.JSONSchema, { state: { name: state.name } }, ({ state }) => state.name.trim().toUpperCase())}
With expressions: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { a: { type: "number", asOpaque: true }, b: { type: "number", asOpaque: true } }, required: ["a", "b"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { a: state.a, b: state.b } }, ({ state }) => Math.max(state.a + 1, state.b * 2))}