UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

125 lines (123 loc) 4.96 kB
/** * DevExtreme (cjs/__internal/core/ai_integration/commands/smartPaste.js) * Version: 25.2.5 * Build date: Fri Feb 20 2026 * * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SmartPasteCommand = void 0; var _color = _interopRequireDefault(require("../../../../color")); var _ui = _interopRequireDefault(require("../../../../ui/widget/ui.errors")); var _base = require("../../../core/ai_integration/commands/base"); var _date = require("../../../core/utils/date"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } class SmartPasteCommand extends _base.BaseCommand { static toTyped(values, desiredType, fieldName) { const errorValue = JSON.stringify(values); const single = values.length <= 1 ? values[0] : void 0; const arr = values.length > 1 ? values : void 0; if (!single && !arr) { return } switch (desiredType) { case "color": if (new _color.default(single).colorIsInvalid) { throw _ui.default.Error("E1064", fieldName, errorValue, "color") } return single; case "boolean": if ("true" === single) { return true } if ("false" === single) { return false } throw _ui.default.Error("E1064", fieldName, errorValue, "boolean"); case "string": if (!single) { throw _ui.default.Error("E1064", fieldName, errorValue, "string") } return single; case "stringArray": if (!arr) { throw _ui.default.Error("E1064", fieldName, errorValue, "string array") } return arr; case "number": if (void 0 === single || !Number.isFinite(parseFloat(single))) { throw _ui.default.Error("E1064", fieldName, errorValue, "number") } return parseFloat(single); case "numberRange": { if (!arr || arr.length > 2) { throw _ui.default.Error("E1064", fieldName, errorValue, "number range") } const numbers = arr.map((v => parseFloat(v))); if (!numbers.every(Number.isFinite)) { throw _ui.default.Error("E1064", fieldName, errorValue, "number range") } return [numbers[0], numbers[1]] } case "date": if (!_date.dateUtilsTs.isValidDate(single)) { throw _ui.default.Error("E1064", fieldName, errorValue, "date") } return new Date(single); case "dateRange": if (!arr || arr.length > 2 || !arr.every(_date.dateUtilsTs.isValidDate)) { throw _ui.default.Error("E1064", fieldName, errorValue, "date range") } return arr.map((v => new Date(v))); default: return arr ?? single } } getTemplateName() { return "smartPaste" } buildPromptData(params) { const fieldsInstructions = this.generateFieldsInstructions(params.fields); return { user: { text: params.text, fields: fieldsInstructions } } } parseResult(response, params) { const result = []; response.split(";;;").forEach((data => { if (!data) { return } const [name, ...rawValues] = data.split(":::"); const values = rawValues.map((value => value.trim())); const fieldParams = params.fields.find((v => v.name === name)); const value = SmartPasteCommand.toTyped(values, null === fieldParams || void 0 === fieldParams ? void 0 : fieldParams.type, null === fieldParams || void 0 === fieldParams ? void 0 : fieldParams.name); if (value) { result.push({ name: name, value: value }) } })); return result } generateFieldsInstructions(fields) { const fieldData = fields.map((field => { const instruction = field.instruction ?? ""; return `fieldName: ${field.name}, format: ${field.format}${instruction?`, instruction: ${instruction}`:""}` })); return fieldData.join(";;;") } } exports.SmartPasteCommand = SmartPasteCommand;