UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

299 lines (296 loc) • 14.9 kB
import { assertSwiftUIValue } from "./generated/swiftui.mjs"; function flattenMenuItems(items, iosVersion = 17) { const result = []; const ids = /* @__PURE__ */ new Set(); const append = (items2, parentId, disabled, hidden) => { for (const item of items2) { const input = item; switch (item.type) { case "action": { for (const name of Object.keys(input)) { if (name !== "type" && name !== "id" && name !== "title" && name !== "systemImage" && name !== "role" && name !== "disabled" && name !== "hidden" && name !== "help" && name !== "menuActionDismissBehavior") throw new Error("Unsupported Swift.Menu " + item.type + " property: " + name); } const id = input.id ?? ""; if (input.id == null) throw new Error("Swift.Menu " + item.type + " requires id"); if (typeof id !== "string") throw new Error("Invalid Swift.Menu id"); const title = input.title ?? ""; if (input.title == null) throw new Error("Swift.Menu " + item.type + " requires title"); if (typeof title !== "string") throw new Error("Invalid Swift.Menu title"); const systemImage = input.systemImage ?? ""; if (typeof systemImage !== "string") throw new Error("Invalid Swift.Menu systemImage"); const role = input.role ?? ""; if (typeof role !== "string") throw new Error("Invalid Swift.Menu role"); if (role !== "") assertSwiftUIValue("ButtonRole", role, iosVersion); const disabledValue = input.disabled ?? false; if (typeof disabledValue !== "boolean") throw new Error("Invalid Swift.Menu disabled"); const hiddenValue = input.hidden ?? false; if (typeof hiddenValue !== "boolean") throw new Error("Invalid Swift.Menu hidden"); const help = input.help ?? ""; if (typeof help !== "string") throw new Error("Invalid Swift.Menu help"); const menuActionDismissBehavior = input.menuActionDismissBehavior ?? ""; if (typeof menuActionDismissBehavior !== "string") throw new Error("Invalid Swift.Menu menuActionDismissBehavior"); if (menuActionDismissBehavior !== "") assertSwiftUIValue("MenuActionDismissBehavior", menuActionDismissBehavior, iosVersion); if (!item.id || ids.has(item.id)) throw new Error("Swift.Menu requires unique, nonempty item ids: \"" + item.id + "\""); ids.add(item.id); result.push({ id, title, systemImage, role, disabled: disabled || disabledValue, hidden: hidden || hiddenValue, help, controlGroupStyle: "automatic", values: [], selection: "", menuOrder: "", menuActionDismissBehavior, parentId, type: item.type }); break; } case "toggle": { for (const name of Object.keys(input)) { if (name !== "type" && name !== "id" && name !== "title" && name !== "systemImage" && name !== "values" && name !== "disabled" && name !== "hidden" && name !== "help" && name !== "menuActionDismissBehavior") throw new Error("Unsupported Swift.Menu " + item.type + " property: " + name); } const id = input.id ?? ""; if (input.id == null) throw new Error("Swift.Menu " + item.type + " requires id"); if (typeof id !== "string") throw new Error("Invalid Swift.Menu id"); const title = input.title ?? ""; if (input.title == null) throw new Error("Swift.Menu " + item.type + " requires title"); if (typeof title !== "string") throw new Error("Invalid Swift.Menu title"); const systemImage = input.systemImage ?? ""; if (typeof systemImage !== "string") throw new Error("Invalid Swift.Menu systemImage"); const values = input.values ?? []; if (input.values == null) throw new Error("Swift.Menu " + item.type + " requires values"); if (!Array.isArray(values) || !values.length || values.some((v) => typeof v !== "boolean")) throw new Error("Swift.Menu toggle values must be a nonempty boolean array"); const disabledValue = input.disabled ?? false; if (typeof disabledValue !== "boolean") throw new Error("Invalid Swift.Menu disabled"); const hiddenValue = input.hidden ?? false; if (typeof hiddenValue !== "boolean") throw new Error("Invalid Swift.Menu hidden"); const help = input.help ?? ""; if (typeof help !== "string") throw new Error("Invalid Swift.Menu help"); const menuActionDismissBehavior = input.menuActionDismissBehavior ?? ""; if (typeof menuActionDismissBehavior !== "string") throw new Error("Invalid Swift.Menu menuActionDismissBehavior"); if (menuActionDismissBehavior !== "") assertSwiftUIValue("MenuActionDismissBehavior", menuActionDismissBehavior, iosVersion); if (!item.id || ids.has(item.id)) throw new Error("Swift.Menu requires unique, nonempty item ids: \"" + item.id + "\""); ids.add(item.id); result.push({ id, title, systemImage, role: "", disabled: disabled || disabledValue, hidden: hidden || hiddenValue, help, controlGroupStyle: "automatic", values, selection: "", menuOrder: "", menuActionDismissBehavior, parentId, type: item.type }); break; } case "submenu": { for (const name of Object.keys(input)) { if (name !== "type" && name !== "id" && name !== "title" && name !== "systemImage" && name !== "disabled" && name !== "hidden" && name !== "help" && name !== "menuOrder" && name !== "menuActionDismissBehavior" && name !== "children") throw new Error("Unsupported Swift.Menu " + item.type + " property: " + name); } const id = input.id ?? ""; if (input.id == null) throw new Error("Swift.Menu " + item.type + " requires id"); if (typeof id !== "string") throw new Error("Invalid Swift.Menu id"); const title = input.title ?? ""; if (input.title == null) throw new Error("Swift.Menu " + item.type + " requires title"); if (typeof title !== "string") throw new Error("Invalid Swift.Menu title"); const systemImage = input.systemImage ?? ""; if (typeof systemImage !== "string") throw new Error("Invalid Swift.Menu systemImage"); const disabledValue = input.disabled ?? false; if (typeof disabledValue !== "boolean") throw new Error("Invalid Swift.Menu disabled"); const hiddenValue = input.hidden ?? false; if (typeof hiddenValue !== "boolean") throw new Error("Invalid Swift.Menu hidden"); const help = input.help ?? ""; if (typeof help !== "string") throw new Error("Invalid Swift.Menu help"); const menuOrder = input.menuOrder ?? ""; if (typeof menuOrder !== "string") throw new Error("Invalid Swift.Menu menuOrder"); if (menuOrder !== "") assertSwiftUIValue("MenuOrder", menuOrder, iosVersion); const menuActionDismissBehavior = input.menuActionDismissBehavior ?? ""; if (typeof menuActionDismissBehavior !== "string") throw new Error("Invalid Swift.Menu menuActionDismissBehavior"); if (menuActionDismissBehavior !== "") assertSwiftUIValue("MenuActionDismissBehavior", menuActionDismissBehavior, iosVersion); if (!item.id || ids.has(item.id)) throw new Error("Swift.Menu requires unique, nonempty item ids: \"" + item.id + "\""); ids.add(item.id); result.push({ id, title, systemImage, role: "", disabled: disabled || disabledValue, hidden: hidden || hiddenValue, help, controlGroupStyle: "automatic", values: [], selection: "", menuOrder, menuActionDismissBehavior, parentId, type: item.type }); if (!Array.isArray(input.children)) throw new Error("Swift.Menu " + item.type + " requires children"); append(input.children, item.id, Boolean(disabled || disabledValue), Boolean(hidden || hiddenValue)); break; } case "section": { for (const name of Object.keys(input)) { if (name !== "type" && name !== "id" && name !== "title" && name !== "hidden" && name !== "children") throw new Error("Unsupported Swift.Menu " + item.type + " property: " + name); } const id = input.id ?? ""; if (input.id == null) throw new Error("Swift.Menu " + item.type + " requires id"); if (typeof id !== "string") throw new Error("Invalid Swift.Menu id"); const title = input.title ?? ""; if (typeof title !== "string") throw new Error("Invalid Swift.Menu title"); const hiddenValue = input.hidden ?? false; if (typeof hiddenValue !== "boolean") throw new Error("Invalid Swift.Menu hidden"); if (!item.id || ids.has(item.id)) throw new Error("Swift.Menu requires unique, nonempty item ids: \"" + item.id + "\""); ids.add(item.id); result.push({ id, title, systemImage: "", role: "", disabled: disabled || false, hidden: hidden || hiddenValue, help: "", controlGroupStyle: "automatic", values: [], selection: "", menuOrder: "", menuActionDismissBehavior: "", parentId, type: item.type }); if (!Array.isArray(input.children)) throw new Error("Swift.Menu " + item.type + " requires children"); append(input.children, item.id, Boolean(disabled || false), Boolean(hidden || hiddenValue)); break; } case "controlGroup": { for (const name of Object.keys(input)) { if (name !== "type" && name !== "id" && name !== "title" && name !== "systemImage" && name !== "disabled" && name !== "hidden" && name !== "controlGroupStyle" && name !== "children") throw new Error("Unsupported Swift.Menu " + item.type + " property: " + name); } const id = input.id ?? ""; if (input.id == null) throw new Error("Swift.Menu " + item.type + " requires id"); if (typeof id !== "string") throw new Error("Invalid Swift.Menu id"); const title = input.title ?? ""; if (typeof title !== "string") throw new Error("Invalid Swift.Menu title"); const systemImage = input.systemImage ?? ""; if (typeof systemImage !== "string") throw new Error("Invalid Swift.Menu systemImage"); const disabledValue = input.disabled ?? false; if (typeof disabledValue !== "boolean") throw new Error("Invalid Swift.Menu disabled"); const hiddenValue = input.hidden ?? false; if (typeof hiddenValue !== "boolean") throw new Error("Invalid Swift.Menu hidden"); const controlGroupStyle = input.controlGroupStyle ?? "automatic"; if (typeof controlGroupStyle !== "string") throw new Error("Invalid Swift.Menu controlGroupStyle"); assertSwiftUIValue("ControlGroupStyle", controlGroupStyle, iosVersion); if (!item.id || ids.has(item.id)) throw new Error("Swift.Menu requires unique, nonempty item ids: \"" + item.id + "\""); ids.add(item.id); result.push({ id, title, systemImage, role: "", disabled: disabled || disabledValue, hidden: hidden || hiddenValue, help: "", controlGroupStyle, values: [], selection: "", menuOrder: "", menuActionDismissBehavior: "", parentId, type: item.type }); if (!Array.isArray(input.children)) throw new Error("Swift.Menu " + item.type + " requires children"); append(input.children, item.id, Boolean(disabled || disabledValue), Boolean(hidden || hiddenValue)); break; } case "picker": { for (const name of Object.keys(input)) { if (name !== "type" && name !== "id" && name !== "title" && name !== "systemImage" && name !== "selection" && name !== "disabled" && name !== "hidden" && name !== "help" && name !== "children") throw new Error("Unsupported Swift.Menu " + item.type + " property: " + name); } const id = input.id ?? ""; if (input.id == null) throw new Error("Swift.Menu " + item.type + " requires id"); if (typeof id !== "string") throw new Error("Invalid Swift.Menu id"); const title = input.title ?? ""; if (input.title == null) throw new Error("Swift.Menu " + item.type + " requires title"); if (typeof title !== "string") throw new Error("Invalid Swift.Menu title"); const systemImage = input.systemImage ?? ""; if (typeof systemImage !== "string") throw new Error("Invalid Swift.Menu systemImage"); const selection = input.selection ?? ""; if (input.selection == null) throw new Error("Swift.Menu " + item.type + " requires selection"); if (typeof selection !== "string") throw new Error("Invalid Swift.Menu selection"); const disabledValue = input.disabled ?? false; if (typeof disabledValue !== "boolean") throw new Error("Invalid Swift.Menu disabled"); const hiddenValue = input.hidden ?? false; if (typeof hiddenValue !== "boolean") throw new Error("Invalid Swift.Menu hidden"); const help = input.help ?? ""; if (typeof help !== "string") throw new Error("Invalid Swift.Menu help"); if (!item.id || ids.has(item.id)) throw new Error("Swift.Menu requires unique, nonempty item ids: \"" + item.id + "\""); ids.add(item.id); result.push({ id, title, systemImage, role: "", disabled: disabled || disabledValue, hidden: hidden || hiddenValue, help, controlGroupStyle: "automatic", values: [], selection, menuOrder: "", menuActionDismissBehavior: "", parentId, type: item.type }); if (!Array.isArray(input.children)) throw new Error("Swift.Menu " + item.type + " requires children"); if (!input.children.length || input.children.some((child) => child?.type !== "action")) throw new Error("Swift.Menu picker children must be actions"); if (!input.children.some((child) => child.id === input.selection)) throw new Error("Swift.Menu picker selection must match a child id"); append(input.children, item.id, Boolean(disabled || disabledValue), Boolean(hidden || hiddenValue)); break; } case "divider": { for (const name of Object.keys(input)) { if (name !== "type" && name !== "id") throw new Error("Unsupported Swift.Menu " + item.type + " property: " + name); } const id = input.id ?? ""; if (input.id == null) throw new Error("Swift.Menu " + item.type + " requires id"); if (typeof id !== "string") throw new Error("Invalid Swift.Menu id"); if (!item.id || ids.has(item.id)) throw new Error("Swift.Menu requires unique, nonempty item ids: \"" + item.id + "\""); ids.add(item.id); result.push({ id, title: "", systemImage: "", role: "", disabled: disabled || false, hidden: hidden || false, help: "", controlGroupStyle: "automatic", values: [], selection: "", menuOrder: "", menuActionDismissBehavior: "", parentId, type: item.type }); break; } default: throw new Error("Unknown Swift.Menu item type: " + input.type); } } }; append(items, "", false, false); return result; } export { flattenMenuItems }; //# sourceMappingURL=menuItems.mjs.map