import * as __ctHelpers from "commontools"; import { pattern, UI } from "commontools"; interface State { count: number; price: number; discount: number; quantity: number; } export default pattern((state) => { return { [UI]: (
Count + 1: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { count: { type: "number", asOpaque: true } }, required: ["count"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { count: state.count } }, ({ state }) => state.count + 1)}
Count - 1: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { count: { type: "number", asOpaque: true } }, required: ["count"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { count: state.count } }, ({ state }) => state.count - 1)}
Count * 2: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { count: { type: "number", asOpaque: true } }, required: ["count"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { count: state.count } }, ({ state }) => state.count * 2)}
Price / 2: {__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 }) => state.price / 2)}
Count % 3: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { count: { type: "number", asOpaque: true } }, required: ["count"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { count: state.count } }, ({ state }) => state.count % 3)}
Discounted Price: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { price: { type: "number", asOpaque: true }, discount: { type: "number", asOpaque: true } }, required: ["price", "discount"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { price: state.price, discount: state.discount } }, ({ state }) => state.price - (state.price * state.discount))}
Total: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { price: { type: "number", asOpaque: true }, quantity: { type: "number", asOpaque: true } }, required: ["price", "quantity"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { price: state.price, quantity: state.quantity } }, ({ state }) => state.price * state.quantity)}
With Tax (8%): {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { price: { type: "number", asOpaque: true }, quantity: { type: "number", asOpaque: true } }, required: ["price", "quantity"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { price: state.price, quantity: state.quantity } }, ({ state }) => (state.price * state.quantity) * 1.08)}
Complex: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { count: { type: "number", asOpaque: true }, quantity: { type: "number", asOpaque: true }, price: { type: "number", asOpaque: true }, discount: { type: "number", asOpaque: true } }, required: ["count", "quantity", "price", "discount"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { count: state.count, quantity: state.quantity, price: state.price, discount: state.discount } }, ({ state }) => (state.count + state.quantity) * state.price - (state.price * state.discount))}
Count³: {__ctHelpers.derive({ type: "object", properties: { state: { type: "object", properties: { count: { type: "number", asOpaque: true } }, required: ["count"] } }, required: ["state"] } as const satisfies __ctHelpers.JSONSchema, { type: "number" } as const satisfies __ctHelpers.JSONSchema, { state: { count: state.count } }, ({ state }) => state.count * state.count * state.count)}
Price Range: ${__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 }) => state.price - 10)} - ${__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 }) => state.price + 10)}