"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useJsonEditorModel = void 0; var _monaco = require("@kbn/monaco"); var _react = require("react"); var _create_initialized_object = require("../utils/create_initialized_object"); var _use_observability_ai_assistant_chat_service = require("./use_observability_ai_assistant_chat_service"); /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ const { editor, languages, Uri } = _monaco.monaco; const SCHEMA_URI = 'http://elastic.co/foo.json'; const modelUri = Uri.parse(SCHEMA_URI); const useJsonEditorModel = ({ functionName, initialJson }) => { const chatService = (0, _use_observability_ai_assistant_chat_service.useObservabilityAIAssistantChatService)(); const functionDefinition = chatService.getFunctions().find(func => func.options.name === functionName); return (0, _react.useMemo)(() => { if (!functionDefinition) { return {}; } const schema = { ...functionDefinition.options.parameters }; const initialJsonString = initialJson ? initialJson : functionDefinition.options.parameters.properties ? JSON.stringify((0, _create_initialized_object.createInitializedObject)(functionDefinition.options.parameters), null, 4) : ''; languages.json.jsonDefaults.setDiagnosticsOptions({ validate: true, schemas: [{ uri: SCHEMA_URI, fileMatch: [String(modelUri)], schema }] }); let model = editor.getModel(modelUri); if (model === null) { model = editor.createModel(initialJsonString, 'json', modelUri); } else { model.setValue(initialJsonString); } return { model, initialJsonString }; }, [functionDefinition, initialJson]); }; exports.useJsonEditorModel = useJsonEditorModel;