@gisce/react-ooui 2.122.0 → 2.123.0-alpha.2

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/dist/docs.es.js CHANGED
@@ -5,7 +5,7 @@ import { jsxs as P, jsx as p } from "react/jsx-runtime";
5
5
  import { memo as x, useState as v, useMemo as b, useCallback as A, useEffect as k } from "react";
6
6
  import $ from "antd/es/alert/ErrorBoundary";
7
7
  import { NotificationProvider as _ } from "@gisce/react-formiga-components";
8
- import { C as V, a7 as E, T as R, ax as L, i as j } from "./TabContent-5e49760a.mjs";
8
+ import { C as V, a7 as E, T as R, ax as L, i as j } from "./TabContent-a62f46a9.mjs";
9
9
  import "antd";
10
10
  import "@gisce/ooui";
11
11
  import "@ant-design/icons";
@@ -26,6 +26,7 @@ import "lodash/debounce";
26
26
  import "use-deep-compare";
27
27
  import "nanoid";
28
28
  import "@ant-design/colors";
29
+ import "json-with-bigint";
29
30
  import "antd/lib/typography/Title";
30
31
  import "@ant-design/plots";
31
32
  import "react-dom/client";
@@ -687,8 +688,8 @@ ${n}`, [n]), m = A(() => {
687
688
  ) })
688
689
  }
689
690
  ) }) }) : /* @__PURE__ */ p("div", { style: { padding: 16, color: "#666" }, children: "Loading preview..." });
690
- }), Ge = S;
691
+ }), Se = S;
691
692
  export {
692
- Ge as FormPreview
693
+ Se as FormPreview
693
694
  };
694
695
  //# sourceMappingURL=docs.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs.es.js","sources":["../src/docs/BaseMockConnectionProvider.ts","../src/docs/createDocsMockProvider.ts","../src/docs/FormPreview.tsx"],"sourcesContent":["import type { MockViewDefinition, MockRecord, MockRelatedModel } from \"./types\";\n\nexport interface BaseMockConfig {\n model: string;\n view: MockViewDefinition;\n records: MockRecord[];\n relatedModels?: Record<string, MockRelatedModel>;\n}\n\nexport class BaseMockConnectionProvider {\n protected config: BaseMockConfig;\n protected data: MockRecord[];\n\n constructor(config: BaseMockConfig) {\n this.config = config;\n this.data = [...config.records];\n }\n\n async fieldsViewGet({ model, viewType }: any) {\n if (model === this.config.model) {\n return this.config.view;\n }\n if (this.config.relatedModels?.[model]?.view) {\n return this.config.relatedModels[model].view;\n }\n throw new Error(`View not found for model: ${model}`);\n }\n\n async getView({ model, type }: any) {\n if (model === this.config.model) {\n return this.config.view;\n }\n if (this.config.relatedModels?.[model]?.view) {\n return this.config.relatedModels[model].view;\n }\n throw new Error(`View not found for model: ${model}`);\n }\n\n async readObjects(params: {\n model: string;\n ids: number[];\n fieldsToRetrieve?: string[];\n }) {\n const { model, ids } = params;\n if (model === this.config.model) {\n const records = this.data.filter((r) => ids.includes(r.id));\n // Transform one2many/many2many field values to the expected format\n return records.map((record) => this.transformRecordFields(record));\n }\n if (this.config.relatedModels?.[model]) {\n return this.config.relatedModels[model].records.filter((r) =>\n ids.includes(r.id),\n );\n }\n return [];\n }\n\n /**\n * Transform one2many and many2many field values to the format expected by react-ooui.\n * For one2many/many2many fields, the format is:\n * { fields: {...}, items: [{ id, operation: \"original\", values: {...}, treeValues: {...} }] }\n */\n protected transformRecordFields(record: MockRecord): MockRecord {\n const transformed = { ...record };\n const fields = this.config.view.fields;\n\n for (const [fieldName, fieldDef] of Object.entries(fields)) {\n const value = record[fieldName];\n if (!value) continue;\n\n if (fieldDef.type === \"one2many\" || fieldDef.type === \"many2many\") {\n const relationModel = fieldDef.relation;\n if (!relationModel) continue;\n\n const relatedConfig = this.config.relatedModels?.[relationModel];\n if (!relatedConfig) continue;\n\n // Get the IDs from the value\n let relatedIds: number[] = [];\n if (Array.isArray(value)) {\n // Handle many2many format [[6, 0, [ids]]] or one2many format [ids]\n if (\n value.length > 0 &&\n Array.isArray(value[0]) &&\n value[0][0] === 6\n ) {\n relatedIds = value[0][2] || [];\n } else {\n relatedIds = value.filter(\n (v): v is number => typeof v === \"number\",\n );\n }\n }\n\n // Get the related records\n const relatedRecords = relatedConfig.records.filter((r) =>\n relatedIds.includes(r.id),\n );\n\n // Transform to the expected format\n transformed[fieldName] = {\n fields: relatedConfig.view?.fields || {},\n items: relatedRecords.map((relatedRecord) => ({\n id: relatedRecord.id,\n operation: \"original\",\n values: relatedRecord,\n treeValues: relatedRecord,\n })),\n };\n }\n }\n\n return transformed;\n }\n\n async read({ model, ids }: any) {\n return this.readObjects({ model, ids });\n }\n\n async search({ model, fieldsToRetrieve }: any) {\n if (model === this.config.model) {\n // If fieldsToRetrieve is provided, return full records (search+read)\n if (fieldsToRetrieve && fieldsToRetrieve.length > 0) {\n return this.data;\n }\n return this.data.map((r) => r.id);\n }\n // Also check related models\n if (this.config.relatedModels?.[model]) {\n if (fieldsToRetrieve && fieldsToRetrieve.length > 0) {\n return this.config.relatedModels[model].records;\n }\n return this.config.relatedModels[model].records.map((r) => r.id);\n }\n return [];\n }\n\n async searchForTree({ model }: any) {\n if (model === this.config.model) {\n return {\n results: this.data,\n totalItems: async () => this.data.length,\n attrsEvaluated: [],\n items: this.data,\n };\n }\n return {\n results: [],\n totalItems: async () => 0,\n attrsEvaluated: [],\n items: [],\n };\n }\n\n async nameGet({ model, ids }: any) {\n if (model === this.config.model) {\n return this.data\n .filter((r) => ids.includes(r.id))\n .map((r) => [r.id, r.name || `Record ${r.id}`]);\n }\n if (this.config.relatedModels?.[model]) {\n return this.config.relatedModels[model].records\n .filter((r) => ids.includes(r.id))\n .map((r) => [r.id, r.name]);\n }\n return [];\n }\n\n async nameSearch({ model, name, payload, limit }: any) {\n const searchTerm = (payload || name || \"\").toLowerCase();\n\n if (model === this.config.model) {\n const filtered = this.data.filter((r) =>\n (r.name || \"\").toLowerCase().includes(searchTerm),\n );\n return filtered\n .slice(0, limit || 7)\n .map((r) => [r.id, r.name || `Record ${r.id}`]);\n }\n\n if (this.config.relatedModels?.[model]) {\n const filtered = this.config.relatedModels[model].records.filter((r) =>\n r.name.toLowerCase().includes(searchTerm),\n );\n return filtered.slice(0, limit || 7).map((r) => [r.id, r.name]);\n }\n\n return [];\n }\n\n async create({ model, values }: any) {\n if (model === this.config.model) {\n const newId = Math.max(0, ...this.data.map((r) => r.id)) + 1;\n this.data.push({ id: newId, ...values });\n return newId;\n }\n return null;\n }\n\n async write({ model, ids, values }: any) {\n if (model === this.config.model) {\n this.data = this.data.map((r) =>\n ids.includes(r.id) ? { ...r, ...values } : r,\n );\n return true;\n }\n return false;\n }\n\n async unlink({ model, ids }: any) {\n if (model === this.config.model) {\n this.data = this.data.filter((r) => !ids.includes(r.id));\n return true;\n }\n return false;\n }\n\n async defaultGet({ model, extraValues }: any) {\n return extraValues || {};\n }\n\n async executeOnChange(_params?: any) {\n return { value: {}, warning: null, domain: {} };\n }\n\n getPermissions() {\n return { read: true, write: true, create: true, unlink: true };\n }\n\n checkPermission = () => ({\n read: true,\n write: true,\n create: true,\n unlink: true,\n });\n checkPermissions = () => ({\n read: true,\n write: true,\n create: true,\n unlink: true,\n });\n permissions = () => ({ read: true, write: true, create: true, unlink: true });\n\n async fieldsGet() {\n return {};\n }\n async getDefaults(_params?: any) {\n return {};\n }\n async getToolbar(_params?: any) {\n return { action: {}, relate: [], print: [], other: [] };\n }\n async execute(_params?: any): Promise<any> {\n return null;\n }\n async executeButton(_params?: any): Promise<any> {\n return null;\n }\n async executeWorkflow(_params?: any): Promise<any> {\n return null;\n }\n async searchCount({ model }: any) {\n return model === this.config.model ? this.data.length : 0;\n }\n async readGroup() {\n return [];\n }\n async export() {\n return \"\";\n }\n async getTree() {\n return { field_parent: \"\", name: \"\" };\n }\n async getXMLViewContent() {\n return \"\";\n }\n async getActionData() {\n return {};\n }\n async getActionDomain() {\n return [];\n }\n async getDashboardActionData() {\n return {};\n }\n async evalDomain(_params?: any) {\n return [];\n }\n async evalContext() {\n return {};\n }\n async getSessionInfo() {\n return { session_id: \"docs-mock\" };\n }\n async isConnectionOnline() {\n return true;\n }\n async canCreateNewDatabase() {\n return false;\n }\n async createNewDatabase() {\n return false;\n }\n async getDatabaseList() {\n return [];\n }\n async getDistinctValues() {\n return [];\n }\n async copy() {\n return null;\n }\n async getReportData() {\n return null;\n }\n async printReport() {\n return null;\n }\n async call() {\n return null;\n }\n async callWithContext() {\n return null;\n }\n async getSomeCounters() {\n return {};\n }\n async callWizard() {\n return null;\n }\n async callDefaultGetFunction() {\n return {};\n }\n async getRelatedFieldData() {\n return null;\n }\n async getReferencedModels() {\n return [];\n }\n async getTitleFromId() {\n return \"\";\n }\n async treeButOpen() {\n return [[null, null, {}]];\n }\n async readAggregates() {\n return {};\n }\n async writeConcurrencyField() {\n return true;\n }\n async parseConditions() {\n return [];\n }\n async parseCondition() {\n return {};\n }\n async processSearchResults() {\n return { results: [], attrsEvaluated: [] };\n }\n async update({ model, id, values }: any) {\n return this.write({ model, ids: [id], values });\n }\n async readUserViewPrefs() {\n return false;\n }\n async saveUserViewPrefs() {\n return true;\n }\n}\n","import ConnectionProvider from \"../ConnectionProvider\";\nimport {\n BaseMockConnectionProvider,\n type BaseMockConfig,\n} from \"./BaseMockConnectionProvider\";\nimport type { ConnectionProviderType } from \"../types\";\n\nconst modelConfigs: Map<string, BaseMockConfig> = new Map();\nlet multiModelProvider: MultiModelMockProvider | null = null;\n\nclass MultiModelMockProvider extends BaseMockConnectionProvider {\n private configs: Map<string, BaseMockConfig>;\n\n constructor(configs: Map<string, BaseMockConfig>) {\n super({\n model: \"__multi__\",\n view: { view_id: 0, type: \"form\", arch: \"\", fields: {} },\n records: [],\n });\n this.configs = configs;\n }\n\n private getConfigForModel(model: string): BaseMockConfig | undefined {\n return this.configs.get(model);\n }\n\n async fieldsViewGet({ model }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n return config.view;\n }\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]?.view) {\n return cfg.relatedModels[model].view;\n }\n }\n throw new Error(`View not found for model: ${model}`);\n }\n\n async getView({ model, type }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n // If requesting form type and we have a tree view, generate a simple form view\n if (type === \"form\" && config.view.type === \"tree\") {\n return this.generateFormView(config);\n }\n return config.view;\n }\n // Check related models\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n const relatedModel = cfg.relatedModels[model];\n // If requesting form type and we have a tree view, generate a simple form view\n if (type === \"form\" && relatedModel.view?.type === \"tree\") {\n return this.generateFormViewForRelated(relatedModel);\n }\n return relatedModel.view;\n }\n }\n throw new Error(`View not found for model: ${model}`);\n }\n\n private generateFormView(config: BaseMockConfig): any {\n const fields = config.view.fields;\n const fieldNames = Object.keys(fields);\n const archFields = fieldNames.map((f) => `<field name=\"${f}\"/>`).join(\"\");\n return {\n view_id: (config.view.view_id || 0) + 1000,\n type: \"form\" as const,\n arch: `<?xml version=\"1.0\"?><form><group>${archFields}</group></form>`,\n fields,\n };\n }\n\n private generateFormViewForRelated(relatedModel: any): any {\n const fields = relatedModel.view?.fields || {};\n const fieldNames = Object.keys(fields);\n const archFields = fieldNames.map((f) => `<field name=\"${f}\"/>`).join(\"\");\n return {\n view_id: (relatedModel.view?.view_id || 0) + 1000,\n type: \"form\" as const,\n arch: `<?xml version=\"1.0\"?><form><group>${archFields}</group></form>`,\n fields,\n };\n }\n\n async getToolbar({ model, type, context }: any) {\n console.log(`[Docs Preview] getToolbar called: ${model}`, {\n type,\n context,\n });\n return {\n action: {},\n relate: [],\n print: [],\n other: [],\n };\n }\n\n async readObjects(params: {\n model: string;\n ids: number[];\n fieldsToRetrieve?: string[];\n }) {\n const { model, ids } = params;\n const config = this.getConfigForModel(model);\n if (config) {\n const records = config.records.filter((r) => ids.includes(r.id));\n // Transform one2many/many2many field values to the expected format\n return records.map((record) =>\n this.transformX2ManyFields(record, config),\n );\n }\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n return cfg.relatedModels[model].records.filter((r) =>\n ids.includes(r.id),\n );\n }\n }\n return [];\n }\n\n /**\n * Transform one2many and many2many field values to the format expected by react-ooui.\n */\n private transformX2ManyFields(record: any, config: BaseMockConfig): any {\n const transformed = { ...record };\n const fields = config.view.fields;\n\n for (const [fieldName, fieldDef] of Object.entries(fields)) {\n const value = record[fieldName];\n if (!value) continue;\n\n if (fieldDef.type === \"one2many\" || fieldDef.type === \"many2many\") {\n const relationModel = fieldDef.relation;\n if (!relationModel) continue;\n\n const relatedConfig = config.relatedModels?.[relationModel];\n if (!relatedConfig) continue;\n\n // Get the IDs from the value\n let relatedIds: number[] = [];\n if (Array.isArray(value)) {\n // Handle many2many format [[6, 0, [ids]]] or one2many format [ids]\n if (\n value.length > 0 &&\n Array.isArray(value[0]) &&\n value[0][0] === 6\n ) {\n relatedIds = value[0][2] || [];\n } else {\n relatedIds = value.filter(\n (v: any): v is number => typeof v === \"number\",\n );\n }\n }\n\n // Get the related records\n const relatedRecords = relatedConfig.records.filter((r) =>\n relatedIds.includes(r.id),\n );\n\n // Transform to the expected format\n transformed[fieldName] = {\n fields: relatedConfig.view?.fields || {},\n items: relatedRecords.map((relatedRecord) => ({\n id: relatedRecord.id,\n operation: \"original\",\n values: relatedRecord,\n treeValues: relatedRecord,\n })),\n };\n }\n }\n\n return transformed;\n }\n\n async read({ model, ids }: any) {\n return this.readObjects({ model, ids });\n }\n\n async search({ model, params, fieldsToRetrieve }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n // If fieldsToRetrieve is provided, return full records (search+read)\n if (fieldsToRetrieve && fieldsToRetrieve.length > 0) {\n return config.records;\n }\n return config.records.map((r) => r.id);\n }\n // Also check related models\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n if (fieldsToRetrieve && fieldsToRetrieve.length > 0) {\n return cfg.relatedModels[model].records;\n }\n return cfg.relatedModels[model].records.map((r) => r.id);\n }\n }\n return [];\n }\n\n async searchForTree({ model, name_search, params }: any) {\n console.log(`[Docs Preview] searchForTree called:`, {\n model,\n name_search,\n params,\n });\n const searchTerm = (name_search || \"\").toLowerCase();\n const filterByName = (records: any[]) => {\n if (!searchTerm) return records;\n return records.filter((r) =>\n (r.name || \"\").toLowerCase().includes(searchTerm),\n );\n };\n\n const config = this.getConfigForModel(model);\n if (config) {\n const filteredRecords = filterByName(config.records);\n return {\n results: filteredRecords,\n totalItems: async () => filteredRecords.length,\n attrsEvaluated: [],\n items: filteredRecords,\n };\n }\n // Check related models\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n const filteredRecords = filterByName(cfg.relatedModels[model].records);\n return {\n results: filteredRecords,\n totalItems: async () => filteredRecords.length,\n attrsEvaluated: [],\n items: filteredRecords,\n };\n }\n }\n return {\n results: [],\n totalItems: async () => 0,\n attrsEvaluated: [],\n items: [],\n };\n }\n\n async nameGet({ model, ids }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n return config.records\n .filter((r) => ids.includes(r.id))\n .map((r) => [r.id, r.name || `Record ${r.id}`]);\n }\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n return cfg.relatedModels[model].records\n .filter((r) => ids.includes(r.id))\n .map((r) => [r.id, r.name]);\n }\n }\n return [];\n }\n\n async nameSearch({ model, name, payload, limit }: any) {\n const searchTerm = (payload || name || \"\").toLowerCase();\n const config = this.getConfigForModel(model);\n\n if (config) {\n const filtered = config.records.filter((r) =>\n (r.name || \"\").toLowerCase().includes(searchTerm),\n );\n return filtered\n .slice(0, limit || 7)\n .map((r) => [r.id, r.name || `Record ${r.id}`]);\n }\n\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n const filtered = cfg.relatedModels[model].records.filter((r) =>\n r.name.toLowerCase().includes(searchTerm),\n );\n return filtered.slice(0, limit || 7).map((r) => [r.id, r.name]);\n }\n }\n\n return [];\n }\n\n async searchCount({ model, name_search }: any) {\n const searchTerm = (name_search || \"\").toLowerCase();\n const filterByName = (records: any[]) => {\n if (!searchTerm) return records;\n return records.filter((r) =>\n (r.name || \"\").toLowerCase().includes(searchTerm),\n );\n };\n\n const config = this.getConfigForModel(model);\n if (config) {\n return filterByName(config.records).length;\n }\n // Check related models\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n return filterByName(cfg.relatedModels[model].records).length;\n }\n }\n return 0;\n }\n\n // Button execution methods - return empty/success responses for docs preview\n async execute({ model, action, payload, context }: any) {\n console.log(`[Docs Preview] execute called: ${model}.${action}`, {\n payload,\n context,\n });\n\n // Handle name_get action specially - used by Many2one when selecting a record\n if (action === \"name_get\") {\n const ids = Array.isArray(payload) ? payload : [payload];\n return this.nameGet({ model, ids });\n }\n\n // Return empty object - the form will just refresh\n return {};\n }\n\n async executeButton({ model, payload }: any) {\n console.log(`[Docs Preview] executeButton called: ${model}`, { payload });\n return {};\n }\n\n async executeWorkflow({ model, action, payload }: any) {\n console.log(`[Docs Preview] executeWorkflow called: ${model}.${action}`, {\n payload,\n });\n return {};\n }\n\n // Many2one search modal support\n async searchAllIds({ model }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n return config.records.map((r) => r.id);\n }\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n return cfg.relatedModels[model].records.map((r) => r.id);\n }\n }\n return [];\n }\n\n // Write/create methods for form interactions\n async write({ model, ids, values }: any) {\n console.log(`[Docs Preview] write called: ${model}`, { ids, values });\n return true;\n }\n\n async create({ model, values }: any) {\n console.log(`[Docs Preview] create called: ${model}`, { values });\n return 999; // Return a fake new ID\n }\n\n async update({ model, id, values }: any) {\n console.log(`[Docs Preview] update called: ${model}`, { id, values });\n return true;\n }\n\n // Action reading for action buttons\n async getAction({ actionId }: any) {\n console.log(`[Docs Preview] getAction called:`, { actionId });\n return { type: \"ir.actions.act_window_close\" };\n }\n\n // Domain evaluation\n async evalDomain({ domain }: any) {\n return domain || [];\n }\n\n // Default get for new records\n async getDefaults({ model }: any) {\n return {};\n }\n\n // On change handling\n async executeOnChange({ model }: any) {\n return { value: {}, warning: null, domain: {} };\n }\n\n // Method for refreshing record data after actions\n async refresh({ model, id }: any) {\n console.log(`[Docs Preview] refresh called: ${model}`, { id });\n return this.readObjects({ model, ids: [id] });\n }\n}\n\nexport function createDocsMockProvider(\n config: BaseMockConfig,\n): ConnectionProviderType {\n modelConfigs.set(config.model, config);\n multiModelProvider = new MultiModelMockProvider(modelConfigs);\n\n const proxiedProvider = new Proxy(multiModelProvider, {\n get(target, prop, receiver) {\n const value = Reflect.get(target, prop, receiver);\n if (value !== undefined) {\n // Bind methods to target to preserve 'this' context\n if (typeof value === \"function\") {\n return value.bind(target);\n }\n return value;\n }\n if (typeof prop === \"string\" && prop !== \"constructor\") {\n return function () {\n return { read: true, write: true, create: true, unlink: true };\n };\n }\n return value;\n },\n });\n\n ConnectionProvider.init(proxiedProvider as unknown as ConnectionProviderType);\n\n return proxiedProvider as unknown as ConnectionProviderType;\n}\n","import { useEffect, useState, memo, useCallback, useMemo } from \"react\";\nimport ErrorBoundary from \"antd/es/alert/ErrorBoundary\";\nimport {\n NotificationProvider,\n type Locale,\n} from \"@gisce/react-formiga-components\";\nimport { ConfigContextProvider } from \"../context/ConfigContext\";\nimport { ContentRootContext } from \"../context/ContentRootContext\";\nimport { TabManagerContext } from \"../context/TabManagerContext\";\nimport Form from \"../widgets/views/Form\";\nimport { createDocsMockProvider } from \"./createDocsMockProvider\";\nimport type { FormPreviewConfig, MockViewDefinition } from \"./types\";\n\n// Mock processAction for documentation previews\nconst mockProcessAction = async () => {\n console.log(\"[Docs Preview] Action triggered (mock)\");\n return null;\n};\n\n// Mock tab manager context for Many2one folder button etc.\nconst mockTabManagerContext = {\n openAction: (action: any) => {\n console.log(\"[Docs Preview] openAction called:\", action);\n },\n openRelate: (params: any) => {\n console.log(\"[Docs Preview] openRelate called:\", params);\n },\n openDefaultActionForModel: (params: any) => {\n console.log(\"[Docs Preview] openDefaultActionForModel called:\", params);\n },\n openShortcut: (shortcut: any) => {\n console.log(\"[Docs Preview] openShortcut called:\", shortcut);\n },\n activeKey: \"docs-preview\",\n onChangeTab: () => {},\n onRemoveTab: () => {},\n onReorderTabs: () => {},\n tabs: [],\n};\n\ninterface FormPreviewProps extends FormPreviewConfig {\n height?: number | string;\n showFooter?: boolean;\n locale?: Locale;\n}\n\nconst FormPreviewInner = memo(function FormPreviewInner({\n arch,\n fields,\n values,\n model = \"docs.preview\",\n relatedModels = {},\n readOnly = true,\n locale = \"en_US\",\n height,\n showFooter = false,\n}: FormPreviewProps) {\n const [ready, setReady] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const normalizedArch = useMemo(() => {\n return arch.includes(\"<?xml\") ? arch : `<?xml version=\"1.0\"?>\\n${arch}`;\n }, [arch]);\n\n const initializeMockProvider = useCallback(() => {\n try {\n const viewDefinition: MockViewDefinition = {\n view_id: 1,\n type: \"form\",\n arch: normalizedArch,\n fields,\n };\n\n createDocsMockProvider({\n model,\n view: viewDefinition,\n records: [{ id: 1, ...values }],\n relatedModels,\n });\n\n setReady(true);\n } catch (err) {\n setError(\n err instanceof Error\n ? err.message\n : \"Failed to initialize mock provider\",\n );\n }\n }, [normalizedArch, fields, values, model, relatedModels]);\n\n useEffect(() => {\n initializeMockProvider();\n }, [initializeMockProvider]);\n\n if (error) {\n return (\n <div\n style={{\n color: \"red\",\n padding: 16,\n border: \"1px solid red\",\n borderRadius: 4,\n }}\n >\n Error: {error}\n </div>\n );\n }\n\n if (!ready) {\n return <div style={{ padding: 16, color: \"#666\" }}>Loading preview...</div>;\n }\n\n return (\n <ErrorBoundary>\n <NotificationProvider>\n <ConfigContextProvider\n locale={locale}\n erpFeatures={{}}\n userFeatures={{ features: {}, canWriteFeatureFlags: false }}\n globalValues={{}}\n rootContext={{}}\n devMode={false}\n title=\"Documentation Preview\"\n treeMaxLimit={100}\n >\n <TabManagerContext.Provider value={mockTabManagerContext}>\n <ContentRootContext.Provider\n value={{ processAction: mockProcessAction, globalValues: {} }}\n >\n <div style={{ height: height || \"auto\" }}>\n <Form\n model={model}\n id={1}\n showFooter={showFooter}\n readOnly={readOnly}\n rootForm={true}\n parentContext={{}}\n />\n </div>\n </ContentRootContext.Provider>\n </TabManagerContext.Provider>\n </ConfigContextProvider>\n </NotificationProvider>\n </ErrorBoundary>\n );\n});\n\nexport const FormPreview = FormPreviewInner;\n"],"names":["BaseMockConnectionProvider","config","__publicField","model","viewType","_b","_a","type","params","ids","r","record","transformed","fields","fieldName","fieldDef","value","relationModel","relatedConfig","relatedIds","v","relatedRecords","relatedRecord","fieldsToRetrieve","name","payload","limit","searchTerm","values","newId","extraValues","_params","id","modelConfigs","multiModelProvider","MultiModelMockProvider","configs","cfg","relatedModel","archFields","f","context","name_search","filterByName","records","filteredRecords","action","actionId","domain","createDocsMockProvider","proxiedProvider","target","prop","receiver","ConnectionProvider","mockProcessAction","mockTabManagerContext","shortcut","FormPreviewInner","memo","arch","relatedModels","readOnly","locale","height","showFooter","ready","setReady","useState","error","setError","normalizedArch","useMemo","initializeMockProvider","useCallback","err","useEffect","jsxs","jsx","ErrorBoundary","NotificationProvider","ConfigContextProvider","TabManagerContext","ContentRootContext","Form","FormPreview"],"mappings":"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"}
1
+ {"version":3,"file":"docs.es.js","sources":["../src/docs/BaseMockConnectionProvider.ts","../src/docs/createDocsMockProvider.ts","../src/docs/FormPreview.tsx"],"sourcesContent":["import type { MockViewDefinition, MockRecord, MockRelatedModel } from \"./types\";\n\nexport interface BaseMockConfig {\n model: string;\n view: MockViewDefinition;\n records: MockRecord[];\n relatedModels?: Record<string, MockRelatedModel>;\n}\n\nexport class BaseMockConnectionProvider {\n protected config: BaseMockConfig;\n protected data: MockRecord[];\n\n constructor(config: BaseMockConfig) {\n this.config = config;\n this.data = [...config.records];\n }\n\n async fieldsViewGet({ model, viewType }: any) {\n if (model === this.config.model) {\n return this.config.view;\n }\n if (this.config.relatedModels?.[model]?.view) {\n return this.config.relatedModels[model].view;\n }\n throw new Error(`View not found for model: ${model}`);\n }\n\n async getView({ model, type }: any) {\n if (model === this.config.model) {\n return this.config.view;\n }\n if (this.config.relatedModels?.[model]?.view) {\n return this.config.relatedModels[model].view;\n }\n throw new Error(`View not found for model: ${model}`);\n }\n\n async readObjects(params: {\n model: string;\n ids: number[];\n fieldsToRetrieve?: string[];\n }) {\n const { model, ids } = params;\n if (model === this.config.model) {\n const records = this.data.filter((r) => ids.includes(r.id));\n // Transform one2many/many2many field values to the expected format\n return records.map((record) => this.transformRecordFields(record));\n }\n if (this.config.relatedModels?.[model]) {\n return this.config.relatedModels[model].records.filter((r) =>\n ids.includes(r.id),\n );\n }\n return [];\n }\n\n /**\n * Transform one2many and many2many field values to the format expected by react-ooui.\n * For one2many/many2many fields, the format is:\n * { fields: {...}, items: [{ id, operation: \"original\", values: {...}, treeValues: {...} }] }\n */\n protected transformRecordFields(record: MockRecord): MockRecord {\n const transformed = { ...record };\n const fields = this.config.view.fields;\n\n for (const [fieldName, fieldDef] of Object.entries(fields)) {\n const value = record[fieldName];\n if (!value) continue;\n\n if (fieldDef.type === \"one2many\" || fieldDef.type === \"many2many\") {\n const relationModel = fieldDef.relation;\n if (!relationModel) continue;\n\n const relatedConfig = this.config.relatedModels?.[relationModel];\n if (!relatedConfig) continue;\n\n // Get the IDs from the value\n let relatedIds: number[] = [];\n if (Array.isArray(value)) {\n // Handle many2many format [[6, 0, [ids]]] or one2many format [ids]\n if (\n value.length > 0 &&\n Array.isArray(value[0]) &&\n value[0][0] === 6\n ) {\n relatedIds = value[0][2] || [];\n } else {\n relatedIds = value.filter(\n (v): v is number => typeof v === \"number\",\n );\n }\n }\n\n // Get the related records\n const relatedRecords = relatedConfig.records.filter((r) =>\n relatedIds.includes(r.id),\n );\n\n // Transform to the expected format\n transformed[fieldName] = {\n fields: relatedConfig.view?.fields || {},\n items: relatedRecords.map((relatedRecord) => ({\n id: relatedRecord.id,\n operation: \"original\",\n values: relatedRecord,\n treeValues: relatedRecord,\n })),\n };\n }\n }\n\n return transformed;\n }\n\n async read({ model, ids }: any) {\n return this.readObjects({ model, ids });\n }\n\n async search({ model, fieldsToRetrieve }: any) {\n if (model === this.config.model) {\n // If fieldsToRetrieve is provided, return full records (search+read)\n if (fieldsToRetrieve && fieldsToRetrieve.length > 0) {\n return this.data;\n }\n return this.data.map((r) => r.id);\n }\n // Also check related models\n if (this.config.relatedModels?.[model]) {\n if (fieldsToRetrieve && fieldsToRetrieve.length > 0) {\n return this.config.relatedModels[model].records;\n }\n return this.config.relatedModels[model].records.map((r) => r.id);\n }\n return [];\n }\n\n async searchForTree({ model }: any) {\n if (model === this.config.model) {\n return {\n results: this.data,\n totalItems: async () => this.data.length,\n attrsEvaluated: [],\n items: this.data,\n };\n }\n return {\n results: [],\n totalItems: async () => 0,\n attrsEvaluated: [],\n items: [],\n };\n }\n\n async nameGet({ model, ids }: any) {\n if (model === this.config.model) {\n return this.data\n .filter((r) => ids.includes(r.id))\n .map((r) => [r.id, r.name || `Record ${r.id}`]);\n }\n if (this.config.relatedModels?.[model]) {\n return this.config.relatedModels[model].records\n .filter((r) => ids.includes(r.id))\n .map((r) => [r.id, r.name]);\n }\n return [];\n }\n\n async nameSearch({ model, name, payload, limit }: any) {\n const searchTerm = (payload || name || \"\").toLowerCase();\n\n if (model === this.config.model) {\n const filtered = this.data.filter((r) =>\n (r.name || \"\").toLowerCase().includes(searchTerm),\n );\n return filtered\n .slice(0, limit || 7)\n .map((r) => [r.id, r.name || `Record ${r.id}`]);\n }\n\n if (this.config.relatedModels?.[model]) {\n const filtered = this.config.relatedModels[model].records.filter((r) =>\n r.name.toLowerCase().includes(searchTerm),\n );\n return filtered.slice(0, limit || 7).map((r) => [r.id, r.name]);\n }\n\n return [];\n }\n\n async create({ model, values }: any) {\n if (model === this.config.model) {\n const newId = Math.max(0, ...this.data.map((r) => r.id)) + 1;\n this.data.push({ id: newId, ...values });\n return newId;\n }\n return null;\n }\n\n async write({ model, ids, values }: any) {\n if (model === this.config.model) {\n this.data = this.data.map((r) =>\n ids.includes(r.id) ? { ...r, ...values } : r,\n );\n return true;\n }\n return false;\n }\n\n async unlink({ model, ids }: any) {\n if (model === this.config.model) {\n this.data = this.data.filter((r) => !ids.includes(r.id));\n return true;\n }\n return false;\n }\n\n async defaultGet({ model, extraValues }: any) {\n return extraValues || {};\n }\n\n async executeOnChange(_params?: any) {\n return { value: {}, warning: null, domain: {} };\n }\n\n getPermissions() {\n return { read: true, write: true, create: true, unlink: true };\n }\n\n checkPermission = () => ({\n read: true,\n write: true,\n create: true,\n unlink: true,\n });\n checkPermissions = () => ({\n read: true,\n write: true,\n create: true,\n unlink: true,\n });\n permissions = () => ({ read: true, write: true, create: true, unlink: true });\n\n async fieldsGet() {\n return {};\n }\n async getDefaults(_params?: any) {\n return {};\n }\n async getToolbar(_params?: any) {\n return { action: {}, relate: [], print: [], other: [] };\n }\n async execute(_params?: any): Promise<any> {\n return null;\n }\n async executeButton(_params?: any): Promise<any> {\n return null;\n }\n async executeWorkflow(_params?: any): Promise<any> {\n return null;\n }\n async searchCount({ model }: any) {\n return model === this.config.model ? this.data.length : 0;\n }\n async readGroup() {\n return [];\n }\n async export() {\n return \"\";\n }\n async getTree() {\n return { field_parent: \"\", name: \"\" };\n }\n async getXMLViewContent() {\n return \"\";\n }\n async getActionData() {\n return {};\n }\n async getActionDomain() {\n return [];\n }\n async getDashboardActionData() {\n return {};\n }\n async evalDomain(_params?: any) {\n return [];\n }\n async evalContext() {\n return {};\n }\n async getSessionInfo() {\n return { session_id: \"docs-mock\" };\n }\n async isConnectionOnline() {\n return true;\n }\n async canCreateNewDatabase() {\n return false;\n }\n async createNewDatabase() {\n return false;\n }\n async getDatabaseList() {\n return [];\n }\n async getDistinctValues() {\n return [];\n }\n async copy() {\n return null;\n }\n async getReportData() {\n return null;\n }\n async printReport() {\n return null;\n }\n async call() {\n return null;\n }\n async callWithContext() {\n return null;\n }\n async getSomeCounters() {\n return {};\n }\n async callWizard() {\n return null;\n }\n async callDefaultGetFunction() {\n return {};\n }\n async getRelatedFieldData() {\n return null;\n }\n async getReferencedModels() {\n return [];\n }\n async getTitleFromId() {\n return \"\";\n }\n async treeButOpen() {\n return [[null, null, {}]];\n }\n async readAggregates() {\n return {};\n }\n async writeConcurrencyField() {\n return true;\n }\n async parseConditions() {\n return [];\n }\n async parseCondition() {\n return {};\n }\n async processSearchResults() {\n return { results: [], attrsEvaluated: [] };\n }\n async update({ model, id, values }: any) {\n return this.write({ model, ids: [id], values });\n }\n async readUserViewPrefs() {\n return false;\n }\n async saveUserViewPrefs() {\n return true;\n }\n}\n","import ConnectionProvider from \"../ConnectionProvider\";\nimport {\n BaseMockConnectionProvider,\n type BaseMockConfig,\n} from \"./BaseMockConnectionProvider\";\nimport type { ConnectionProviderType } from \"../types\";\n\nconst modelConfigs: Map<string, BaseMockConfig> = new Map();\nlet multiModelProvider: MultiModelMockProvider | null = null;\n\nclass MultiModelMockProvider extends BaseMockConnectionProvider {\n private configs: Map<string, BaseMockConfig>;\n\n constructor(configs: Map<string, BaseMockConfig>) {\n super({\n model: \"__multi__\",\n view: { view_id: 0, type: \"form\", arch: \"\", fields: {} },\n records: [],\n });\n this.configs = configs;\n }\n\n private getConfigForModel(model: string): BaseMockConfig | undefined {\n return this.configs.get(model);\n }\n\n async fieldsViewGet({ model }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n return config.view;\n }\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]?.view) {\n return cfg.relatedModels[model].view;\n }\n }\n throw new Error(`View not found for model: ${model}`);\n }\n\n async getView({ model, type }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n // If requesting form type and we have a tree view, generate a simple form view\n if (type === \"form\" && config.view.type === \"tree\") {\n return this.generateFormView(config);\n }\n return config.view;\n }\n // Check related models\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n const relatedModel = cfg.relatedModels[model];\n // If requesting form type and we have a tree view, generate a simple form view\n if (type === \"form\" && relatedModel.view?.type === \"tree\") {\n return this.generateFormViewForRelated(relatedModel);\n }\n return relatedModel.view;\n }\n }\n throw new Error(`View not found for model: ${model}`);\n }\n\n private generateFormView(config: BaseMockConfig): any {\n const fields = config.view.fields;\n const fieldNames = Object.keys(fields);\n const archFields = fieldNames.map((f) => `<field name=\"${f}\"/>`).join(\"\");\n return {\n view_id: (config.view.view_id || 0) + 1000,\n type: \"form\" as const,\n arch: `<?xml version=\"1.0\"?><form><group>${archFields}</group></form>`,\n fields,\n };\n }\n\n private generateFormViewForRelated(relatedModel: any): any {\n const fields = relatedModel.view?.fields || {};\n const fieldNames = Object.keys(fields);\n const archFields = fieldNames.map((f) => `<field name=\"${f}\"/>`).join(\"\");\n return {\n view_id: (relatedModel.view?.view_id || 0) + 1000,\n type: \"form\" as const,\n arch: `<?xml version=\"1.0\"?><form><group>${archFields}</group></form>`,\n fields,\n };\n }\n\n async getToolbar({ model, type, context }: any) {\n console.log(`[Docs Preview] getToolbar called: ${model}`, {\n type,\n context,\n });\n return {\n action: {},\n relate: [],\n print: [],\n other: [],\n };\n }\n\n async readObjects(params: {\n model: string;\n ids: number[];\n fieldsToRetrieve?: string[];\n }) {\n const { model, ids } = params;\n const config = this.getConfigForModel(model);\n if (config) {\n const records = config.records.filter((r) => ids.includes(r.id));\n // Transform one2many/many2many field values to the expected format\n return records.map((record) =>\n this.transformX2ManyFields(record, config),\n );\n }\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n return cfg.relatedModels[model].records.filter((r) =>\n ids.includes(r.id),\n );\n }\n }\n return [];\n }\n\n /**\n * Transform one2many and many2many field values to the format expected by react-ooui.\n */\n private transformX2ManyFields(record: any, config: BaseMockConfig): any {\n const transformed = { ...record };\n const fields = config.view.fields;\n\n for (const [fieldName, fieldDef] of Object.entries(fields)) {\n const value = record[fieldName];\n if (!value) continue;\n\n if (fieldDef.type === \"one2many\" || fieldDef.type === \"many2many\") {\n const relationModel = fieldDef.relation;\n if (!relationModel) continue;\n\n const relatedConfig = config.relatedModels?.[relationModel];\n if (!relatedConfig) continue;\n\n // Get the IDs from the value\n let relatedIds: number[] = [];\n if (Array.isArray(value)) {\n // Handle many2many format [[6, 0, [ids]]] or one2many format [ids]\n if (\n value.length > 0 &&\n Array.isArray(value[0]) &&\n value[0][0] === 6\n ) {\n relatedIds = value[0][2] || [];\n } else {\n relatedIds = value.filter(\n (v: any): v is number => typeof v === \"number\",\n );\n }\n }\n\n // Get the related records\n const relatedRecords = relatedConfig.records.filter((r) =>\n relatedIds.includes(r.id),\n );\n\n // Transform to the expected format\n transformed[fieldName] = {\n fields: relatedConfig.view?.fields || {},\n items: relatedRecords.map((relatedRecord) => ({\n id: relatedRecord.id,\n operation: \"original\",\n values: relatedRecord,\n treeValues: relatedRecord,\n })),\n };\n }\n }\n\n return transformed;\n }\n\n async read({ model, ids }: any) {\n return this.readObjects({ model, ids });\n }\n\n async search({ model, params, fieldsToRetrieve }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n // If fieldsToRetrieve is provided, return full records (search+read)\n if (fieldsToRetrieve && fieldsToRetrieve.length > 0) {\n return config.records;\n }\n return config.records.map((r) => r.id);\n }\n // Also check related models\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n if (fieldsToRetrieve && fieldsToRetrieve.length > 0) {\n return cfg.relatedModels[model].records;\n }\n return cfg.relatedModels[model].records.map((r) => r.id);\n }\n }\n return [];\n }\n\n async searchForTree({ model, name_search, params }: any) {\n console.log(`[Docs Preview] searchForTree called:`, {\n model,\n name_search,\n params,\n });\n const searchTerm = (name_search || \"\").toLowerCase();\n const filterByName = (records: any[]) => {\n if (!searchTerm) return records;\n return records.filter((r) =>\n (r.name || \"\").toLowerCase().includes(searchTerm),\n );\n };\n\n const config = this.getConfigForModel(model);\n if (config) {\n const filteredRecords = filterByName(config.records);\n return {\n results: filteredRecords,\n totalItems: async () => filteredRecords.length,\n attrsEvaluated: [],\n items: filteredRecords,\n };\n }\n // Check related models\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n const filteredRecords = filterByName(cfg.relatedModels[model].records);\n return {\n results: filteredRecords,\n totalItems: async () => filteredRecords.length,\n attrsEvaluated: [],\n items: filteredRecords,\n };\n }\n }\n return {\n results: [],\n totalItems: async () => 0,\n attrsEvaluated: [],\n items: [],\n };\n }\n\n async nameGet({ model, ids }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n return config.records\n .filter((r) => ids.includes(r.id))\n .map((r) => [r.id, r.name || `Record ${r.id}`]);\n }\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n return cfg.relatedModels[model].records\n .filter((r) => ids.includes(r.id))\n .map((r) => [r.id, r.name]);\n }\n }\n return [];\n }\n\n async nameSearch({ model, name, payload, limit }: any) {\n const searchTerm = (payload || name || \"\").toLowerCase();\n const config = this.getConfigForModel(model);\n\n if (config) {\n const filtered = config.records.filter((r) =>\n (r.name || \"\").toLowerCase().includes(searchTerm),\n );\n return filtered\n .slice(0, limit || 7)\n .map((r) => [r.id, r.name || `Record ${r.id}`]);\n }\n\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n const filtered = cfg.relatedModels[model].records.filter((r) =>\n r.name.toLowerCase().includes(searchTerm),\n );\n return filtered.slice(0, limit || 7).map((r) => [r.id, r.name]);\n }\n }\n\n return [];\n }\n\n async searchCount({ model, name_search }: any) {\n const searchTerm = (name_search || \"\").toLowerCase();\n const filterByName = (records: any[]) => {\n if (!searchTerm) return records;\n return records.filter((r) =>\n (r.name || \"\").toLowerCase().includes(searchTerm),\n );\n };\n\n const config = this.getConfigForModel(model);\n if (config) {\n return filterByName(config.records).length;\n }\n // Check related models\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n return filterByName(cfg.relatedModels[model].records).length;\n }\n }\n return 0;\n }\n\n // Button execution methods - return empty/success responses for docs preview\n async execute({ model, action, payload, context }: any) {\n console.log(`[Docs Preview] execute called: ${model}.${action}`, {\n payload,\n context,\n });\n\n // Handle name_get action specially - used by Many2one when selecting a record\n if (action === \"name_get\") {\n const ids = Array.isArray(payload) ? payload : [payload];\n return this.nameGet({ model, ids });\n }\n\n // Return empty object - the form will just refresh\n return {};\n }\n\n async executeButton({ model, payload }: any) {\n console.log(`[Docs Preview] executeButton called: ${model}`, { payload });\n return {};\n }\n\n async executeWorkflow({ model, action, payload }: any) {\n console.log(`[Docs Preview] executeWorkflow called: ${model}.${action}`, {\n payload,\n });\n return {};\n }\n\n // Many2one search modal support\n async searchAllIds({ model }: any) {\n const config = this.getConfigForModel(model);\n if (config) {\n return config.records.map((r) => r.id);\n }\n for (const cfg of this.configs.values()) {\n if (cfg.relatedModels?.[model]) {\n return cfg.relatedModels[model].records.map((r) => r.id);\n }\n }\n return [];\n }\n\n // Write/create methods for form interactions\n async write({ model, ids, values }: any) {\n console.log(`[Docs Preview] write called: ${model}`, { ids, values });\n return true;\n }\n\n async create({ model, values }: any) {\n console.log(`[Docs Preview] create called: ${model}`, { values });\n return 999; // Return a fake new ID\n }\n\n async update({ model, id, values }: any) {\n console.log(`[Docs Preview] update called: ${model}`, { id, values });\n return true;\n }\n\n // Action reading for action buttons\n async getAction({ actionId }: any) {\n console.log(`[Docs Preview] getAction called:`, { actionId });\n return { type: \"ir.actions.act_window_close\" };\n }\n\n // Domain evaluation\n async evalDomain({ domain }: any) {\n return domain || [];\n }\n\n // Default get for new records\n async getDefaults({ model }: any) {\n return {};\n }\n\n // On change handling\n async executeOnChange({ model }: any) {\n return { value: {}, warning: null, domain: {} };\n }\n\n // Method for refreshing record data after actions\n async refresh({ model, id }: any) {\n console.log(`[Docs Preview] refresh called: ${model}`, { id });\n return this.readObjects({ model, ids: [id] });\n }\n}\n\nexport function createDocsMockProvider(\n config: BaseMockConfig,\n): ConnectionProviderType {\n modelConfigs.set(config.model, config);\n multiModelProvider = new MultiModelMockProvider(modelConfigs);\n\n const proxiedProvider = new Proxy(multiModelProvider, {\n get(target, prop, receiver) {\n const value = Reflect.get(target, prop, receiver);\n if (value !== undefined) {\n // Bind methods to target to preserve 'this' context\n if (typeof value === \"function\") {\n return value.bind(target);\n }\n return value;\n }\n if (typeof prop === \"string\" && prop !== \"constructor\") {\n return function () {\n return { read: true, write: true, create: true, unlink: true };\n };\n }\n return value;\n },\n });\n\n ConnectionProvider.init(proxiedProvider as unknown as ConnectionProviderType);\n\n return proxiedProvider as unknown as ConnectionProviderType;\n}\n","import { useEffect, useState, memo, useCallback, useMemo } from \"react\";\nimport ErrorBoundary from \"antd/es/alert/ErrorBoundary\";\nimport {\n NotificationProvider,\n type Locale,\n} from \"@gisce/react-formiga-components\";\nimport { ConfigContextProvider } from \"../context/ConfigContext\";\nimport { ContentRootContext } from \"../context/ContentRootContext\";\nimport { TabManagerContext } from \"../context/TabManagerContext\";\nimport Form from \"../widgets/views/Form\";\nimport { createDocsMockProvider } from \"./createDocsMockProvider\";\nimport type { FormPreviewConfig, MockViewDefinition } from \"./types\";\n\n// Mock processAction for documentation previews\nconst mockProcessAction = async () => {\n console.log(\"[Docs Preview] Action triggered (mock)\");\n return null;\n};\n\n// Mock tab manager context for Many2one folder button etc.\nconst mockTabManagerContext = {\n openAction: (action: any) => {\n console.log(\"[Docs Preview] openAction called:\", action);\n },\n openRelate: (params: any) => {\n console.log(\"[Docs Preview] openRelate called:\", params);\n },\n openDefaultActionForModel: (params: any) => {\n console.log(\"[Docs Preview] openDefaultActionForModel called:\", params);\n },\n openShortcut: (shortcut: any) => {\n console.log(\"[Docs Preview] openShortcut called:\", shortcut);\n },\n activeKey: \"docs-preview\",\n onChangeTab: () => {},\n onRemoveTab: () => {},\n onReorderTabs: () => {},\n tabs: [],\n};\n\ninterface FormPreviewProps extends FormPreviewConfig {\n height?: number | string;\n showFooter?: boolean;\n locale?: Locale;\n}\n\nconst FormPreviewInner = memo(function FormPreviewInner({\n arch,\n fields,\n values,\n model = \"docs.preview\",\n relatedModels = {},\n readOnly = true,\n locale = \"en_US\",\n height,\n showFooter = false,\n}: FormPreviewProps) {\n const [ready, setReady] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const normalizedArch = useMemo(() => {\n return arch.includes(\"<?xml\") ? arch : `<?xml version=\"1.0\"?>\\n${arch}`;\n }, [arch]);\n\n const initializeMockProvider = useCallback(() => {\n try {\n const viewDefinition: MockViewDefinition = {\n view_id: 1,\n type: \"form\",\n arch: normalizedArch,\n fields,\n };\n\n createDocsMockProvider({\n model,\n view: viewDefinition,\n records: [{ id: 1, ...values }],\n relatedModels,\n });\n\n setReady(true);\n } catch (err) {\n setError(\n err instanceof Error\n ? err.message\n : \"Failed to initialize mock provider\",\n );\n }\n }, [normalizedArch, fields, values, model, relatedModels]);\n\n useEffect(() => {\n initializeMockProvider();\n }, [initializeMockProvider]);\n\n if (error) {\n return (\n <div\n style={{\n color: \"red\",\n padding: 16,\n border: \"1px solid red\",\n borderRadius: 4,\n }}\n >\n Error: {error}\n </div>\n );\n }\n\n if (!ready) {\n return <div style={{ padding: 16, color: \"#666\" }}>Loading preview...</div>;\n }\n\n return (\n <ErrorBoundary>\n <NotificationProvider>\n <ConfigContextProvider\n locale={locale}\n erpFeatures={{}}\n userFeatures={{ features: {}, canWriteFeatureFlags: false }}\n globalValues={{}}\n rootContext={{}}\n devMode={false}\n title=\"Documentation Preview\"\n treeMaxLimit={100}\n >\n <TabManagerContext.Provider value={mockTabManagerContext}>\n <ContentRootContext.Provider\n value={{ processAction: mockProcessAction, globalValues: {} }}\n >\n <div style={{ height: height || \"auto\" }}>\n <Form\n model={model}\n id={1}\n showFooter={showFooter}\n readOnly={readOnly}\n rootForm={true}\n parentContext={{}}\n />\n </div>\n </ContentRootContext.Provider>\n </TabManagerContext.Provider>\n </ConfigContextProvider>\n </NotificationProvider>\n </ErrorBoundary>\n );\n});\n\nexport const FormPreview = FormPreviewInner;\n"],"names":["BaseMockConnectionProvider","config","__publicField","model","viewType","_b","_a","type","params","ids","r","record","transformed","fields","fieldName","fieldDef","value","relationModel","relatedConfig","relatedIds","v","relatedRecords","relatedRecord","fieldsToRetrieve","name","payload","limit","searchTerm","values","newId","extraValues","_params","id","modelConfigs","multiModelProvider","MultiModelMockProvider","configs","cfg","relatedModel","archFields","f","context","name_search","filterByName","records","filteredRecords","action","actionId","domain","createDocsMockProvider","proxiedProvider","target","prop","receiver","ConnectionProvider","mockProcessAction","mockTabManagerContext","shortcut","FormPreviewInner","memo","arch","relatedModels","readOnly","locale","height","showFooter","ready","setReady","useState","error","setError","normalizedArch","useMemo","initializeMockProvider","useCallback","err","useEffect","jsxs","jsx","ErrorBoundary","NotificationProvider","ConfigContextProvider","TabManagerContext","ContentRootContext","Form","FormPreview"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"formHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/formHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AA8B/C,eAAO,MAAM,aAAa,WAAY,GAAG,UAAU,GAAG,QAGrD,CAAC;AAEF,eAAO,MAAM,gBAAgB;YAKnB,GAAG;YACH,GAAG;YACH,GAAG;SA+DZ,CAAC;AAEF,eAAO,MAAM,eAAe;mBAKX,MAAM,EAAE;cACb,QAAQ;WACX,MAAM,EAAE;aAOhB,CAAC;AAEF,eAAO,MAAM,iBAAiB;kBAId,GAAG;YACT,GAAG;SAaZ,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAAY,GAAG,EAAE,QAc/C,CAAC;AAEF,eAAO,MAAM,kBAAkB;6BAKJ,GAAG,EAAE;YACtB,GAAG;mBACI,GAAG;SA8BnB,CAAC;AAEF,eAAO,MAAM,iBAAiB,iBAAkB,GAAG,EAAE;;;CA0BpD,CAAC;AAMF,eAAO,MAAM,uBAAuB;YAI1B,GAAG;YACH,GAAG;;;CAqBZ,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,OAAO,KAAG,MAEjD,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,MAAM,KAAG,MAAM,GAAG,SAexD,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAC9B,MAAM,cACF,MAAM;;;CAOlB,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAAW,MAAM,0BAiCpD,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,MAAM,UAAU,GAAG,KAAG,MAIxD,CAAC"}
1
+ {"version":3,"file":"formHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/formHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+B/C,eAAO,MAAM,aAAa,WAAY,GAAG,UAAU,GAAG,QAGrD,CAAC;AAEF,eAAO,MAAM,gBAAgB;YAKnB,GAAG;YACH,GAAG;YACH,GAAG;SA+DZ,CAAC;AAEF,eAAO,MAAM,eAAe;mBAKX,MAAM,EAAE;cACb,QAAQ;WACX,MAAM,EAAE;aAOhB,CAAC;AAEF,eAAO,MAAM,iBAAiB;kBAId,GAAG;YACT,GAAG;SAaZ,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAAY,GAAG,EAAE,QAc/C,CAAC;AAEF,eAAO,MAAM,kBAAkB;6BAKJ,GAAG,EAAE;YACtB,GAAG;mBACI,GAAG;SA8BnB,CAAC;AAEF,eAAO,MAAM,iBAAiB,iBAAkB,GAAG,EAAE;;;CA0BpD,CAAC;AAMF,eAAO,MAAM,uBAAuB;YAI1B,GAAG;YACH,GAAG;;;CAqBZ,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAW,OAAO,KAAG,MAEjD,CAAC;AAEF,eAAO,MAAM,eAAe,UAAW,MAAM,KAAG,MAAM,GAAG,SAexD,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAC9B,MAAM,cACF,MAAM;;;CAOlB,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAAW,MAAM,0BAiCpD,CAAC;AAEF,eAAO,MAAM,YAAY,SAAU,MAAM,UAAU,GAAG,KAAG,MAIxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shareUrlHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/shareUrlHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,SAAS,CAAC;AAOpD,eAAO,MAAM,kBAAkB,WAAY,UAAU,WAsBpD,CAAC;AAyDF,eAAO,MAAM,mBAAmB,WAAY,GAAG;;CAO9C,CAAC"}
1
+ {"version":3,"file":"shareUrlHelper.d.ts","sourceRoot":"","sources":["../../src/helpers/shareUrlHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,SAAS,CAAC;AAQpD,eAAO,MAAM,kBAAkB,WAAY,UAAU,WAsBpD,CAAC;AAyDF,eAAO,MAAM,mBAAmB,WAAY,GAAG;;CAO9C,CAAC"}
@@ -1,5 +1,5 @@
1
- import { T as V, a as ee, s as te, C as oe, F as ae, A as re } from "./TabContent-5e49760a.mjs";
2
- import { an as kt, ap as _t, ao as Rt, al as Ft, am as Dt, u as At, a4 as Mt, aj as Pt, a9 as Ot, $ as Nt, t as Lt, d as Bt, B as Kt, b as Yt, g as Vt, ab as Wt, c as Ht, a0 as $t, ac as jt, a1 as Gt, a3 as Ut, a7 as Xt, y as zt, ak as Qt, z as qt, K as Jt, D as Zt, q as eo, E as to, a5 as oo, a6 as ao, a2 as ro, j as io, k as no, i as so, ai as lo, o as co, J as uo, H as mo, G as po, a8 as fo, x as go, w as ho, I as vo, L as yo, aq as Co, M as bo, e as xo, X as wo, aw as To, W as So, N as Io, O as Eo, P as ko, ad as _o, ae as Ro, Y as Fo, R as Do, v as Ao, h as Mo, p as Po, n as Oo, S as No, m as Lo, aa as Bo, _ as Ko, Z as Yo, V as Vo, Q as Wo, l as Ho, r as $o, f as jo, ah as Go, U as Uo, af as Xo, au as zo, ag as Qo, av as qo, ar as Jo, at as Zo, as as ea } from "./TabContent-5e49760a.mjs";
1
+ import { T as V, a as ee, s as te, C as oe, F as ae, A as re } from "./TabContent-a62f46a9.mjs";
2
+ import { an as _t, ap as Rt, ao as Ft, al as Dt, am as At, u as Mt, a4 as Pt, aj as Ot, a9 as Nt, $ as Lt, t as Bt, d as Kt, B as Yt, b as Vt, g as Wt, ab as Ht, c as $t, a0 as jt, ac as Gt, a1 as Ut, a3 as Xt, a7 as zt, y as Qt, ak as qt, z as Jt, K as Zt, D as eo, q as to, E as oo, a5 as ao, a6 as ro, a2 as io, j as no, k as so, i as lo, ai as co, o as uo, J as mo, H as po, G as fo, a8 as go, x as ho, w as vo, I as yo, L as Co, aq as bo, M as xo, e as wo, X as To, aw as So, W as Io, N as Eo, O as ko, P as _o, ad as Ro, ae as Fo, Y as Do, R as Ao, v as Mo, h as Po, p as Oo, n as No, S as Lo, m as Bo, aa as Ko, _ as Yo, Z as Vo, V as Wo, Q as Ho, l as $o, r as jo, f as Go, ah as Uo, U as Xo, af as zo, au as Qo, ag as qo, av as Jo, ar as Zo, at as ea, as as ta } from "./TabContent-a62f46a9.mjs";
3
3
  import { jsxs as K, jsx as s, Fragment as G } from "react/jsx-runtime";
4
4
  import { useState as D, useRef as W, useMemo as _, useEffect as Y, useCallback as d, useContext as H } from "react";
5
5
  import { useSensors as ie, useSensor as j, PointerSensor as ne, KeyboardSensor as se, DndContext as le, closestCenter as ce } from "@dnd-kit/core";
@@ -8,7 +8,7 @@ import { useSortable as ue, sortableKeyboardCoordinates as me, SortableContext a
8
8
  import { CloseOutlined as ge, TableOutlined as he, FormOutlined as ve, EditOutlined as ye } from "@ant-design/icons";
9
9
  import { Input as Ce, theme as U, Tooltip as be } from "antd";
10
10
  import { useLocale as xe, FavouriteButton as we } from "@gisce/react-formiga-components";
11
- import { default as oa } from "dayjs";
11
+ import { default as aa } from "dayjs";
12
12
  import "@gisce/ooui";
13
13
  import "interweave";
14
14
  import "dayjs/plugin/advancedFormat";
@@ -26,6 +26,7 @@ import "lodash/debounce";
26
26
  import "use-deep-compare";
27
27
  import "nanoid";
28
28
  import "@ant-design/colors";
29
+ import "json-with-bigint";
29
30
  import "antd/lib/typography/Title";
30
31
  import "@ant-design/plots";
31
32
  import "react-dom/client";
@@ -213,7 +214,7 @@ function Se(R) {
213
214
  }
214
215
  );
215
216
  }
216
- function wt() {
217
+ function Tt() {
217
218
  const R = H(
218
219
  V
219
220
  ), {
@@ -319,13 +320,13 @@ function wt() {
319
320
  }
320
321
  ) }) });
321
322
  }
322
- function Tt() {
323
+ function St() {
323
324
  const R = H(
324
325
  V
325
326
  ), { tabs: r } = R || {}, l = (r == null ? void 0 : r.map((c) => /* @__PURE__ */ s(ee, { tab: c }, c.key))) || null;
326
327
  return /* @__PURE__ */ s(G, { children: l });
327
328
  }
328
- const { useToken: Ie } = U, St = (R) => {
329
+ const { useToken: Ie } = U, It = (R) => {
329
330
  const {
330
331
  onRetrieveShortcuts: r,
331
332
  onCheckIsFavourite: l,
@@ -507,94 +508,94 @@ const { useToken: Ie } = U, St = (R) => {
507
508
  ] });
508
509
  };
509
510
  export {
510
- kt as ACTION_TYPE_REPORT,
511
- _t as ACTION_TYPE_UPDATE_TOKEN,
512
- Rt as ACTION_TYPE_URL,
513
- Ft as ACTION_TYPE_WINDOW,
514
- Dt as ACTION_TYPE_WINDOW_CLOSE,
511
+ _t as ACTION_TYPE_REPORT,
512
+ Rt as ACTION_TYPE_UPDATE_TOKEN,
513
+ Ft as ACTION_TYPE_URL,
514
+ Dt as ACTION_TYPE_WINDOW,
515
+ At as ACTION_TYPE_WINDOW_CLOSE,
515
516
  re as ACTION_TYPE_WIZARD,
516
- At as ActionBar,
517
- Mt as ActionView,
518
- Pt as ActionViewProvider,
519
- Ot as Alert,
520
- Nt as ArrowStepsField,
521
- Lt as Binary,
522
- Bt as Boolean,
523
- Kt as Button,
524
- Yt as ButtonGroup,
525
- Vt as Card,
526
- Wt as Carousel,
527
- Ht as Char,
528
- $t as CodeEditor,
529
- jt as ColorPicker,
530
- Gt as CommentsTimelineField,
531
- Ut as ConfigContext,
532
- Xt as ConfigContextProvider,
517
+ Mt as ActionBar,
518
+ Pt as ActionView,
519
+ Ot as ActionViewProvider,
520
+ Nt as Alert,
521
+ Lt as ArrowStepsField,
522
+ Bt as Binary,
523
+ Kt as Boolean,
524
+ Yt as Button,
525
+ Vt as ButtonGroup,
526
+ Wt as Card,
527
+ Ht as Carousel,
528
+ $t as Char,
529
+ jt as CodeEditor,
530
+ Gt as ColorPicker,
531
+ Ut as CommentsTimelineField,
532
+ Xt as ConfigContext,
533
+ zt as ConfigContextProvider,
533
534
  oe as ConnectionProvider,
534
- zt as ContentRootProvider,
535
- Tt as CurrentTabContent,
536
- Qt as DEFAULT_SEARCH_LIMIT,
537
- qt as Dashboard,
538
- Jt as DashboardGrid,
539
- Zt as Date,
540
- eo as DateTime,
541
- to as Email,
542
- oo as ErpAllFeatureKeys,
543
- ao as ErpFeatureKeys,
544
- ro as ExportModal,
545
- St as FavouriteButton,
546
- io as Float,
547
- no as FloatTime,
548
- so as Form,
549
- lo as FormActionView,
550
- co as FormModal,
551
- uo as GraphCard,
552
- mo as GraphIndicator,
553
- po as Group,
554
- fo as HTMLPreview,
555
- go as Icon,
556
- ho as Image,
557
- vo as Integer,
558
- yo as Label,
559
- Co as MODEL_ACTIONS,
560
- bo as Many2one,
561
- xo as Many2oneLazy,
562
- wo as Markdown,
563
- To as MarkdownInput,
564
- So as MultiCheckbox,
565
- Io as Notebook,
566
- Eo as One2many,
567
- ko as ProgressBar,
568
- _o as QRCode,
569
- Ro as QRCodeInput,
570
- Fo as Radio,
571
- Do as Reference,
572
- Ao as RootView,
573
- Mo as SearchFilter,
574
- Po as SearchModal,
575
- Oo as SearchTree,
576
- No as Selection,
577
- Lo as Separator,
578
- Bo as Spinner,
579
- Ko as Steps,
580
- Yo as Switch,
535
+ Qt as ContentRootProvider,
536
+ St as CurrentTabContent,
537
+ qt as DEFAULT_SEARCH_LIMIT,
538
+ Jt as Dashboard,
539
+ Zt as DashboardGrid,
540
+ eo as Date,
541
+ to as DateTime,
542
+ oo as Email,
543
+ ao as ErpAllFeatureKeys,
544
+ ro as ErpFeatureKeys,
545
+ io as ExportModal,
546
+ It as FavouriteButton,
547
+ no as Float,
548
+ so as FloatTime,
549
+ lo as Form,
550
+ co as FormActionView,
551
+ uo as FormModal,
552
+ mo as GraphCard,
553
+ po as GraphIndicator,
554
+ fo as Group,
555
+ go as HTMLPreview,
556
+ ho as Icon,
557
+ vo as Image,
558
+ yo as Integer,
559
+ Co as Label,
560
+ bo as MODEL_ACTIONS,
561
+ xo as Many2one,
562
+ wo as Many2oneLazy,
563
+ To as Markdown,
564
+ So as MarkdownInput,
565
+ Io as MultiCheckbox,
566
+ Eo as Notebook,
567
+ ko as One2many,
568
+ _o as ProgressBar,
569
+ Ro as QRCode,
570
+ Fo as QRCodeInput,
571
+ Do as Radio,
572
+ Ao as Reference,
573
+ Mo as RootView,
574
+ Po as SearchFilter,
575
+ Oo as SearchModal,
576
+ No as SearchTree,
577
+ Lo as Selection,
578
+ Bo as Separator,
579
+ Ko as Spinner,
580
+ Yo as Steps,
581
+ Vo as Switch,
581
582
  Se as Tab,
582
- wt as TabSelector,
583
- Vo as Tag,
584
- Wo as Tags,
585
- Ho as Text,
586
- $o as Time,
587
- jo as Tree,
588
- Go as TreeActionView,
589
- Uo as Url,
590
- Xo as UserAllFeatureKeys,
591
- zo as UserAvatar,
592
- Qo as UserFeatureKeys,
593
- oa as dayjs,
583
+ Tt as TabSelector,
584
+ Wo as Tag,
585
+ Ho as Tags,
586
+ $o as Text,
587
+ jo as Time,
588
+ Go as Tree,
589
+ Uo as TreeActionView,
590
+ Xo as Url,
591
+ zo as UserAllFeatureKeys,
592
+ Qo as UserAvatar,
593
+ qo as UserFeatureKeys,
594
+ aa as dayjs,
594
595
  te as showConfirmDialog,
595
- qo as transformMentions,
596
- Jo as useBrowserVisibility,
597
- Zo as useLocalizedInput,
598
- ea as useNumberFormatter
596
+ Jo as transformMentions,
597
+ Zo as useBrowserVisibility,
598
+ ea as useLocalizedInput,
599
+ ta as useNumberFormatter
599
600
  };
600
601
  //# sourceMappingURL=react-ooui.es.js.map