jedison 0.3.21 → 0.3.23

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.
@@ -1 +1 @@
1
- {"version":3,"file":"jedison.js","sources":["../../src/helpers/utils.js","../../src/helpers/schema.js","../../src/schema-generator/schema-generator.js","../../src/validation/constrains/allOf.js","../../src/validation/constrains/minLength.js","../../src/validation/constrains/anyOf.js","../../src/validation/constrains/enum.js","../../src/validation/constrains/exclusiveMaximum.js","../../src/validation/constrains/exclusiveMinimum.js","../../src/validation/constrains/format.js","../../src/validation/constrains/items.js","../../src/validation/constrains/maxItems.js","../../src/validation/constrains/maxLength.js","../../src/validation/constrains/maxProperties.js","../../src/validation/constrains/minimum.js","../../src/validation/constrains/minItems.js","../../src/validation/constrains/minProperties.js","../../src/validation/constrains/multipleOf.js","../../src/validation/constrains/not.js","../../src/validation/constrains/oneOf.js","../../src/validation/constrains/pattern.js","../../src/validation/constrains/patternProperties.js","../../src/validation/constrains/properties.js","../../src/validation/constrains/required.js","../../src/validation/constrains/type.js","../../src/validation/constrains/maximum.js","../../src/validation/constrains/uniqueItems.js","../../src/validation/constrains/additionalProperties.js","../../src/validation/drafts/draft-04.js","../../src/validation/constrains/const.js","../../src/validation/constrains/contains.js","../../src/validation/constrains/dependentRequired.js","../../src/validation/constrains/dependentSchemas.js","../../src/validation/constrains/if-then-else.js","../../src/validation/constrains/prefixItems.js","../../src/validation/drafts/draft-06.js","../../src/validation/drafts/draft-07.js","../../src/validation/constrains/unevaluatedProperties.js","../../src/validation/drafts/draft-2019-09.js","../../src/validation/constrains/propertyNames.js","../../src/validation/drafts/draft-2020-12.js","../../src/validation/validator.js","../../src/event-emitter.js","../../src/instances/instance.js","../../src/editors/editor.js","../../src/editors/if-then-else.js","../../src/instances/if-then-else.js","../../src/instances/multiple.js","../../src/instances/boolean.js","../../src/instances/object.js","../../src/instances/array.js","../../src/instances/string.js","../../src/instances/number.js","../../src/instances/null.js","../../src/themes/icons/icons.js","../../src/editors/boolean.js","../../src/editors/boolean-radios.js","../../src/editors/boolean-select.js","../../src/editors/boolean-checkbox.js","../../src/editors/string.js","../../src/editors/string-radios.js","../../src/editors/string-select.js","../../src/editors/string-textarea.js","../../src/editors/string-awesomplete.js","../../src/editors/string-emoji-button.js","../../src/editors/string-input.js","../../src/editors/number.js","../../src/editors/number-radios.js","../../src/editors/number-select.js","../../src/editors/number-input.js","../../src/editors/number-input-nullable.js","../../src/editors/object.js","../../src/editors/object-grid.js","../../src/editors/object-nav.js","../../src/editors/array.js","../../src/editors/array-table.js","../../src/editors/array-table-object.js","../../src/editors/array-choices.js","../../src/editors/array-nav.js","../../src/editors/multiple.js","../../src/editors/null.js","../../src/editors/string-simplemde.js","../../src/editors/string-quill.js","../../src/editors/string-jodit.js","../../src/editors/string-flatpickr.js","../../src/editors/string-imask.js","../../src/editors/number-imask.js","../../src/editors/number-raty.js","../../src/editors/array-checkboxes.js","../../src/editors/number-range.js","../../src/ui-resolver.js","../../src/i18n/default-translations.js","../../src/i18n/translations.js","../../src/i18n/translator.js","../../src/json-walker.js","../../src/jedison.js","../../src/ref-parser/ref-parser.js","../../src/themes/theme.js","../../src/themes/bootstrap3.js","../../src/themes/bootstrap4.js","../../src/themes/bootstrap5.js","../../src/index.js"],"sourcesContent":["/**\n * Utils.\n * @module utils\n */\n\n/**\n * Returns a clone of a thing\n * @param {*} thing - The thing to be cloned\n * @return {*} The clone of the thing\n */\nexport function clone (thing) {\n if (typeof thing === 'undefined') {\n return undefined\n }\n\n return JSON.parse(JSON.stringify(thing))\n}\n\n/**\n * Returns escaped regexp\n * @param {string} string - The string\n * @return {string} Escaped regexp\n */\nexport function escapeRegExp (string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\n/**\n * Multiple search and replace\n * @param {string} str - The string\n * @param {string} find - The part to be replaced\n * @param {string} replace - The replacement\n * @return {void}\n */\nexport function replaceAll (str, find, replace) {\n return str.replace(new RegExp(escapeRegExp(find), 'g'), replace)\n}\n\n/**\n * Formats a json path to be used as an html attribute value\n * @param {string} path - The json path\n * @return {string}\n */\nexport function pathToAttribute (path) {\n return replaceAll(replaceAll(path, '#', 'root'), '/', '-')\n}\n\n/**\n * Returns true if a given object has a given property\n * @param {object} obj - The object\n * @param {string} prop - The property\n * @return {boolean}\n */\nexport function hasOwn (obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\n/**\n * Sort object properties\n * @param {object} obj - The object\n * @return {object}\n */\nexport function sortObject (obj) {\n return Object.keys(obj).sort().reduce((result, key) => {\n result[key] = obj[key]\n return result\n }, {})\n}\n\n/**\n * Returns true if the two values passed are equal\n * @param {*} a - Value A\n * @param {*} b - Value B\n * @return {boolean}\n */\nexport function equal (a, b) {\n if (isObject(a) && isObject(b)) {\n a = sortObject(a)\n b = sortObject(b)\n }\n return JSON.stringify(a) === JSON.stringify(b)\n}\n\n/**\n * Returns true if the two values passed are different\n * @param {*} a - Value A\n * @param {*} b - Value B\n * @return {boolean}\n */\nexport function different (a, b) {\n return !equal(a, b)\n}\n\n/**\n * Returns true if the value passed is null\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isNull (value) {\n return value === null\n}\n\n/**\n * Returns true if the value is defined\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isSet (value) {\n return typeof value !== 'undefined'\n}\n\n/**\n * Returns true if the value is undefined\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function notSet (value) {\n return typeof value === 'undefined'\n}\n\n/**\n * Returns true if the value passed is a number\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isNumber (value) {\n return typeof value === 'number'\n}\n\n/**\n * Returns true if the value passed is an integer\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isInteger (value) {\n return isNumber(value) && value === Math.floor(value)\n}\n\n/**\n * Returns true if the value passed is a string\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isString (value) {\n return typeof value === 'string'\n}\n\n/**\n * Returns true if the value passed is a boolean\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isBoolean (value) {\n return typeof value === 'boolean'\n}\n\n/**\n * Returns true if the value passed is an array\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isArray (value) {\n return Array.isArray(value)\n}\n\n/**\n * Returns true if the value passed is an object\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isObject (value) {\n return !isNull(value) && !isArray(value) && typeof value === 'object'\n}\n\n/**\n * Returns the type of a value\n * @param {*} value - The value\n * @return {string} The type of the value\n */\nexport function getType (value) {\n let type = 'any'\n\n if (isNumber(value)) {\n type = isInteger(value) ? 'integer' : 'number'\n } else if (isString(value)) {\n type = 'string'\n } else if (isBoolean(value)) {\n type = 'boolean'\n } else if (isArray(value)) {\n type = 'array'\n } else if (isNull(value)) {\n type = 'null'\n } else if (isObject(value)) {\n type = 'object'\n }\n\n return type\n}\n\n/**\n * Merges objects\n * @param {object} target - The target object\n * @param {object[]} sources - Objects to be merged into the target object\n * @return {object} The merged object\n */\nexport function mergeDeep (target, ...sources) {\n if (!sources.length) return target\n const source = sources.shift()\n\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, {\n [key]: {}\n })\n }\n mergeDeep(target[key], source[key])\n } else {\n Object.assign(target, {\n [key]: source[key]\n })\n }\n })\n }\n return mergeDeep(target, ...sources)\n}\n\nexport function combineDeep (target, ...sources) {\n if (!sources.length) return target\n const source = sources.shift()\n\n if (Array.isArray(target) && Array.isArray(source)) {\n // Concatenate arrays instead of replacing them\n target.push(...source)\n } else if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, {\n [key]: {}\n })\n }\n combineDeep(target[key], source[key])\n } else if (Array.isArray(source[key])) {\n // Handle array merging here\n if (!target[key]) {\n target[key] = []\n }\n target[key].push(...source[key])\n } else {\n Object.assign(target, {\n [key]: source[key]\n })\n }\n })\n }\n\n return combineDeep(target, ...sources)\n}\n\n/**\n * Merges objects but only the properties that exist in both objects\n * if they are the same type of value.\n * Handles nested objects recursively.\n * @param {object} obj1 - The target object\n * @param {object} obj2 - Object whose properties are the overrides\n * @return {object} The overwritten object\n */\nexport const overwriteExistingProperties = (obj1, obj2) => {\n Object.keys(obj2).forEach((key) => {\n if (key in obj1) {\n if (\n isSet(obj1[key]) &&\n isSet(obj2[key]) && (\n (isObject(obj1[key]) && isObject(obj2[key])) ||\n (isArray(obj1[key]) && isArray(obj2[key])) ||\n (isString(obj1[key]) && isString(obj2[key])) ||\n (isNumber(obj1[key]) && isNumber(obj2[key])) ||\n (isBoolean(obj1[key]) && isBoolean(obj2[key])) ||\n (isNull(obj1[key]) && isNull(obj2[key]))\n )\n ) {\n if (isObject(obj1[key]) && isObject(obj2[key])) {\n overwriteExistingProperties(obj1[key], obj2[key])\n } else {\n obj1[key] = obj2[key]\n }\n }\n }\n })\n\n return obj1\n}\n\n/**\n * Get some value by traversing the data using JSON path\n * @param {object} data - The data source\n * @param {string} path - JSON path\n * @return {*}\n */\nexport function getValueByJSONPath (data, path) {\n const keys = path.split('.') // Split the path into individual keys\n\n let value = data\n for (const key of keys) {\n if (Array.isArray(value) && /^\\d+$/.test(key)) {\n const index = parseInt(key)\n if (index >= 0 && index < value.length) {\n value = value[index]\n } else {\n return undefined // Index is out of bounds, return undefined\n }\n } else if (hasOwn(value, key)) {\n value = value[key]\n } else {\n return undefined // Key doesn't exist, return undefined\n }\n }\n\n return value\n}\n\n/**\n * Compiles a template by search and replace\n * @param {string} template - The template string\n * @param {object} data - Where template data lives\n * @return {string}\n */\nexport function compileTemplate (template, data) {\n return template.replace(/{{(.*?)}}/g, (match) => {\n match = match.replace(/\\s/g, '')\n const path = match.split(/{{|}}/)[1]\n return getValueByJSONPath(data, path)\n })\n}\n\nexport function clamp (number, min, max) {\n return Math.max(min, Math.min(number, max))\n}\n\nexport function removeDuplicatesFromArray (arr) {\n const uniqueObjects = []\n const uniqueValues = new Set()\n\n for (const obj of arr) {\n const objString = JSON.stringify(obj)\n if (!uniqueValues.has(objString)) {\n uniqueValues.add(objString)\n uniqueObjects.push(obj)\n }\n }\n\n return uniqueObjects\n}\n\nexport function generateRandomID (maxLength) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let randomID = ''\n for (let i = 0; i < maxLength; i++) {\n const randomIndex = Math.floor(Math.random() * chars.length)\n randomID += chars[randomIndex]\n }\n return randomID\n}\n\nexport default {\n clone,\n escapeRegExp,\n replaceAll,\n pathToAttribute,\n hasOwn,\n sortObject,\n equal,\n different,\n isNull,\n isSet,\n notSet,\n isNumber,\n isInteger,\n isString,\n isBoolean,\n isArray,\n isObject,\n getType,\n mergeDeep,\n combineDeep,\n overwriteExistingProperties,\n getValueByJSONPath,\n compileTemplate,\n clamp,\n removeDuplicatesFromArray,\n generateRandomID\n}\n","import { isString, isArray, isNumber, isInteger, isBoolean, isObject, isSet, clone } from './utils.js'\n\nexport function getSchemaX (schema, keyword) {\n const key = 'x-' + keyword\n return schema[key]\n}\n\nexport function getSchemaSchema (schema) {\n return isString(schema.$schema) ? clone(schema.$schema) : undefined\n}\n\nexport function getSchemaAdditionalProperties (schema) {\n return isObject(schema.additionalProperties) || isBoolean(schema.additionalProperties) ? clone(schema.additionalProperties) : undefined\n}\n\nexport function getSchemaPropertyNames (schema) {\n return isObject(schema.propertyNames) || isBoolean(schema.propertyNames) ? clone(schema.propertyNames) : undefined\n}\n\nexport function getSchemaAllOf (schema) {\n return isArray(schema.allOf) ? clone(schema.allOf) : undefined\n}\n\nexport function getSchemaAnyOf (schema) {\n return isArray(schema.anyOf) ? clone(schema.anyOf) : undefined\n}\n\nexport function getSchemaConst (schema) {\n return clone(schema.const)\n}\n\nexport function getSchemaContains (schema) {\n return (isObject(schema.contains) || isBoolean(schema.contains)) ? clone(schema.contains) : undefined\n}\n\nexport function getSchemaDefault (schema) {\n return clone(schema.default)\n}\n\nexport function getSchemaDependentRequired (schema) {\n return isObject(schema.dependentRequired) ? clone(schema.dependentRequired) : undefined\n}\n\nexport function getSchemaDependentSchemas (schema) {\n return isObject(schema.dependentSchemas) ? clone(schema.dependentSchemas) : undefined\n}\n\nexport function getSchemaDescription (schema) {\n return isString(schema.description) ? clone(schema.description) : undefined\n}\n\nexport function getSchemaElse (schema) {\n return (isObject(schema.else) || isBoolean(schema.else)) ? clone(schema.else) : undefined\n}\n\nexport function getSchemaEnum (schema) {\n if (isArray(schema.enum) && schema.enum.length > 0) {\n return clone(schema.enum)\n }\n\n return undefined\n}\n\nexport function getSchemaExclusiveMaximum (schema) {\n return isNumber(schema.exclusiveMaximum) ? clone(schema.exclusiveMaximum) : undefined\n}\n\nexport function getSchemaExclusiveMinimum (schema) {\n return isNumber(schema.exclusiveMinimum) ? schema.exclusiveMinimum : undefined\n}\n\nexport function getSchemaFormat (schema) {\n return isString(schema.format) ? clone(schema.format) : undefined\n}\n\nexport function getSchemaIf (schema) {\n if (isObject(schema.if)) {\n return clone(schema.if)\n }\n\n if (isBoolean(schema.if)) {\n return clone(schema.if)\n }\n\n return undefined\n}\n\nexport function getSchemaItems (schema) {\n return isObject(schema.items) || isBoolean(schema.items) ? clone(schema.items) : undefined\n}\n\nexport function getSchemaMaximum (schema) {\n return isNumber(schema.maximum) ? clone(schema.maximum) : undefined\n}\n\nexport function getSchemaMaxContains (schema) {\n if (isInteger(schema.maxContains) && schema.maxContains >= 0) {\n return clone(schema.maxContains)\n }\n\n return undefined\n}\n\nexport function getSchemaMaxItems (schema) {\n if (isInteger(schema.maxItems) && schema.maxItems >= 0) {\n return clone(schema.maxItems)\n }\n\n return undefined\n}\n\nexport function getSchemaMaxLength (schema) {\n if (isInteger(schema.maxLength) && schema.maxLength >= 0) {\n return clone(schema.maxLength)\n }\n\n return undefined\n}\n\nexport function getSchemaMaxProperties (schema) {\n if (isInteger(schema.maxProperties)) {\n return clone(schema.maxProperties)\n }\n\n return undefined\n}\n\nexport function getSchemaMinimum (schema) {\n return isNumber(schema.minimum) ? clone(schema.minimum) : undefined\n}\n\nexport function getSchemaMinContains (schema) {\n if (isInteger(schema.minContains) && schema.minContains >= 0) {\n return clone(schema.minContains)\n }\n\n return undefined\n}\n\nexport function getSchemaMinItems (schema) {\n if (isInteger(schema.minItems) && schema.minItems >= 0) {\n return clone(schema.minItems)\n }\n\n return undefined\n}\n\nexport function getSchemaMinLength (schema) {\n if (isInteger(schema.minLength) && schema.minLength >= 0) {\n return clone(schema.minLength)\n }\n\n return undefined\n}\n\nexport function getSchemaMinProperties (schema) {\n if (isInteger(schema.minProperties) && schema.minProperties >= 0) {\n return clone(schema.minProperties)\n }\n\n return undefined\n}\n\nexport function getSchemaMultipleOf (schema) {\n if (isNumber(schema.multipleOf) && schema.multipleOf >= 0) {\n return clone(schema.multipleOf)\n }\n\n return undefined\n}\n\nexport function getSchemaNot (schema) {\n return (isObject(schema.not) || isBoolean(schema.not)) ? clone(schema.not) : undefined\n}\n\nexport function getSchemaXOption (schema, option) {\n const xOption = 'x-' + option\n\n if (isSet(schema[xOption])) {\n return schema[xOption]\n }\n\n return (schema['x-options'] && isSet(schema['x-options'][option])) ? schema['x-options'][option] : undefined\n}\n\nexport function getSchemaPattern (schema) {\n return isString(schema.pattern) ? clone(schema.pattern) : undefined\n}\n\nexport function getSchemaPatternProperties (schema) {\n return isObject(schema.patternProperties) ? clone(schema.patternProperties) : undefined\n}\n\nexport function getSchemaPrefixItems (schema) {\n return isArray(schema.prefixItems) ? clone(schema.prefixItems) : undefined\n}\n\nexport function getSchemaProperties (schema) {\n return isObject(schema.properties) ? clone(schema.properties) : undefined\n}\n\nexport function getSchemaReadOnly (schema) {\n return isBoolean(schema.readOnly) ? clone(schema.readOnly) : undefined\n}\n\nexport function getSchemaRequired (schema) {\n return isArray(schema.required) ? [...new Set(schema.required)] : undefined\n}\n\nexport function getSchemaThen (schema) {\n return (isObject(schema.then) || isBoolean(schema.then)) ? clone(schema.then) : undefined\n}\n\nexport function getSchemaTitle (schema) {\n return isString(schema.title) ? clone(schema.title) : undefined\n}\n\nexport function getSchemaType (schema) {\n if (isString(schema.type) || isArray(schema.type)) {\n return clone(schema.type)\n }\n\n return undefined\n}\n\nexport function getSchemaOneOf (schema) {\n return isArray(schema.oneOf) ? clone(schema.oneOf) : undefined\n}\n\nexport function getSchemaUnevaluatedProperties (schema) {\n return isBoolean(schema.unevaluatedProperties) ? clone(schema.unevaluatedProperties) : undefined\n}\n\nexport function getSchemaUniqueItems (schema) {\n return isBoolean(schema.uniqueItems) ? clone(schema.uniqueItems) : undefined\n}\n\nexport default {\n getSchemaX,\n getSchemaSchema,\n getSchemaAdditionalProperties,\n getSchemaPropertyNames,\n getSchemaAllOf,\n getSchemaAnyOf,\n getSchemaConst,\n getSchemaContains,\n getSchemaDefault,\n getSchemaDependentRequired,\n getSchemaDependentSchemas,\n getSchemaDescription,\n getSchemaElse,\n getSchemaEnum,\n getSchemaExclusiveMaximum,\n getSchemaExclusiveMinimum,\n getSchemaFormat,\n getSchemaIf,\n getSchemaItems,\n getSchemaMaximum,\n getSchemaMaxContains,\n getSchemaMaxItems,\n getSchemaMaxLength,\n getSchemaMaxProperties,\n getSchemaMinimum,\n getSchemaMinContains,\n getSchemaMinItems,\n getSchemaMinLength,\n getSchemaMinProperties,\n getSchemaMultipleOf,\n getSchemaNot,\n getSchemaXOption,\n getSchemaPattern,\n getSchemaPatternProperties,\n getSchemaPrefixItems,\n getSchemaProperties,\n getSchemaReadOnly,\n getSchemaRequired,\n getSchemaThen,\n getSchemaTitle,\n getSchemaType,\n getSchemaOneOf,\n getSchemaUnevaluatedProperties,\n getSchemaUniqueItems\n}\n","class SchemaGenerator {\n static inferType (value) {\n if (Array.isArray(value)) return 'array'\n if (value === null) return 'null'\n return typeof value\n }\n\n static generate (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return { type: this.inferType(obj) }\n }\n\n if (Array.isArray(obj)) {\n const itemSchemas = obj.map(item => this.generate(item))\n return {\n type: 'array',\n items: itemSchemas.length ? itemSchemas[0] : {}\n }\n }\n\n const properties = {}\n for (const key in obj) {\n properties[key] = this.generate(obj[key])\n }\n\n return {\n type: 'object',\n properties: properties\n }\n }\n}\n\nexport default SchemaGenerator\n","import { isSet, removeDuplicatesFromArray } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaAllOf } from '../../helpers/schema.js'\n\nexport function allOf (context) {\n// export function allOf (context) {\n let errors = []\n const allOf = getSchemaAllOf(context.schema)\n\n if (isSet(allOf)) {\n allOf.forEach((schema) => {\n const subSchemaEditor = new Jedison({ refParser: context.validator.refParser, schema, data: context.value, rootName: context.key })\n const subSchemaErrors = subSchemaEditor.getErrors()\n subSchemaEditor.destroy()\n\n subSchemaErrors.forEach((error) => {\n error.path = context.path\n })\n\n errors.push(...subSchemaErrors)\n })\n\n errors = removeDuplicatesFromArray(errors)\n }\n\n return errors\n}\n","import { compileTemplate, isSet, isString } from '../../helpers/utils.js'\nimport { getSchemaMinLength } from '../../helpers/schema.js'\n\nexport function minLength (context) {\n const errors = []\n const minLength = getSchemaMinLength(context.schema)\n\n if (isString(context.value) && isSet(minLength)) {\n context.value = context.value.replace(/[\\uDCA9]/g, '') // remove Unicode code points\n const invalid = (context.value.length < minLength)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minLength',\n messages: [\n compileTemplate(context.translator.translate('errorMinLength'), {\n minLength: minLength\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import Jedison from '../../jedison.js'\nimport { isSet } from '../../helpers/utils.js'\nimport { getSchemaAnyOf } from '../../helpers/schema.js'\n\nexport function anyOf (context) {\n const errors = []\n const anyOf = getSchemaAnyOf(context.schema)\n\n if (isSet(anyOf)) {\n let valid = false\n\n anyOf.forEach((schema) => {\n const anyOfEditor = new Jedison({ refParser: context.validator.refParser, schema: schema, data: context.value })\n const anyOfErrors = anyOfEditor.getErrors()\n anyOfEditor.destroy()\n\n if (anyOfErrors.length === 0) {\n valid = true\n }\n })\n\n if (!valid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'anyOf',\n messages: [\n context.translator.translate('errorAnyOf')\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet } from '../../helpers/utils.js'\nimport { getSchemaEnum } from '../../helpers/schema.js'\n\nexport function _enum (context) {\n const errors = []\n const schemaEnum = getSchemaEnum(context.schema)\n\n if (isSet(schemaEnum)) {\n const invalid = !schemaEnum.some(e => JSON.stringify(context.value) === JSON.stringify(e))\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'enum',\n messages: [\n compileTemplate(context.translator.translate('errorEnum'), {\n enum: JSON.stringify(schemaEnum)\n })\n ]\n })\n }\n }\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaExclusiveMaximum } from '../../helpers/schema.js'\n\nexport function exclusiveMaximum (context) {\n const errors = []\n const exclusiveMaximum = getSchemaExclusiveMaximum(context.schema)\n\n if (isNumber(context.value) && isSet(exclusiveMaximum)) {\n const invalid = (context.value >= exclusiveMaximum)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'exclusiveMaximum',\n messages: [\n compileTemplate(context.translator.translate('errorExclusiveMaximum'), {\n exclusiveMaximum: exclusiveMaximum\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaExclusiveMinimum } from '../../helpers/schema.js'\n\nexport function exclusiveMinimum (context) {\n const errors = []\n const exclusiveMinimum = getSchemaExclusiveMinimum(context.schema)\n\n if (isNumber(context.value) && isSet(exclusiveMinimum)) {\n const invalid = (context.value <= exclusiveMinimum)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'exclusiveMinimum',\n messages: [\n compileTemplate(context.translator.translate('errorExclusiveMinimum'), {\n exclusiveMinimum: exclusiveMinimum\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet, isString } from '../../helpers/utils.js'\nimport { getSchemaFormat, getSchemaXOption } from '../../helpers/schema.js'\n\nexport function format (context) {\n const errors = []\n const format = getSchemaFormat(context.schema)\n let assertFormat = context.validator.assertFormat\n\n if (getSchemaXOption(context.schema, 'assertFormat')) {\n assertFormat = context.schema.options.assertFormat\n }\n\n if (isSet(format) && isString(context.value) && assertFormat) {\n let regexp\n\n if (format === 'email') {\n regexp = new RegExp(/^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/i)\n }\n\n if (format === 'url') {\n regexp = new RegExp(/^(?:https?|ftp):\\/\\/(?:[^\\s:@]+(?::[^\\s:@]*)?@)?(?:(?:[^\\s:@]+(?::[^\\s:@]*)?@)?(?:[^\\s:@](?:[^\\s:@-]*[^\\s:@])?\\.?)+[a-zA-Z]{2,}|(?:\\d{1,3}\\.){3}\\d{1,3})(?::\\d{2,5})?(?:\\/[^\\s]*)?$/i)\n }\n\n if (format === 'uuid') {\n regexp = new RegExp(/^(?:urn:uuid:)?[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$/i)\n }\n\n const invalid = isSet(regexp) && !regexp.test(context.value)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'format',\n messages: [\n compileTemplate(context.translator.translate('errorFormat'), { format: format })\n ]\n })\n }\n }\n\n return errors\n}\n","import { isArray, isSet } from '../../helpers/utils.js'\nimport { getSchemaItems, getSchemaPrefixItems } from '../../helpers/schema.js'\n\nexport function items (context) {\n const errors = []\n const items = getSchemaItems(context.schema)\n const prefixItems = getSchemaPrefixItems(context.schema)\n\n if (isArray(context.value) && isSet(items)) {\n const prefixItemsSchemasCount = isSet(prefixItems) ? prefixItems.length : 0\n\n if (items === false && context.value.length > 0 && context.value.length > prefixItemsSchemasCount) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'items',\n messages: [context.translator.translate('errorItems')]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isArray, isSet } from '../../helpers/utils.js'\nimport { getSchemaMaxItems } from '../../helpers/schema.js'\n\nexport function maxItems (context) {\n const errors = []\n const maxItems = getSchemaMaxItems(context.schema)\n\n if (isArray(context.value) && isSet(maxItems)) {\n const invalid = (context.value.length > maxItems)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maxItems',\n messages: [\n compileTemplate(context.translator.translate('errorMaxItems'), {\n maxItems: maxItems\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet, isString } from '../../helpers/utils.js'\nimport { getSchemaMaxLength } from '../../helpers/schema.js'\n\nexport function maxLength (context) {\n const errors = []\n const maxLength = getSchemaMaxLength(context.schema)\n\n if (isString(context.value) && isSet(maxLength)) {\n context.value = context.value.replace(/[\\uDCA9]/g, '') // remove Unicode code points\n const invalid = (context.value.length > maxLength)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maxLength',\n messages: [\n compileTemplate(context.translator.translate('errorMaxLength'), {\n maxLength: maxLength\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaMaxProperties } from '../../helpers/schema.js'\n\nexport function maxProperties (context) {\n const errors = []\n const maxProperties = getSchemaMaxProperties(context.schema)\n\n if (isObject(context.value) && isSet(maxProperties)) {\n const propertiesCount = Object.keys(context.value).length\n const invalid = (propertiesCount > maxProperties)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maxProperties',\n messages: [\n compileTemplate(context.translator.translate('errorMaxProperties'), {\n maxProperties: maxProperties\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaMinimum } from '../../helpers/schema.js'\n\nexport function minimum (context) {\n const errors = []\n const minimum = getSchemaMinimum(context.schema)\n\n if (isNumber(context.value) && isSet(minimum)) {\n const invalid = (context.value < minimum)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minimum',\n messages: [\n compileTemplate(context.translator.translate('errorMinimum'), {\n minimum: minimum\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isArray, isSet } from '../../helpers/utils.js'\nimport { getSchemaMinItems } from '../../helpers/schema.js'\n\nexport function minItems (context) {\n const errors = []\n const minItems = getSchemaMinItems(context.schema)\n\n if (isArray(context.value) && isSet(minItems)) {\n const invalid = (context.value.length < minItems)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minItems',\n messages: [\n compileTemplate(context.translator.translate('errorMinItems'), {\n minItems: minItems\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaMinProperties } from '../../helpers/schema.js'\n\nexport function minProperties (context) {\n const errors = []\n const minProperties = getSchemaMinProperties(context.schema)\n\n if (isObject(context.value) && isSet(minProperties)) {\n const propertiesCount = Object.keys(context.value).length\n const invalid = (propertiesCount < minProperties)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minProperties',\n messages: [\n compileTemplate(context.translator.translate('errorMinProperties'), {\n minProperties: minProperties\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaMultipleOf } from '../../helpers/schema.js'\n\nexport function multipleOf (context) {\n const errors = []\n const multipleOf = getSchemaMultipleOf(context.schema)\n\n if (isNumber(context.value) && isSet(multipleOf)) {\n if (context.value === 0) {\n return errors\n }\n\n const isMultipleOf = (context.value / multipleOf === Math.floor(context.value / multipleOf))\n const invalid = (!isMultipleOf || context.value.toString().includes('e'))\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'multipleOf',\n messages: [\n compileTemplate(context.translator.translate('errorMultipleOf'), {\n multipleOf: multipleOf\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet } from '../../helpers/utils.js'\nimport { getSchemaNot } from '../../helpers/schema.js'\n\nimport Jedison from '../../jedison.js'\n\nexport function not (context) {\n const errors = []\n const not = getSchemaNot(context.schema)\n\n if (isSet(not)) {\n const notEditor = new Jedison({ refParser: context.validator.refParser, schema: not, data: context.value })\n const notErrors = notEditor.getErrors()\n notEditor.destroy()\n\n const invalid = notErrors.length === 0\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'not',\n messages: [\n compileTemplate(context.translator.translate('errorNot'))\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaOneOf } from '../../helpers/schema.js'\n\nexport function oneOf (context) {\n const errors = []\n const oneOf = getSchemaOneOf(context.schema)\n\n if (isSet(oneOf)) {\n let counter = 0\n\n oneOf.forEach((schema) => {\n const oneOfEditor = new Jedison({ refParser: context.validator.refParser, schema: schema, data: context.value })\n const oneOfErrors = oneOfEditor.getErrors()\n oneOfEditor.destroy()\n\n if (oneOfErrors.length === 0) {\n counter++\n }\n })\n\n if (counter !== 1) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'oneOf',\n messages: [\n compileTemplate(context.translator.translate('errorOneOf'), {\n counter: counter\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet, isString } from '../../helpers/utils.js'\nimport { getSchemaPattern } from '../../helpers/schema.js'\n\nexport function pattern (context) {\n const errors = []\n const pattern = getSchemaPattern(context.schema)\n\n if (isString(context.value) && isSet(pattern)) {\n const regexp = new RegExp(pattern)\n const invalid = !regexp.test(context.value)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'pattern',\n messages: [\n compileTemplate(context.translator.translate('errorPattern'), {\n pattern: pattern\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaPatternProperties } from '../../helpers/schema.js'\n\nexport function patternProperties (context) {\n let errors = []\n const patternProperties = getSchemaPatternProperties(context.schema)\n\n if (isObject(context.value) && isSet(patternProperties)) {\n Object.keys(context.value).forEach((propertyName) => {\n Object.keys(patternProperties).forEach((pattern) => {\n const regexp = new RegExp(pattern)\n if (regexp.test(propertyName)) {\n const schema = patternProperties[pattern]\n\n const editor = new Jedison({\n refParser: context.validator.refParser,\n schema: schema,\n data: context.value[propertyName]\n })\n\n const editorErrors = editor.getErrors().map((error) => {\n return {\n type: 'error',\n path: context.path + '/' + propertyName,\n constraint: 'patternProperties',\n messages: error.messages\n }\n })\n\n errors = [...errors, ...editorErrors]\n\n editor.destroy()\n }\n })\n })\n }\n\n return errors\n}\n","import { compileTemplate, hasOwn, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaProperties } from '../../helpers/schema.js'\n\nexport function properties (context) {\n const schemaProperties = getSchemaProperties(context.schema)\n const invalidProperties = []\n\n if (isObject(context.value) && isSet(schemaProperties)) {\n Object.keys(schemaProperties).forEach((propertyName) => {\n if (hasOwn(context.value, propertyName)) {\n const propertySchema = schemaProperties[propertyName]\n\n const propertyErrors = context.validator.getErrors(\n context.value[propertyName],\n propertySchema,\n propertyName,\n context.path + '/' + propertyName\n )\n\n if (propertyErrors.length > 0) {\n invalidProperties.push(propertyName)\n }\n }\n })\n }\n\n if (invalidProperties.length > 0) {\n return [{\n type: 'error',\n path: context.path,\n constraint: 'properties',\n messages: [\n compileTemplate(context.translator.translate('errorProperties'), { properties: invalidProperties.join(', ') })\n ]\n }]\n }\n\n return []\n}\n","import { compileTemplate, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaRequired } from '../../helpers/schema.js'\n\nexport function required (context) {\n const errors = []\n const required = getSchemaRequired(context.schema)\n\n if (isObject(context.value) && isSet(required)) {\n const missingProperties = []\n const keys = Object.keys(context.value)\n\n required.forEach((key) => {\n if (!keys.includes(key)) {\n missingProperties.push(key)\n }\n })\n\n const invalid = missingProperties.length > 0\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'required',\n messages: [\n compileTemplate(context.translator.translate('errorRequired'), {\n required: missingProperties.join(', ')\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import {\n compileTemplate, getType,\n isArray,\n isBoolean,\n isInteger,\n isNull,\n isNumber,\n isObject,\n isSet,\n isString\n} from '../../helpers/utils.js'\nimport { getSchemaType } from '../../helpers/schema.js'\n\nexport function type (context) {\n const errors = []\n const type = getSchemaType(context.schema)\n\n if (type === 'any') {\n return errors\n }\n\n if (isSet(type)) {\n const types = {\n string: value => isString(value),\n number: value => isNumber(value),\n integer: value => isInteger(value),\n boolean: value => isBoolean(value),\n array: value => isArray(value),\n object: value => isObject(value),\n null: value => isNull(value)\n }\n\n let valid = true\n\n if (isArray(type)) {\n valid = type.some((type) => {\n return types[type](context.value)\n })\n } else {\n valid = types[type](context.value)\n }\n\n if (!valid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'type',\n messages: [\n compileTemplate(context.translator.translate('errorType'), {\n type: type,\n valueType: getType(context.value)\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaMaximum } from '../../helpers/schema.js'\n\nexport function maximum (context) {\n const errors = []\n const maximum = getSchemaMaximum(context.schema)\n\n if (isNumber(context.value) && isSet(maximum)) {\n const invalid = (context.value > maximum)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maximum',\n messages: [\n compileTemplate(context.translator.translate('errorMaximum'), {\n maximum: maximum\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { isArray, isObject, isSet, sortObject } from '../../helpers/utils.js'\nimport { getSchemaUniqueItems } from '../../helpers/schema.js'\n\nexport function uniqueItems (context) {\n const errors = []\n const uniqueItems = getSchemaUniqueItems(context.schema)\n\n if (isArray(context.value) && isSet(uniqueItems) && uniqueItems === true) {\n const seen = []\n let hasDuplicatedItems = false\n\n for (let i = 0; i < context.value.length; i++) {\n let item = context.value[i]\n\n if (isObject(item)) {\n item = sortObject(item)\n }\n\n const itemStringified = JSON.stringify(item)\n hasDuplicatedItems = seen.some((seen) => seen === itemStringified)\n\n if (hasDuplicatedItems) {\n break\n } else {\n seen.push(itemStringified)\n }\n }\n\n const invalid = (hasDuplicatedItems)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'uniqueItems',\n messages: [\n context.translator.translate('errorUniqueItems')\n ]\n })\n }\n }\n\n return errors\n}\n","/**\n * Constrains additionalProperties\n */\n\nimport { compileTemplate, hasOwn, isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaAdditionalProperties, getSchemaPatternProperties, getSchemaProperties } from '../../helpers/schema.js'\n\nexport function additionalProperties (context) {\n const errors = []\n const schemaAdditionalProperties = getSchemaAdditionalProperties(context.schema)\n const schemaPatternProperties = getSchemaPatternProperties(context.schema)\n const schemaProperties = getSchemaProperties(context.schema)\n\n if (isObject(context.value) && isSet(schemaAdditionalProperties)) {\n const properties = schemaProperties || {}\n const additionalProperties = schemaAdditionalProperties\n const patternProperties = schemaPatternProperties || {}\n\n Object.keys(context.value).forEach((property) => {\n const definedInPatternProperty = Object.keys(patternProperties).some((pattern) => {\n const regexp = new RegExp(pattern)\n return regexp.test(property)\n })\n\n const isDefinedInProperties = hasOwn(properties, property)\n\n if (!definedInPatternProperty && !isDefinedInProperties) {\n if (additionalProperties === false) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'additionalProperties',\n messages: [\n compileTemplate(context.translator.translate('errorAdditionalProperties'), { property })\n ]\n })\n } else if (isObject(additionalProperties)) {\n const editor = new Jedison({\n refParser: context.validator.refParser,\n schema: additionalProperties,\n data: context.value[property]\n })\n\n const additionalPropertyErrors = editor.getErrors().map((error) => ({\n type: 'error',\n path: `${context.path}.${property}`,\n constraint: 'additionalProperties',\n messages: error.messages\n }))\n\n errors.push(...additionalPropertyErrors)\n editor.destroy()\n }\n }\n })\n }\n\n return errors\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { properties } from '../constrains/properties.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n properties: properties,\n required: required,\n type: type,\n uniqueItems: uniqueItems\n}\n","import { isSet, different, compileTemplate } from '../../helpers/utils.js'\nimport { getSchemaConst } from '../../helpers/schema.js'\n\nexport function _const (context) {\n const errors = []\n const schemaConst = getSchemaConst(context.schema)\n\n if (isSet(schemaConst)) {\n const valueIsNotEqualConst = different(context.value, schemaConst)\n const invalid = (valueIsNotEqualConst)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'const',\n messages: [\n compileTemplate(context.translator.translate('errorConst'), {\n const: JSON.stringify(schemaConst)\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isArray, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaContains, getSchemaMaxContains, getSchemaMinContains } from '../../helpers/schema.js'\n\nexport function contains (context) {\n const errors = []\n const contains = getSchemaContains(context.schema)\n const minContains = getSchemaMinContains(context.schema)\n const maxContains = getSchemaMaxContains(context.schema)\n\n if (isArray(context.value) && isSet(contains)) {\n let counter = 0\n\n context.value.forEach((item) => {\n const containsEditor = new Jedison({ refParser: context.validator.refParser, schema: contains, data: item })\n const containsErrors = containsEditor.getErrors()\n\n if (containsErrors.length === 0) {\n counter++\n }\n\n containsEditor.destroy()\n })\n\n const containsInvalid = (counter === 0)\n\n if (isSet(minContains)) {\n const minContainsInvalid = (counter < minContains)\n\n if (minContainsInvalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minContains',\n messages: [\n compileTemplate(context.translator.translate('errorMinContains'), {\n counter: counter,\n minContains: minContains\n })\n ]\n })\n }\n } else {\n if (containsInvalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'contains',\n messages: [context.translator.translate('errorContains')]\n })\n }\n }\n\n if (isSet(maxContains)) {\n const maxContainsInvalid = (counter > maxContains)\n\n if (maxContainsInvalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maxContains',\n messages: [\n compileTemplate(context.translator.translate('errorMaxContains'), {\n counter: counter,\n maxContains: maxContains\n })\n ]\n })\n }\n }\n }\n\n return errors\n}\n","import { compileTemplate, hasOwn, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaDependentRequired } from '../../helpers/schema.js'\n\nexport function dependentRequired (context) {\n const errors = []\n const dependentRequired = getSchemaDependentRequired(context.schema)\n\n if (isObject(context.value) && isSet(dependentRequired)) {\n let missingProperties = []\n\n Object.keys(dependentRequired).forEach((key) => {\n if (isSet(context.value[key])) {\n const requiredProperties = dependentRequired[key]\n\n missingProperties = requiredProperties.filter((property) => {\n return !hasOwn(context.value, property)\n })\n }\n })\n\n const invalid = missingProperties.length > 0\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'dependentRequired',\n messages: [\n compileTemplate(context.translator.translate('errorDependentRequired'), {\n dependentRequired: missingProperties.join(', ')\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaDependentSchemas } from '../../helpers/schema.js'\n\nexport function dependentSchemas (context) {\n let errors = []\n const dependentSchemas = getSchemaDependentSchemas(context.schema)\n\n if (isObject(context.value) && isSet(dependentSchemas)) {\n Object.keys(dependentSchemas).forEach((key) => {\n if (isSet(context.value[key])) {\n const dependentSchema = dependentSchemas[key]\n const tmpEditor = new Jedison({ refParser: context.validator.refParser, schema: dependentSchema, data: context.value })\n const tmpErrors = tmpEditor.getErrors()\n tmpEditor.destroy()\n errors = [...errors, ...tmpErrors]\n }\n })\n }\n\n return errors\n}\n","import Jedison from '../../jedison.js'\nimport { isSet, notSet } from '../../helpers/utils.js'\nimport { getSchemaElse, getSchemaIf, getSchemaThen } from '../../helpers/schema.js'\n\nexport function ifThenElse (context) {\n const errors = []\n const schemaIf = getSchemaIf(context.schema)\n const schemaThen = getSchemaThen(context.schema)\n const schemaElse = getSchemaElse(context.schema)\n\n if (isSet(schemaIf)) {\n if (notSet(schemaThen) && notSet(schemaElse)) {\n return errors\n }\n\n const ifEditor = new Jedison({ refParser: context.validator.refParser, schema: schemaIf, data: context.value })\n const ifErrors = ifEditor.getErrors()\n ifEditor.destroy()\n\n let thenErrors = []\n let elseErrors = []\n\n if (isSet(schemaThen)) {\n const thenEditor = new Jedison({ refParser: context.validator.refParser, schema: schemaThen, data: context.value })\n thenErrors = thenEditor.getErrors()\n thenEditor.destroy()\n }\n\n if (isSet(schemaElse)) {\n const elseEditor = new Jedison({ refParser: context.validator.refParser, schema: schemaElse, data: context.value })\n elseErrors = elseEditor.getErrors()\n elseEditor.destroy()\n }\n\n if (schemaIf === true) {\n return thenErrors\n }\n\n if (schemaIf === false) {\n return elseErrors\n }\n\n if (ifErrors.length === 0) {\n return thenErrors\n }\n\n if (ifErrors.length > 0) {\n return elseErrors\n }\n }\n\n return errors\n}\n","import { compileTemplate, isArray, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaPrefixItems } from '../../helpers/schema.js'\n\nexport function prefixItems (context) {\n const errors = []\n const prefixItems = getSchemaPrefixItems(context.schema)\n\n if (isArray(context.value) && isSet(prefixItems)) {\n prefixItems.forEach((itemSchema, index) => {\n const itemValue = context.value[index]\n\n if (isSet(itemValue)) {\n const tmpEditor = new Jedison({ refParser: context.validator.refParser, schema: itemSchema, data: itemValue })\n const tmpErrors = tmpEditor.getErrors()\n tmpEditor.destroy()\n\n if (tmpErrors.length > 0) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'prefixItems',\n messages: [\n compileTemplate(context.translator.translate('errorPrefixItems'), {\n index: index\n })\n ]\n })\n }\n }\n })\n }\n\n return errors\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { _const } from '../constrains/const.js'\nimport { contains } from '../constrains/contains.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { dependentRequired } from '../constrains/dependentRequired.js'\nimport { dependentSchemas } from '../constrains/dependentSchemas.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { ifThenElse } from '../constrains/if-then-else.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { properties } from '../constrains/properties.js'\nimport { prefixItems } from '../constrains/prefixItems.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n const: _const,\n contains: contains,\n dependentRequired: dependentRequired,\n dependentSchemas: dependentSchemas,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n if: ifThenElse,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n properties: properties,\n prefixItems: prefixItems,\n required: required,\n type: type,\n uniqueItems: uniqueItems\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { _const } from '../constrains/const.js'\nimport { contains } from '../constrains/contains.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { dependentRequired } from '../constrains/dependentRequired.js'\nimport { dependentSchemas } from '../constrains/dependentSchemas.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { ifThenElse } from '../constrains/if-then-else.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { properties } from '../constrains/properties.js'\nimport { prefixItems } from '../constrains/prefixItems.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n const: _const,\n contains: contains,\n dependentRequired: dependentRequired,\n dependentSchemas: dependentSchemas,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n if: ifThenElse,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n properties: properties,\n prefixItems: prefixItems,\n required: required,\n type: type,\n uniqueItems: uniqueItems\n}\n","/**\n * constrains unevaluatedProperties\n */\n\nimport { compileTemplate, hasOwn, isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport {\n getSchemaUnevaluatedProperties,\n getSchemaPatternProperties,\n getSchemaProperties,\n getSchemaAnyOf, getSchemaAllOf, getSchemaOneOf\n} from '../../helpers/schema.js'\n\nexport function unevaluatedProperties (context) {\n let errors = []\n const schemaUnevaluatedProperties = getSchemaUnevaluatedProperties(context.schema)\n const schemaPatternProperties = getSchemaPatternProperties(context.schema)\n const schemaProperties = getSchemaProperties(context.schema)\n const schemaAllOf = getSchemaAllOf(context.schema)\n const schemaAnyOf = getSchemaAnyOf(context.schema)\n const schemaOneOf = getSchemaOneOf(context.schema)\n\n if (isObject(context.value) && isSet(schemaUnevaluatedProperties)) {\n let properties = isSet(schemaProperties) ? schemaProperties : {}\n const unevaluatedProperties = schemaUnevaluatedProperties\n const patternProperties = schemaPatternProperties\n\n // see through allOf, anyOf and oneOf\n const ofSchemas = [\n schemaAllOf,\n schemaAnyOf,\n schemaOneOf\n ]\n\n ofSchemas.forEach((subSchema) => {\n if (isSet(subSchema)) {\n subSchema.forEach((subschema) => {\n if (isSet(subschema['properties'])) {\n properties = { ...properties, ...subschema['properties'] }\n }\n })\n }\n })\n\n if (properties) {\n Object.keys(context.value).forEach((property) => {\n let definedInPatternProperty = false\n\n if (isSet(patternProperties)) {\n Object.keys(patternProperties).forEach((pattern) => {\n const regexp = new RegExp(pattern)\n definedInPatternProperty = regexp.test(property)\n })\n }\n\n if (!definedInPatternProperty && unevaluatedProperties === false && !hasOwn(properties, property)) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'unevaluatedProperties',\n messages: [\n compileTemplate(context.translator.translate('errorUnevaluatedProperties'), {\n property: property\n })\n ]\n })\n }\n\n if (!definedInPatternProperty && isObject(unevaluatedProperties) && !hasOwn(properties, property)) {\n const editor = new Jedison({\n refParser: context.validator.refParser,\n schema: unevaluatedProperties,\n data: context.value[property]\n })\n\n const unevaluatedPropertiesErrors = editor.getErrors().map((error) => {\n return {\n type: 'error',\n path: property,\n constraint: 'unevaluatedProperties',\n messages: error.messages\n }\n })\n\n errors = [...errors, ...unevaluatedPropertiesErrors]\n\n editor.destroy()\n }\n })\n }\n }\n\n return errors\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { _const } from '../constrains/const.js'\nimport { contains } from '../constrains/contains.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { dependentRequired } from '../constrains/dependentRequired.js'\nimport { dependentSchemas } from '../constrains/dependentSchemas.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { ifThenElse } from '../constrains/if-then-else.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { properties } from '../constrains/properties.js'\nimport { prefixItems } from '../constrains/prefixItems.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\nimport { unevaluatedProperties } from '../constrains/unevaluatedProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n const: _const,\n contains: contains,\n dependentRequired: dependentRequired,\n dependentSchemas: dependentSchemas,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n if: ifThenElse,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n propertie: properties,\n prefixItems: prefixItems,\n required: required,\n type: type,\n unevaluatedProperties: unevaluatedProperties,\n uniqueItems: uniqueItems\n}\n","/**\n * constrains propertyNames\n */\n\nimport { compileTemplate, isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport {\n getSchemaPropertyNames\n} from '../../helpers/schema.js'\n\nexport function propertyNames (context) {\n const errors = []\n const schemaPropertyNames = getSchemaPropertyNames(context.schema)\n\n if (isObject(context.value) && isSet(schemaPropertyNames)) {\n Object.keys(context.value).forEach((propertyName) => {\n const editor = new Jedison({\n refParser: context.validator.refParser,\n schema: schemaPropertyNames,\n data: propertyName\n })\n\n const invalid = editor.getErrors().length > 0\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'propertyNames',\n messages: [\n compileTemplate(context.translator.translate('errorPropertyNames'), { propertyName: propertyName })\n ]\n })\n }\n })\n }\n\n return errors\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { _const } from '../constrains/const.js'\nimport { contains } from '../constrains/contains.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { dependentRequired } from '../constrains/dependentRequired.js'\nimport { dependentSchemas } from '../constrains/dependentSchemas.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { ifThenElse } from '../constrains/if-then-else.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { prefixItems } from '../constrains/prefixItems.js'\nimport { propertyNames } from '../constrains/propertyNames.js'\nimport { properties } from '../constrains/properties.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\nimport { unevaluatedProperties } from '../constrains/unevaluatedProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n const: _const,\n contains: contains,\n dependentRequired: dependentRequired,\n dependentSchemas: dependentSchemas,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n if: ifThenElse,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n prefixItems: prefixItems,\n propertyNames: propertyNames,\n properties: properties,\n required: required,\n type: type,\n unevaluatedProperties: unevaluatedProperties,\n uniqueItems: uniqueItems\n}\n","import draft04 from './drafts/draft-04.js'\nimport draft06 from './drafts/draft-06.js'\nimport draft07 from './drafts/draft-07.js'\nimport draft201909 from './drafts/draft-2019-09.js'\nimport draft202012 from './drafts/draft-2020-12.js'\nimport { hasOwn, isBoolean, clone, isSet, isObject, isArray } from '../helpers/utils.js'\nimport { getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a Validator instance.\n */\nclass Validator {\n constructor (config = {}) {\n this.refParser = config.refParser\n this.constraints = config.constraints ?? {}\n this.assertFormat = config.assertFormat ? config.assertFormat : false\n this.translator = config.translator ? config.translator : false\n this.draft = draft202012\n\n this.jsonSchemaDrafts = {\n 'http://json-schema.org/draft-04/schema#': draft04,\n 'http://json-schema.org/draft-06/schema#': draft06,\n 'http://json-schema.org/draft-07/schema#': draft07,\n 'https://json-schema.org/draft/2019-09/schema': draft201909,\n 'https://json-schema.org/draft/2020-12/schema': draft202012\n }\n }\n\n /**\n * Validates a value against it's schema\n */\n getErrors (value, schema, key, path) {\n let schemaErrors = []\n\n const schemaClone = clone(schema)\n\n if (isBoolean(schemaClone) && schemaClone === true) {\n return schemaErrors\n }\n\n if (isBoolean(schemaClone) && schemaClone === false) {\n return [{\n type: 'error',\n messages: ['invalid'],\n path: path\n }]\n }\n\n const allConstraints = { ...this.draft, ...this.constraints }\n\n for (const [constraintName, constraint] of Object.entries(allConstraints)) {\n if (hasOwn(schemaClone, constraintName)) {\n const context = {\n validator: this,\n value,\n schema: schemaClone,\n key,\n path,\n translator: this.translator\n }\n\n const validatorErrors = constraint(context)\n\n if (validatorErrors) {\n schemaErrors = [...schemaErrors, ...validatorErrors]\n }\n }\n }\n\n const schemaOptionsMessages = getSchemaXOption(schema, 'messages')\n\n if (isSet(schemaOptionsMessages)) {\n if (isObject(schemaOptionsMessages)) {\n schemaErrors.forEach((schemaError) => {\n const schemaMessageListedByLanguage = schemaOptionsMessages?.[this.translator?.language]?.[schemaError?.constraint]\n const schemaMessageListedByConstraint = schemaOptionsMessages?.[schemaError?.constraint]\n const schemaMessage = schemaMessageListedByLanguage ?? schemaMessageListedByConstraint\n\n if (isSet(schemaMessage)) {\n schemaError.messages = [\n schemaMessage\n ]\n }\n return schemaError\n })\n }\n\n if (isArray(schemaOptionsMessages) && schemaErrors.length > 0) {\n schemaErrors.forEach((schemaError) => {\n schemaError.messages = schemaOptionsMessages\n return schemaError\n })\n }\n }\n\n return schemaErrors\n }\n}\n\nexport default Validator\n","/**\n * Represents an EventEmitter instance.\n */\nclass EventEmitter {\n constructor () {\n this.listeners = []\n }\n\n /**\n * Adds a named event listener\n * @public\n * @param {string} name - The name of the event\n * @param {function} callback - A callback functions that will be executed when this event is emitted\n */\n on (name, callback) {\n this.listeners.push({ name, callback })\n }\n\n off (name) {\n this.listeners = this.listeners.filter(listener => listener.name !== name)\n }\n\n /**\n * Triggers the callback function of a named event listener\n * @public\n * @param {string} name - The name of the event to be emitted\n * @param {...*} args - Arguments to be passed to the callback function\n */\n emit (name, ...args) {\n const listeners = this.listeners.filter(listener => listener.name === name)\n\n listeners.forEach(listener => {\n try {\n listener.callback(...args)\n } catch (error) {\n console.error(`Error in listener callback for event \"${name}\":`, error)\n }\n })\n }\n\n /**\n * Deletes all properties of the class\n */\n destroy () {\n Object.keys(this).forEach((key) => {\n delete this[key]\n })\n }\n}\n\nexport default EventEmitter\n","import EventEmitter from '../event-emitter.js'\n\nimport {\n clone, compileTemplate, different,\n equal,\n isSet,\n notSet,\n removeDuplicatesFromArray\n} from '../helpers/utils.js'\n\nimport {\n getSchemaConst,\n getSchemaDefault, getSchemaEnum,\n getSchemaReadOnly,\n getSchemaType, getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents a JSON instance.\n */\nclass Instance extends EventEmitter {\n constructor (config) {\n super()\n\n /**\n * A reference to the Jedison instance to which this instance belongs.\n * @type {Jedison}\n */\n this.jedison = config.jedison\n\n /**\n * The schema path of this instance.\n * @type {string}\n */\n this.path = config.path || this.jedison.rootName\n\n /**\n * A JSON schema.\n * @type {boolean|object}\n */\n this.schema = config.schema\n\n /**\n * The json value of this instance.\n * @type {*}\n */\n this.value = isSet(config.value) ? config.value : undefined\n\n /**\n * The active state of this instance. If false the editor is not participating\n * in the value.\n * @type {boolean}\n */\n this.isActive = true\n\n /**\n * The Parent instance of this instance.\n * @type {Instance|null}\n */\n this.parent = config.parent || null\n\n /**\n * Child instances of this instance.\n * @type {Instance[]}\n */\n this.children = []\n\n /**\n * The editor controlling this Instance if any\n * @type {Editor|null}\n */\n this.ui = null\n\n /**\n * Indicates whether the instance value changed.\n * @type {boolean}\n */\n this.isDirty = false\n\n this.watched = {}\n\n this.key = this.path.split(this.jedison.pathSeparator).pop()\n\n /**\n * This property is set by it parent if it happens to be an array instance.\n * @type {object}\n */\n this.arrayTemplateData = config.arrayTemplateData || {}\n\n this.init()\n }\n\n /**\n * Initializes and register the instance\n */\n init () {\n this.register()\n this.setInitialValue()\n this.prepare()\n this.setDefaultValue()\n\n this.registerWatcher()\n this.setValueFormTemplate()\n\n if (this.jedison.options.container) {\n this.setUI()\n }\n\n this.on('notifyParent', (initiator) => {\n if (this.parent) {\n this.parent.isDirty = true\n this.parent.onChildChange(initiator)\n }\n })\n }\n\n /**\n * Sets the instance ui property. UI can be an editor instance or similar\n */\n setUI () {\n if (this.jedison.isEditor) {\n const EditorClass = this.jedison.uiResolver.getClass(this.schema)\n this.ui = new EditorClass(this)\n }\n }\n\n /**\n * Return the last part of the instance path\n */\n getKey () {\n return this.key\n }\n\n /**\n * Return the instance schema\n */\n getSchema () {\n return this.schema\n }\n\n /**\n * Adds a child instance pointer to the instance list\n */\n register () {\n this.jedison.register(this)\n\n if (this.children.length === 0) return\n\n const registerChildRecursive = (child) => {\n this.jedison.register(child)\n if (child.children.length > 0) {\n child.children.forEach(registerChildRecursive)\n }\n }\n\n this.children.forEach(registerChildRecursive)\n }\n\n /**\n * Deletes a child instance pointer from the instance list\n */\n unregister () {\n this.jedison.unregister(this)\n\n if (this.children.length === 0) return\n\n const unregisterChildRecursive = (child) => {\n this.jedison.unregister(child)\n if (child.children.length > 0) {\n child.children.forEach(unregisterChildRecursive)\n }\n }\n\n this.children.forEach(unregisterChildRecursive)\n }\n\n /**\n * Sets the default value of the instance based on it's type\n */\n setInitialValue () {\n const schemaEnforceEnumDefault = getSchemaXOption(this.schema, 'enforceEnumDefault') // todo: deprecated\n const schemaEnforceEnum = getSchemaXOption(this.schema, 'enforceEnum')\n const enforceEnumDefault = schemaEnforceEnumDefault ?? this.jedison.options.enforceEnumDefault // todo: deprecated\n const enforceEnum = schemaEnforceEnum ?? this.jedison.options.enforceEnum\n const finalEnforceEnum = isSet(schemaEnforceEnum) ? enforceEnum : enforceEnumDefault // todo: remove this after deprecation\n const schemaEnum = getSchemaEnum(this.schema)\n\n if (isSet(schemaEnum) && !schemaEnum.includes(this.getValue()) && isSet(schemaEnum[0]) && finalEnforceEnum) {\n this.setValue(schemaEnum[0], false)\n }\n\n if (notSet(this.value)) {\n let value\n const schemaType = getSchemaType(this.schema)\n\n if (schemaType === 'boolean') value = false\n if (schemaType === 'number') value = 0.0\n if (schemaType === 'integer') value = 0\n if (schemaType === 'string') value = ''\n if (schemaType === 'array') value = []\n if (schemaType === 'object') value = {}\n if (schemaType === 'null') value = null\n\n this.value = value\n }\n }\n\n setDefaultValue () {\n const schemaDefault = getSchemaDefault(this.schema)\n\n if (isSet(schemaDefault)) {\n this.setValue(schemaDefault, false)\n }\n\n const enforceConst = getSchemaXOption(this.schema, 'enforceConst') ?? this.jedison.options.enforceConst\n\n if (isSet(enforceConst) && equal(enforceConst, true)) {\n const schemaConst = getSchemaConst(this.schema)\n\n if (isSet(schemaConst)) {\n this.setValue(schemaConst, false)\n }\n }\n }\n\n registerWatcher () {\n const watch = getSchemaXOption(this.schema, 'watch')\n\n if (!isSet(watch)) return\n\n Object.entries(watch).forEach(([name, path]) => {\n this.jedison.watch(path, () => {\n this.updateWatchedData(name, path)\n })\n })\n }\n\n updateWatchedData (name, path) {\n const instance = this.jedison.getInstance(path)\n\n if (!isSet(instance)) {\n return\n }\n\n if (instance) {\n this.watched[name] = {\n value: instance.getValue(),\n schema: instance.getSchema(),\n properties: instance.schema.properties ? Object.keys(instance.schema.properties) : []\n }\n }\n\n this.setValueFormTemplate()\n }\n\n setValueFormTemplate () {\n const template = getSchemaXOption(this.schema, 'template')\n\n if (!isSet(template)) return\n\n if (template) {\n this.setValue(compileTemplate(template, this.watched))\n }\n }\n\n /**\n * Returns the value of the instance\n */\n getValue () {\n return clone(this.value)\n }\n\n /**\n * Returns the data that will replace placeholders in titles, descriptions (e.g. \"{{ i1 }} {{ value.title }}\")\n */\n getTemplateData () {\n return {\n ...this.arrayTemplateData,\n value: this.getValue(),\n settings: this.jedison.options.settings\n }\n }\n\n /**\n * Sets the instance value\n * @returns {*} The final value after constraint enforcement\n */\n setValue (newValue, notifyParent = true, initiator = 'api') {\n // EARLY RETURN: Skip if value is identical (70% of cases)\n if (this.value === newValue) {\n return this.value\n }\n\n // EARLY RETURN: Skip if both values are primitives and equal\n if (typeof this.value !== 'object' && typeof newValue !== 'object' && this.value === newValue) {\n return this.value\n }\n\n // Only check const enforcement if necessary\n const enforceConst = getSchemaXOption(this.schema, 'enforceConst') ?? this.jedison.options.enforceConst\n if (isSet(enforceConst) && equal(enforceConst, true)) {\n const schemaConst = getSchemaConst(this.schema)\n if (isSet(schemaConst)) {\n newValue = schemaConst\n }\n }\n\n // Only do expensive comparison if values might be different\n const valueChanged = different(this.value, newValue)\n\n if (!valueChanged) {\n return this.value // EARLY RETURN: No change needed\n }\n\n this.value = newValue\n this.isDirty = true\n\n // Only emit events if value actually changed\n this.emit('set-value', newValue, initiator)\n this.emit('change', initiator)\n this.jedison.emit('instance-change', this, initiator)\n\n if (notifyParent) {\n this.emit('notifyParent', initiator)\n }\n\n return this.value\n }\n\n /**\n * Fires when a child's instance state changes\n */\n onChildChange (initiator) {\n }\n\n /**\n * Returns an array of validation error messages\n */\n getErrors () {\n if (!this.isActive) {\n return []\n }\n\n const errors = this.jedison.validator.getErrors(this.getValue(), this.schema, this.getKey(), this.path)\n return removeDuplicatesFromArray(errors)\n }\n\n /**\n * Prepare data before building the editor\n */\n prepare () {\n }\n\n /**\n * Activates the instance\n */\n activate () {\n if (this.isActive === false) {\n this.isActive = true\n this.emit('notifyParent')\n }\n }\n\n /**\n * Deactivates the instance\n */\n deactivate () {\n if (this.isActive === true) {\n this.isActive = false\n this.emit('notifyParent')\n }\n }\n\n /**\n * Returns true if this instance is read only\n */\n isReadOnly () {\n if (getSchemaReadOnly(this.schema) === true) {\n return true\n }\n\n return this.parent ? this.parent.isReadOnly() : false\n }\n\n /**\n * Destroy the instance and it's children\n */\n destroy () {\n this.unregister()\n\n this.listeners = null\n\n if (this.children.length > 0) {\n this.children.forEach((child) => child.destroy())\n this.children = []\n }\n\n if (this.ui) {\n this.ui.destroy()\n this.ui = null\n }\n\n Object.keys(this).forEach((key) => {\n this[key] = null\n })\n\n super.destroy()\n }\n}\n\nexport default Instance\n","import { combineDeep, compileTemplate, isObject, isSet, pathToAttribute } from '../helpers/utils.js'\nimport { getSchemaDescription, getSchemaTitle, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an Editor instance.\n * @extends EventEmitter\n */\nclass Editor {\n constructor (instance) {\n /**\n * A reference to the Instance being controlled by this editor.\n * @type {Jedison}\n */\n this.instance = instance\n\n /**\n * Theme instance used to build the Editor user interface.\n * @type {Theme}\n */\n this.theme = null\n\n /**\n * The user interface html for this editor\n * @type {HTMLElement}\n */\n this.control = null\n\n /**\n * Disabled status for this editor user interface\n * @type {boolean}\n */\n this.disabled = false\n\n /**\n * Read only status for this editor user interface\n * @type {boolean}\n */\n this.readOnly = this.instance.isReadOnly()\n\n this.showingValidationErrors = false\n\n this.markdownEnabled = false\n this.purifyEnabled = false\n\n this.title = null\n this.description = null\n\n this.init()\n this.build()\n this.setAttributes()\n this.setReadOnlyAttribute()\n this.addEventListeners()\n this.setVisibility()\n this.setContainerAttributes()\n this.refreshUI()\n\n const alwaysShowErrors = this.instance.jedison.options.showErrors === 'always' || getSchemaXOption(this.instance.schema, 'showErrors') === 'always'\n\n if (alwaysShowErrors) {\n this.showValidationErrors(this.instance.getErrors())\n }\n\n const valueChangeHandler = () => {\n this.refreshUI()\n this.showValidationErrors(this.instance.getErrors())\n }\n\n this.instance.on('change', valueChangeHandler)\n }\n\n static resolves (schema) {}\n\n /**\n * Initializes the editor\n */\n init () {\n this.theme = this.instance.jedison.theme\n this.markdownEnabled = getSchemaXOption(this.instance.schema, 'parseMarkdown') ?? this.instance.jedison.options.parseMarkdown\n this.purifyEnabled = getSchemaXOption(this.instance.schema, 'purifyHtml') ?? this.instance.jedison.options.purifyHtml\n }\n\n /**\n * Gets the json path level by counting how many \"/\" it has\n */\n getLevel () {\n return (this.instance.path.match(/\\//g) || []).length\n }\n\n setVisibility () {\n const schemaOptionHidden = getSchemaXOption(this.instance.schema, 'hidden')\n\n if (isSet(schemaOptionHidden) && schemaOptionHidden === true) {\n this.control.container.style.display = 'none'\n this.control.container.setAttribute('aria-hidden', 'true')\n }\n }\n\n /**\n * Sets container attributes like data-path and data-type\n */\n setContainerAttributes () {\n this.control.container.setAttribute('data-level', this.getLevel())\n this.control.container.setAttribute('data-path', this.instance.path)\n this.control.container.setAttribute('data-type', getSchemaType(this.instance.schema))\n\n const schemaContainerAttributes = getSchemaXOption(this.instance.schema, 'containerAttributes')\n\n if (isSet(schemaContainerAttributes) && isObject(schemaContainerAttributes)) {\n for (const [key, value] of Object.entries(schemaContainerAttributes)) {\n if (key === 'class') {\n const classes = value.split(' ')\n classes.forEach((cls) => {\n this.control.container.classList.add(cls)\n })\n } else {\n this.control.container.setAttribute(key, value)\n }\n }\n }\n }\n\n /**\n * Builds the editor control and appends it to the editor container\n */\n build () {\n }\n\n adaptForTable () {}\n\n /**\n * Adds attributes to generated html elements if specified in schema x-options\n */\n setAttributes () {\n const input = this.control.input\n\n if (isSet(input)) {\n const inputAttributes = getSchemaXOption(this.instance.schema, 'inputAttributes')\n\n if (isObject(inputAttributes)) {\n for (const [key, value] of Object.entries(inputAttributes)) {\n input.setAttribute(key, value)\n }\n }\n }\n }\n\n setReadOnlyAttribute () {\n if (this.readOnly) {\n const inputElements = this.control.container.querySelectorAll('input, textarea, select')\n inputElements.forEach((element) => {\n element.setAttribute('always-disabled', '')\n })\n }\n }\n\n getIdFromPath (path) {\n const optionId = this.instance.jedison.options.id\n return optionId ? optionId + '-' + pathToAttribute(path) : pathToAttribute(path)\n }\n\n /**\n * Determines the event type to use for validation trigger based on showErrors option\n * @returns {string} - 'input' or 'change'\n */\n getValidationEventType () {\n const showErrors = getSchemaXOption(this.instance.schema, 'showErrors') ?? this.instance.jedison.options.showErrors\n return showErrors === 'input' ? 'input' : 'change'\n }\n\n /**\n * Add event listeners to ui elements\n */\n addEventListeners () {\n }\n\n /**\n * Shows validation error messages in the editor container.\n */\n showValidationErrors (errors, force = false) {\n errors = errors.filter((error) => {\n return error.path === this.instance.path\n })\n\n this.control.messages.innerHTML = ''\n this.showingValidationErrors = false\n\n const neverShowErrors = this.instance.jedison.options.showErrors === 'never' || getSchemaXOption(this.instance.schema, 'showErrors') === 'never'\n\n if ((neverShowErrors && !force) || errors.length === 0) {\n return\n }\n\n errors.forEach((error) => {\n if (error.constraint === 'properties') {\n return\n }\n\n error.messages.forEach((message) => {\n let invalidFeedback\n\n if (error.type === 'error') {\n invalidFeedback = this.getErrorFeedback({\n message: message\n })\n } else {\n invalidFeedback = this.getWarningFeedback({\n message: message\n })\n }\n\n this.control.messages.appendChild(invalidFeedback)\n })\n })\n\n this.showingValidationErrors = true\n }\n\n /**\n * Get an error message container\n */\n getErrorFeedback (config) {\n return this.theme.getErrorFeedback(config)\n }\n\n /**\n * Get an error message container\n */\n getWarningFeedback (config) {\n return this.theme.getWarningFeedback(config)\n }\n\n /**\n * Disables the editor\n */\n disable () {\n this.disabled = true\n this.refreshUI()\n }\n\n /**\n * Enables the editor\n */\n enable () {\n this.disabled = false\n this.refreshUI()\n }\n\n /**\n * Clean out HTML tags from txt\n */\n purifyContent (content, domPurifyOptions) {\n if (this.instance.jedison.options.purifyHtml && window.DOMPurify) {\n return window.DOMPurify.sanitize(content, domPurifyOptions)\n } else {\n const tmp = document.createElement('div')\n tmp.innerHTML = content\n return (tmp.textContent || tmp.innerText)\n }\n }\n\n getHtmlFromMarkdown (content) {\n return window.marked.parse(content)\n }\n\n getTitle () {\n let titleFromSchema = false\n this.title = this.instance.getKey()\n\n const schemaTitle = getSchemaTitle(this.instance.schema)\n\n if (isSet(schemaTitle)) {\n this.title = schemaTitle\n titleFromSchema = true\n }\n\n if (titleFromSchema) {\n this.title = compileTemplate(this.title, this.instance.getTemplateData())\n this.title = this.markdownEnabled ? this.getHtmlFromMarkdown(this.title) : this.title\n\n const domPurifyOptions = combineDeep({}, this.instance.jedison.options.domPurifyOptions, {\n FORBID_TAGS: ['p']\n })\n\n this.title = this.purifyEnabled ? this.purifyContent(this.title, domPurifyOptions) : this.title\n }\n\n return this.title\n }\n\n getDescription () {\n const schemaDescription = getSchemaDescription(this.instance.schema)\n\n if (isSet(schemaDescription)) {\n this.description = compileTemplate(schemaDescription, this.instance.getTemplateData())\n this.description = this.markdownEnabled ? this.getHtmlFromMarkdown(this.description) : this.description\n\n const domPurifyOptions = this.instance.jedison.options.domPurifyOptions\n\n this.description = this.purifyEnabled ? this.purifyContent(this.description, domPurifyOptions) : this.description\n }\n\n return this.description\n }\n\n getInfo (schema = null) {\n const _schema = schema ?? this.instance.schema\n const schemaInfo = getSchemaXOption(_schema, 'info')\n\n if (!isSet(schemaInfo)) {\n return schemaInfo\n }\n\n const domPurifyOptions = this.instance.jedison.options.domPurifyOptions\n\n if (isSet(schemaInfo.title)) {\n schemaInfo.title = this.markdownEnabled ? this.getHtmlFromMarkdown(schemaInfo.title) : schemaInfo.title\n schemaInfo.title = this.purifyEnabled ? this.purifyContent(schemaInfo.title, domPurifyOptions) : schemaInfo.title\n }\n\n if (isSet(schemaInfo.content)) {\n schemaInfo.content = this.markdownEnabled ? this.getHtmlFromMarkdown(schemaInfo.content) : schemaInfo.content\n schemaInfo.content = this.purifyEnabled ? this.purifyContent(schemaInfo.content, domPurifyOptions) : schemaInfo.content\n }\n\n return schemaInfo\n }\n\n /**\n * Updates control UI when its state changes\n */\n refreshUI () {\n this.refreshDisabledState()\n this.refreshTemplates()\n }\n\n refreshDisabledState () {\n const interactiveElements = this.control.container.querySelectorAll('button, input, select, textarea')\n\n interactiveElements.forEach((element) => {\n if (this.disabled || this.readOnly || element.hasAttribute('always-disabled')) {\n element.setAttribute('disabled', '')\n } else {\n element.removeAttribute('disabled', '')\n }\n\n if (element.hasAttribute('always-enabled')) {\n element.removeAttribute('disabled', '')\n }\n })\n }\n\n refreshTemplates () {\n if (this.control.legendText && this.getTitle()) {\n this.control.legendText.innerHTML = this.getTitle()\n }\n\n if (this.control.labelText && this.getTitle()) {\n this.control.labelText.innerHTML = this.getTitle()\n }\n\n if (this.control.description && this.getDescription()) {\n this.control.description.innerHTML = this.getDescription()\n }\n }\n\n /**\n * Transforms the input value if necessary before value set\n */\n sanitize (value) {\n return value\n }\n\n /**\n * Destroys the editor\n */\n destroy () {\n if (this.control.container && this.control.container.parentNode) {\n this.control.container.parentNode.removeChild(this.control.container)\n }\n\n Object.keys(this).forEach((key) => {\n delete this[key]\n })\n }\n}\n\nexport default Editor\n","import Editor from './editor.js'\nimport {\n isSet\n} from '../helpers/utils.js'\nimport {\n getSchemaDescription,\n getSchemaIf,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an EditorIfThenElse instance.\n * @extends Editor\n */\nclass EditorIfThenElse extends Editor {\n static resolves (schema) {\n const schemaIf = getSchemaIf(schema)\n return isSet(schemaIf)\n }\n\n build () {\n this.control = this.theme.getIfThenElseControl({\n title: 'Options',\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n id: this.getIdFromPath(this.instance.path),\n description: getSchemaDescription(this.instance.schema)\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.childrenSlot.innerHTML = ''\n this.control.childrenSlot.appendChild(this.instance.activeInstance.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n this.instance.activeInstance.ui.disable()\n } else {\n this.instance.activeInstance.ui.enable()\n }\n }\n\n getErrorFeedback (config) {\n return this.theme.getAlert(config)\n }\n}\n\nexport default EditorIfThenElse\n","import Instance from './instance.js'\nimport EditorIfThenElse from '../editors/if-then-else.js'\nimport Jedison from '../jedison.js'\n\nimport {\n isSet,\n mergeDeep,\n clone,\n isObject,\n overwriteExistingProperties,\n hasOwn\n} from '../helpers/utils.js'\n\nimport {\n getSchemaElse,\n getSchemaIf,\n getSchemaThen\n} from '../helpers/schema.js'\n\n/**\n * Represents a InstanceIfThenElse instance.\n * @extends Instance\n */\nclass InstanceIfThenElse extends Instance {\n setUI () {\n this.ui = new EditorIfThenElse(this)\n }\n\n prepare () {\n this.instances = []\n this.instanceStartingValues = []\n this.instanceWithoutIf = null\n this.activeInstance = null\n this.index = 0\n this.schemas = []\n this.ifThenElseShemas = []\n\n this.traverseSchema(this.schema)\n\n delete this.schema.if\n delete this.schema.then\n delete this.schema.else\n\n this.ifThenElseShemas.forEach((item) => {\n if (isSet(item.then)) {\n this.schemas.push(mergeDeep({}, clone(this.schema), item.then))\n }\n\n if (isSet(item.else)) {\n this.schemas.push(mergeDeep({}, clone(this.schema), item.else))\n }\n })\n\n const schemaClone = clone(this.schema)\n delete schemaClone.if\n delete schemaClone.then\n delete schemaClone.else\n\n this.instanceWithoutIf = this.jedison.createInstance({\n jedison: this.jedison,\n schema: schemaClone,\n path: this.path,\n parent: this.parent\n })\n\n this.schemas.forEach((schema) => {\n const instance = this.jedison.createInstance({\n jedison: this.jedison,\n schema: schema,\n path: this.path,\n parent: this.parent\n })\n\n this.instanceStartingValues.push(instance.getValue())\n\n // instance.off('notifyParent')\n\n this.instances.push(instance)\n })\n\n this.on('set-value', (value, initiator) => {\n this.changeValue(value, initiator)\n })\n\n const ifValue = this.instanceWithoutIf.getValue()\n this.changeValue(ifValue)\n }\n\n changeValue (value, initiator = 'api') {\n const withoutIf = this.getWithoutIfValueFromValue(value)\n const fittestIndex = this.getFittestIndex(withoutIf)\n const indexChanged = fittestIndex !== this.index\n this.index = fittestIndex\n this.activeInstance = this.instances[fittestIndex]\n this.activeInstance.register()\n\n this.instances.forEach((instance, index) => {\n instance.off('notifyParent')\n\n if (instance.children && isObject(value)) {\n instance.children.forEach((child) => {\n const shouldUpdateValue = child.isMultiple && hasOwn(value, child.getKey())\n\n if (shouldUpdateValue) {\n child.setValue(value[child.getKey()], true, 'api')\n }\n })\n }\n\n const startingValue = this.instanceStartingValues[index]\n const currentValue = instance.getValue()\n let instanceValue = value\n\n if (isObject(startingValue) && isObject(value)) {\n if (indexChanged) {\n instanceValue = overwriteExistingProperties(startingValue, withoutIf)\n this.jedison.updateInstancesWatchedData()\n } else {\n instanceValue = overwriteExistingProperties(currentValue, value)\n }\n\n if (initiator === 'api') {\n instanceValue = overwriteExistingProperties(currentValue, value)\n }\n }\n\n instance.setValue(instanceValue, false, initiator)\n\n instance.on('notifyParent', (initiator) => {\n const value = instance.getValue()\n this.changeValue(value, initiator)\n this.emit('notifyParent', initiator)\n this.emit('change', initiator)\n })\n })\n\n // Ensure active instance processes the value again for nullable editors\n // Only apply secondary setValue if we have nullable fields that might need it\n if (initiator === 'api' && this.hasNullableFields(this.activeInstance)) {\n this.activeInstance.setValue(value, false, 'secondary')\n }\n\n this.value = this.activeInstance.getValue()\n }\n\n getWithoutIfValueFromValue (value) {\n let withoutIf = this.instanceWithoutIf.getValue()\n\n if (isObject(withoutIf) && isObject(value)) {\n withoutIf = overwriteExistingProperties(withoutIf, value)\n return withoutIf\n }\n\n return value\n }\n\n switchInstance (index) {\n this.index = index\n this.activeInstance = this.instances[this.index]\n }\n\n traverseSchema (schema) {\n const schemaIf = getSchemaIf(schema)\n\n if (isSet(schemaIf)) {\n const schemaThen = getSchemaThen(schema)\n const schemaElse = getSchemaElse(schema)\n\n this.ifThenElseShemas.push({\n if: schemaIf,\n then: isSet(schemaThen) ? schemaThen : {}\n })\n\n this.ifThenElseShemas.push({\n if: schemaIf,\n else: isSet(schemaElse) ? schemaElse : {}\n })\n }\n }\n\n /**\n * Check if an instance has nullable fields in its schema or children\n */\n hasNullableFields (instance) {\n if (!instance) return false\n\n // Check if the instance itself has a nullable schema\n if (this.isNullableSchema(instance.schema)) {\n return true\n }\n\n // Check if any child instances have nullable schemas\n if (instance.children) {\n return instance.children.some(child => this.hasNullableFields(child))\n }\n\n return false\n }\n\n /**\n * Check if a schema is nullable (has x-format: 'number-nullable' or similar nullable formats)\n */\n isNullableSchema (schema) {\n if (!schema) return false\n\n // Check for x-format nullable indicators\n if (schema['x-format'] && schema['x-format'].includes('nullable')) {\n return true\n }\n\n // Check for type array containing null\n if (Array.isArray(schema.type) && schema.type.includes('null')) {\n return true\n }\n\n // Recursively check properties\n if (schema.properties) {\n return Object.values(schema.properties).some(prop => this.isNullableSchema(prop))\n }\n\n return false\n }\n\n /**\n * Returns the index of the instance that has less validation errors\n */\n getFittestIndex (value) {\n let fittestIndex = this.index\n\n this.ifThenElseShemas.forEach((schema, index) => {\n if (schema.if === true) {\n fittestIndex = 0\n } else if (schema.if === false) {\n fittestIndex = 1\n } else {\n const testSchema = clone(schema.if)\n\n if (isSet(this.schema.type)) {\n testSchema.type = this.schema.type\n }\n\n const ifValidator = new Jedison({\n schema: testSchema,\n data: value,\n refParser: this.jedison.refParser\n })\n\n const ifErrors = ifValidator.getErrors()\n ifValidator.destroy()\n\n if (ifErrors.length === 0 && schema.then) {\n fittestIndex = index\n }\n\n if (ifErrors.length > 0 && schema.else) {\n fittestIndex = index\n }\n }\n })\n\n return fittestIndex\n }\n\n destroy () {\n this.instances.forEach((instance) => {\n instance.destroy()\n })\n\n super.destroy()\n }\n}\n\nexport default InstanceIfThenElse\n","import Instance from './instance.js'\nimport {\n isSet,\n isArray,\n different,\n clone,\n mergeDeep\n} from '../helpers/utils.js'\nimport {\n getSchemaAnyOf, getSchemaDescription,\n getSchemaOneOf,\n getSchemaTitle,\n getSchemaType,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents a InstanceMultiple instance.\n * @extends Instance\n */\nclass InstanceMultiple extends Instance {\n prepare () {\n this.instances = []\n this.activeInstance = null\n this.index = 0\n this.schemas = []\n this.switcherOptionValues = []\n this.switcherOptionsLabels = []\n this.isMultiple = true\n\n this.on('set-value', () => {\n this.onSetValue()\n })\n\n const schemaType = getSchemaType(this.schema)\n\n if (isSet(getSchemaAnyOf(this.schema)) || isSet(getSchemaOneOf(this.schema))) {\n const schemasOf = isSet(getSchemaAnyOf(this.schema)) ? getSchemaAnyOf(this.schema) : getSchemaOneOf(this.schema)\n const schemaCopy = clone(this.schema)\n delete schemaCopy['anyOf']\n delete schemaCopy['oneOf']\n delete schemaCopy['options']\n\n schemasOf.forEach((schema, index) => {\n schema = { ...schemaCopy, ...schema }\n\n let switcherOptionsLabel = 'Option-' + (index + 1)\n const switcherTitle = getSchemaXOption(schema, 'switcherTitle')\n const schemaTitle = getSchemaTitle(schema)\n const schemaDescription = getSchemaDescription(schema)\n\n if (isSet(schemaDescription)) {\n switcherOptionsLabel = schemaDescription\n }\n\n if (isSet(schemaTitle)) {\n switcherOptionsLabel = schemaTitle\n }\n\n if (isSet(switcherTitle)) {\n switcherOptionsLabel = switcherTitle\n }\n\n this.switcherOptionValues.push(index)\n this.switcherOptionsLabels.push(switcherOptionsLabel)\n this.schemas.push(schema)\n })\n } else if (isArray(schemaType)) {\n schemaType.forEach((type, index) => {\n const schemaClone = mergeDeep(this.schema)\n\n const schema = {\n ...schemaClone,\n ...{ type: type, title: type[0].toUpperCase() + type.slice(1) }\n }\n\n if (isSet(schemaClone.title)) {\n schema.title = schemaClone.title\n }\n\n this.switcherOptionValues.push(index)\n this.switcherOptionsLabels.push(type.charAt(0).toUpperCase() + type.slice(1))\n\n this.schemas.push(schema)\n })\n } else if (schemaType === 'any' || !schemaType) {\n const schemaClone = clone(this.schema)\n\n this.schemas = [\n { ...schemaClone, ...{ type: 'string' } },\n { ...schemaClone, ...{ type: 'boolean' } },\n { ...schemaClone, ...{ type: 'integer' } },\n { ...schemaClone, ...{ type: 'number' } },\n { ...schemaClone, ...{ type: 'array' } },\n { ...schemaClone, ...{ type: 'object' } },\n { ...schemaClone, ...{ type: 'null' } }\n ]\n\n this.schemas.forEach((schema, index) => {\n this.switcherOptionValues.push(index)\n })\n\n this.switcherOptionsLabels = [\n 'String', 'Boolean', 'Integer', 'Number', 'Array', 'Object', 'Null'\n ]\n }\n\n this.schemas.forEach((schema) => {\n const instance = this.jedison.createInstance({\n jedison: this.jedison,\n schema: schema,\n path: this.path,\n parent: this.parent,\n value: clone(this.value)\n })\n\n if (isSet(this.value)) {\n instance.setValue(this.value, false)\n }\n\n instance.unregister()\n\n instance.off('notifyParent')\n\n instance.on('notifyParent', (initiator) => {\n this.value = this.activeInstance.getValue()\n this.emit('notifyParent', initiator)\n this.emit('change', initiator)\n })\n\n this.instances.push(instance)\n\n this.register()\n })\n\n const fittestIndex = this.getFittestIndex(this.value)\n this.switchInstance(fittestIndex, this.value)\n }\n\n switchInstance (index, value, initiator = 'api') {\n this.index = index\n this.activeInstance = this.instances[index]\n\n if (isSet(value)) {\n this.activeInstance.setValue(value, false, initiator)\n }\n\n this.setValue(this.activeInstance.getValue(), true, initiator)\n }\n\n onSetValue () {\n if (different(this.activeInstance.getValue(), this.value)) {\n const fittestIndex = this.getFittestIndex(this.value)\n this.switchInstance(fittestIndex, this.value)\n }\n }\n\n /**\n * Returns the index of the instance that has less validation errors\n */\n getFittestIndex (value) {\n let fittestIndex\n let championErrors\n\n for (let index = 0; index < this.instances.length; index++) {\n const instance = this.instances[index]\n const instanceErrors = this.jedison.validator.getErrors(value, instance.schema, instance.getKey(), instance.path)\n\n // If an instance has no errors, return its index immediately\n if (instanceErrors.length === 0) {\n fittestIndex = index\n break\n }\n\n if (fittestIndex === undefined || championErrors === undefined || instanceErrors.length < championErrors.length) {\n fittestIndex = index\n championErrors = instanceErrors\n }\n }\n\n return fittestIndex\n }\n\n destroy () {\n this.instances.forEach((instance) => {\n instance.destroy()\n })\n\n super.destroy()\n }\n}\n\nexport default InstanceMultiple\n","import Instance from './instance.js'\n\n/**\n * Represents a InstanceBoolean instance.\n * @extends Instance\n */\nclass InstanceBoolean extends Instance {}\n\nexport default InstanceBoolean\n","import Instance from './instance.js'\nimport { different, isSet, notSet, isObject, hasOwn, clone, isNumber } from '../helpers/utils.js'\nimport {\n getSchemaAdditionalProperties,\n getSchemaDependentRequired,\n getSchemaPatternProperties,\n getSchemaProperties,\n getSchemaRequired,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an InstanceObject instance.\n * @extends Instance\n */\nclass InstanceObject extends Instance {\n prepare () {\n this.properties = {}\n this.requiredProperties = new Set()\n\n const schemaProperties = getSchemaProperties(this.schema)\n const schemaRequired = getSchemaRequired(this.schema)\n\n if (isSet(schemaProperties)) {\n Object.keys(schemaProperties).forEach((key) => {\n const schema = schemaProperties[key]\n this.properties[key] = { schema }\n\n let musstCreateChild = true\n\n const optionsDeactivateNonRequired = this.jedison.options.deactivateNonRequired\n const deactivateNonRequired = getSchemaXOption(this.schema, 'deactivateNonRequired')\n const schemaDeactivateNonRequired = getSchemaXOption(schema, 'deactivateNonRequired')\n\n if (!this.isRequired(key) && isSet(optionsDeactivateNonRequired) && optionsDeactivateNonRequired === true) {\n musstCreateChild = false\n }\n\n if (!this.isRequired(key) && isSet(deactivateNonRequired) && deactivateNonRequired === true) {\n musstCreateChild = false\n }\n\n if (!this.isRequired(key) && isSet(schemaDeactivateNonRequired) && schemaDeactivateNonRequired === true) {\n musstCreateChild = false\n }\n\n if (musstCreateChild) {\n this.createChild(schema, key)\n }\n })\n }\n\n // Add properties listed in schema required too if not present in schema properties\n if (isSet(schemaRequired) && this.jedison.isEditor && this.jedison.options.enforceRequired === true) {\n schemaRequired.forEach((requiredProperty) => {\n this.requiredProperties.add(requiredProperty)\n\n if (!hasOwn(this.properties, requiredProperty)) {\n this.properties[requiredProperty] = {}\n this.createChild({}, requiredProperty)\n }\n })\n }\n\n this.refreshInstances()\n\n this.on('set-value', (value, initiator) => {\n this.addMissingRequiredPropertiesToValue(value)\n this.removeNotListedPropertiesFromValue(value)\n this.refreshInstances(initiator)\n })\n }\n\n removeNotListedPropertiesFromValue (value) {\n const schemaEnforceAdditionalProperties = getSchemaXOption(this.schema, 'enforceAdditionalProperties')\n const enforceAdditionalProperties = isSet(schemaEnforceAdditionalProperties) ? schemaEnforceAdditionalProperties : this.jedison.options.enforceAdditionalProperties\n const schemaAdditionalProperties = getSchemaAdditionalProperties(this.schema)\n const schemaPatternProperties = getSchemaPatternProperties(this.schema) || {}\n\n if (this.jedison.isEditor && enforceAdditionalProperties && isSet(schemaAdditionalProperties) && schemaAdditionalProperties === false) {\n Object.keys(value).forEach((propertyName) => {\n const matchesPattern = Object.keys(schemaPatternProperties).some(pattern => new RegExp(pattern).test(propertyName))\n\n if (!hasOwn(this.properties, propertyName) && !matchesPattern) {\n console.warn('deleting', propertyName)\n delete value[propertyName]\n }\n })\n }\n }\n\n addMissingRequiredPropertiesToValue (value) {\n const enforceRequired = getSchemaXOption(this.schema, 'enforceRequired') ?? this.jedison.options.enforceRequired\n\n if (this.jedison.isEditor && enforceRequired) {\n this.requiredProperties.forEach((propertyName) => {\n if (!hasOwn(value, propertyName)) {\n value[propertyName] = this.getChild(propertyName).getValue()\n }\n })\n }\n }\n\n /**\n * Returns true if the property is required\n */\n isRequired (property) {\n const schemaRequired = getSchemaRequired(this.schema)\n const inSchemaRequired = isSet(schemaRequired) && schemaRequired.includes(property)\n const inSchemaDependentRequired = this.isDependentRequired(property)\n\n return inSchemaRequired || inSchemaDependentRequired\n }\n\n /**\n * Returns true if the property is dependent required\n */\n isDependentRequired (property) {\n const dependentRequired = getSchemaDependentRequired(this.schema)\n\n if (isSet(dependentRequired)) {\n let missingProperties = []\n\n Object.keys(dependentRequired).forEach((key) => {\n if (isSet(this.value[key])) {\n const requiredProperties = dependentRequired[key]\n\n missingProperties = requiredProperties.filter((property) => {\n return !hasOwn(this.value, property)\n })\n }\n })\n\n return missingProperties.includes(property)\n }\n\n return false\n }\n\n createChild (schema, key, value, activate = false) {\n const instance = this.jedison.createInstance({\n jedison: this.jedison,\n schema: schema,\n path: this.path + this.jedison.pathSeparator + key,\n parent: this,\n value: clone(value)\n })\n\n this.children.push(instance)\n this.value[key] = instance.getValue()\n\n const deactivateNonRequired = getSchemaXOption(this.schema, 'deactivateNonRequired') ?? this.jedison.options.deactivateNonRequired\n\n if (!this.isRequired(key) && isSet(deactivateNonRequired) && deactivateNonRequired === true && !activate) {\n instance.deactivate()\n }\n\n this.onChildChange()\n\n return instance\n }\n\n deleteChild (key) {\n for (let i = this.children.length - 1; i >= 0; i--) {\n const instance = this.children[i]\n if (instance.getKey() === key) {\n instance.destroy()\n this.children.splice(i, 1)\n this.onChildChange()\n }\n }\n }\n\n getChild (key) {\n return this.children.find((instance) => {\n return key === instance.getKey().split(this.jedison.pathSeparator).pop()\n })\n }\n\n getPropertySchema (propertyName) {\n let schema\n const schemaAdditionalProperties = getSchemaAdditionalProperties(this.schema)\n const schemaProperties = getSchemaProperties(this.schema)\n const schemaPatternProperties = getSchemaPatternProperties(this.schema)\n\n // Determine the appropriate schema\n if (isSet(schemaProperties) && hasOwn(schemaProperties, propertyName)) {\n // If the propertyName is explicitly defined in `properties`, use it\n schema = schemaProperties[propertyName]\n } else if (isSet(schemaPatternProperties)) {\n // If no exact match in `properties`, check if it matches any pattern in `patternProperties`\n Object.keys(schemaPatternProperties).forEach((pattern) => {\n const regexp = new RegExp(pattern)\n if (regexp.test(propertyName)) {\n schema = schemaPatternProperties[pattern]\n }\n })\n }\n\n if (notSet(schema) && isSet(schemaAdditionalProperties)) {\n // If no match was found in `properties` or `patternProperties`, use `additionalProperties`\n schema = schemaAdditionalProperties\n }\n\n if (notSet(schema)) {\n schema = {}\n }\n\n return schema\n }\n\n onChildChange (initiator) {\n const value = {}\n\n this.children.forEach((child) => {\n if (child.isActive) {\n const propertyName = child.getKey()\n\n if (propertyName === '__proto__') {\n Object.defineProperty(value, propertyName, {\n value: child.getValue(),\n enumerable: true\n })\n } else {\n value[propertyName] = child.getValue()\n }\n }\n })\n\n this.value = value\n this.jedison.emit('instance-change', this, initiator)\n this.emit('notifyParent', initiator)\n this.emit('change', initiator)\n }\n\n /**\n * Sorts the children of the current instance based on their `propertyOrder` value in ascending order.\n * The sorting is done using the `propertyOrder` obtained from each child's schema, which should be a number.\n * If a child does not have a valid `propertyOrder` (i.e., the value is not a number), it will be placed after the child with a valid `propertyOrder`.\n * @returns {void} This function modifies the `children` array of the instance in place.\n */\n sortChildrenByPropertyOrder () {\n this.children = this.children.sort((a, b) => {\n const propertyOrderA = getSchemaXOption(a.schema, 'propertyOrder')\n const propertyOrderB = getSchemaXOption(b.schema, 'propertyOrder')\n\n const isValidNumberA = isNumber(propertyOrderA)\n const isValidNumberB = isNumber(propertyOrderB)\n\n if (!isValidNumberA && isValidNumberB) {\n return 1\n }\n\n if (isValidNumberA && !isValidNumberB) {\n return -1\n }\n\n if (propertyOrderA < propertyOrderB) {\n return -1\n }\n\n if (propertyOrderA > propertyOrderB) {\n return 1\n }\n\n return 0\n })\n }\n\n refreshInstances (initiator) {\n const value = this.getValue()\n\n if (!isObject(value)) {\n return\n }\n\n Object.keys(value).forEach((propertyName) => {\n const child = this.getChild(propertyName)\n\n // If a value has already a child instance\n if (child) {\n child.activate()\n const oldValue = child.getValue()\n const newValue = value[child.getKey()]\n\n // update child value if the old value and the new value are different\n if (different(oldValue, newValue)) {\n const finalValue = child.setValue(newValue, false, initiator)\n // Update the value with the final value after constraint enforcement\n value[child.getKey()] = finalValue\n }\n } else {\n // create new child instance for the new value entry having the value as default\n const schema = this.getPropertySchema(propertyName)\n\n this.createChild(schema, propertyName, value[propertyName], true)\n }\n })\n\n // remove any children that are not included in the value\n for (let i = this.children.length - 1; i >= 0; i--) {\n const instance = this.children[i]\n const propertyName = instance.getKey()\n if (notSet(value[propertyName])) {\n if (this.getChild(propertyName)) {\n instance.deactivate()\n } else {\n this.deleteChild(propertyName)\n }\n }\n }\n\n this.sortChildrenByPropertyOrder()\n\n // Update the object's value with the corrected values after constraint enforcement\n this.value = value\n }\n}\n\nexport default InstanceObject\n","import Instance from './instance.js'\nimport { isSet, clone, isArray } from '../helpers/utils.js'\nimport {\n getSchemaDefault,\n getSchemaItems,\n getSchemaMinItems,\n getSchemaPrefixItems,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an InstanceArray instance.\n * @extends Instance\n */\nclass InstanceArray extends Instance {\n prepare () {\n const schemaMinItems = getSchemaMinItems(this.schema, 'minItems')\n const schemaEnforceMinItems = getSchemaXOption(this.schema, 'enforceMinItems')\n const enforceMinItems = isSet(schemaEnforceMinItems) ? schemaEnforceMinItems : this.jedison.options.enforceMinItems\n const isEditor = this.jedison.isEditor\n const hasEnforceMinItems = isSet(enforceMinItems) && enforceMinItems === true\n const hasMinItems = isSet(schemaMinItems)\n\n if (isEditor && hasEnforceMinItems && hasMinItems) {\n for (let i = 0; i < schemaMinItems; i++) {\n this.addItem()\n }\n }\n\n this.refreshChildren()\n\n this.on('set-value', () => {\n this.refreshChildren()\n })\n }\n\n createItemInstance (index) {\n let schema\n const itemsCount = this.children.length\n const schemaItems = getSchemaItems(this.schema)\n const schemaPrefixItems = getSchemaPrefixItems(this.schema)\n schema = isSet(schemaItems) ? schemaItems : {}\n\n const hasPrefixItemsSchema = isSet(schemaPrefixItems) && isSet(schemaPrefixItems[itemsCount])\n\n if (hasPrefixItemsSchema) {\n schema = schemaPrefixItems[itemsCount]\n }\n\n return this.jedison.createInstance({\n jedison: this.jedison,\n schema: schema,\n path: this.path + this.jedison.pathSeparator + itemsCount,\n parent: this,\n arrayTemplateData: {\n i0: index,\n i1: (index + 1)\n }\n })\n }\n\n setDefaultValue () {\n const schemaDefault = getSchemaDefault(this.schema)\n\n if (isSet(schemaDefault)) {\n this.setValue(schemaDefault)\n }\n }\n\n move (fromIndex, toIndex, initiator) {\n const value = clone(this.getValue())\n const item = value[fromIndex]\n value.splice(fromIndex, 1)\n value.splice(toIndex, 0, item)\n this.setValue(value, true, initiator)\n this.emit('item-move', initiator)\n this.jedison.emit('item-move', initiator)\n }\n\n addItem (initiator) {\n const tempEditor = this.createItemInstance()\n const value = clone(this.getValue())\n value.push(tempEditor.getValue())\n tempEditor.destroy()\n this.setValue(value, true, initiator)\n const instance = this.children[this.children.length - 1]\n this.emit('item-add', initiator, instance)\n this.jedison.emit('item-add', initiator, instance)\n }\n\n deleteItem (itemIndex, initiator) {\n const currentValue = clone(this.getValue())\n const newValue = currentValue.filter((item, index) => index !== itemIndex)\n this.setValue(newValue, true, initiator)\n this.emit('item-delete', initiator)\n this.jedison.emit('item-delete', initiator)\n }\n\n onChildChange (initiator) {\n const value = []\n\n this.children.forEach((child) => {\n value.push(child.getValue())\n })\n\n this.value = value\n this.jedison.emit('instance-change', this, initiator)\n this.emit('notifyParent', initiator)\n this.emit('change', initiator)\n }\n\n refreshChildren () {\n this.children = []\n\n const value = this.getValue()\n\n if (!isArray(value)) {\n return\n }\n\n const correctedValues = []\n value.forEach((itemValue, index) => {\n const child = this.createItemInstance(index)\n this.children.push(child)\n const finalValue = child.setValue(itemValue, false)\n correctedValues.push(finalValue)\n })\n\n // Update the array's value with constraint-enforced values\n this.value = correctedValues\n }\n}\n\nexport default InstanceArray\n","import Instance from './instance.js'\n\n/**\n * Represents a InstanceString instance.\n * @extends Instance\n */\nclass InstanceString extends Instance {}\n\nexport default InstanceString\n","import Instance from './instance.js'\n\n/**\n * Represents a InstanceNumber instance.\n * @extends Instance\n */\nclass InstanceNumber extends Instance {\n}\n\nexport default InstanceNumber\n","import Instance from './instance.js'\n\n/**\n * Represents a InstanceNull instance.\n * @extends Instance\n */\nclass InstanceNull extends Instance {\n}\n\nexport default InstanceNull\n","export const glyphicons = {\n properties: 'glyphicon glyphicon-list',\n delete: 'glyphicon glyphicon-trash',\n add: 'glyphicon glyphicon-plus',\n moveUp: 'glyphicon glyphicon-arrow-up',\n moveDown: 'glyphicon glyphicon-arrow-down',\n collapse: 'glyphicon glyphicon-chevron-down',\n expand: 'glyphicon glyphicon-plus', // Expand set to plus\n drag: 'glyphicon glyphicon-th',\n info: 'glyphicon glyphicon-question-sign',\n close: 'glyphicon glyphicon-remove',\n edit: 'glyphicon glyphicon-pencil',\n save: 'glyphicon glyphicon-floppy-disk'\n}\n\nexport const bootstrapIcons = {\n properties: 'bi bi-card-list',\n delete: 'bi bi-trash2',\n add: 'bi bi-plus',\n moveUp: 'bi bi-arrow-up',\n moveDown: 'bi bi-arrow-down',\n collapse: 'bi bi-chevron-down',\n expand: 'bi bi-plus',\n drag: 'bi bi-grip-vertical',\n info: 'bi bi-question-circle',\n close: 'bi bi-x',\n edit: 'bi bi-pencil',\n save: 'bi bi-floppy'\n}\n\nexport const fontAwesome3 = {\n properties: 'icon-list',\n delete: 'icon-trash',\n add: 'icon-plus',\n moveUp: 'icon-arrow-up',\n moveDown: 'icon-arrow-down',\n collapse: 'icon-chevron-down',\n expand: 'icon-plus',\n drag: 'icon-th',\n info: 'icon-question-sign',\n close: 'icon-remove',\n edit: 'icon-pencil',\n save: 'icon-save'\n}\n\nexport const fontAwesome4 = {\n properties: 'fa fa-list',\n delete: 'fa fa-trash-o',\n add: 'fa fa-plus',\n moveUp: 'fa fa-arrow-up',\n moveDown: 'fa fa-arrow-down',\n collapse: 'fa fa-chevron-down',\n expand: 'fa fa-plus',\n drag: 'fa fa-th',\n info: 'fa fa-question-circle',\n close: 'fa fa-times',\n edit: 'fa fa-pencil',\n save: 'fa fa-floppy-o'\n}\n\nexport const fontAwesome5 = {\n properties: 'fas fa-list',\n delete: 'fas fa-trash',\n add: 'fas fa-plus',\n moveUp: 'fas fa-arrow-up',\n moveDown: 'fas fa-arrow-down',\n collapse: 'fas fa-chevron-down',\n expand: 'fas fa-plus',\n drag: 'fas fa-grip-vertical',\n info: 'fas fa-question-circle',\n close: 'fas fa-times',\n edit: 'fas fa-pencil-alt',\n save: 'fas fa-save'\n}\n\nexport const fontAwesome6 = {\n properties: 'fa-solid fa-list',\n delete: 'fa-solid fa-trash',\n add: 'fa-solid fa-plus',\n moveUp: 'fa-solid fa-arrow-up',\n moveDown: 'fa-solid fa-arrow-down',\n collapse: 'fa-solid fa-chevron-down',\n expand: 'fa-solid fa-plus',\n drag: 'fa-solid fa-grip-vertical',\n info: 'fa-solid fa-circle-question',\n close: 'fa-solid fa-xmark',\n edit: 'fa-solid fa-pencil',\n save: 'fa-solid fa-floppy-disk'\n}\n","import Editor from './editor.js'\n\n/**\n * Represents a EditorBoolean instance.\n * @extends Editor\n */\nclass EditorBoolean extends Editor {\n sanitize (value) {\n return Boolean(value)\n }\n}\n\nexport default EditorBoolean\n","import EditorBoolean from './boolean.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorRadios instance.\n * @extends EditorBooleanCheckbox\n */\nclass EditorRadios extends EditorBoolean {\n static resolves (schema) {\n return getSchemaType(schema) === 'boolean' && (getSchemaXOption(schema, 'format') === 'radios' || getSchemaXOption(schema, 'format') === 'radios-inline')\n }\n\n build () {\n this.control = this.theme.getRadiosControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: ['false', 'true'],\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || ['false', 'true'],\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n inline: getSchemaXOption(this.instance.schema, 'format') === 'radios-inline',\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableRadiosControl(this.control)\n }\n\n addEventListeners () {\n this.control.radios.forEach((radio) => {\n radio.addEventListener('change', () => {\n const radioValue = radio.value === 'true'\n this.instance.setValue(radioValue, true, 'user')\n })\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.radios.forEach((radio) => {\n const radioValue = radio.value === 'true'\n radio.checked = radioValue === this.instance.getValue()\n })\n }\n}\n\nexport default EditorRadios\n","import EditorBoolean from './boolean.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorBooleanSelect instance.\n * @extends EditorBooleanCheckbox\n */\nclass EditorBooleanSelect extends EditorBoolean {\n static resolves (schema) {\n return getSchemaType(schema) === 'boolean'\n }\n\n build () {\n this.control = this.theme.getSelectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: ['false', 'true'],\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || ['false', 'true'],\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableSelectControl(this.control)\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n const value = this.control.input.value === 'true'\n this.instance.setValue(value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue() === true ? 'true' : 'false'\n }\n}\n\nexport default EditorBooleanSelect\n","import EditorBoolean from './boolean.js'\nimport { getSchemaXOption, getSchemaType } from '../helpers/schema.js'\n\n/**\n * Represents a EditorBooleanCheckbox instance.\n * @extends Editor\n */\nclass EditorBooleanCheckbox extends EditorBoolean {\n static resolves (schema) {\n return getSchemaType(schema) === 'boolean' && getSchemaXOption(schema, 'format') === 'checkbox'\n }\n\n build () {\n this.control = this.theme.getCheckboxControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable (td) {\n this.theme.adaptForTableCheckboxControl(this.control, td)\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n this.instance.setValue(this.control.input.checked, true, 'user')\n })\n }\n\n sanitize (value) {\n return Boolean(value)\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.checked = this.instance.getValue()\n }\n}\n\nexport default EditorBooleanCheckbox\n","import Editor from './editor.js'\n\n/**\n * Represents a EditorString instance.\n * @extends Editor\n */\nclass EditorString extends Editor {\n sanitize (value) {\n return String(value)\n }\n}\n\nexport default EditorString\n","import EditorString from './string.js'\nimport { getSchemaEnum, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringRadios instance.\n * @extends EditorString\n */\nclass EditorStringRadios extends EditorString {\n static resolves (schema) {\n return getSchemaType(schema) === 'string' && (getSchemaXOption(schema, 'format') === 'radios' || getSchemaXOption(schema, 'format') === 'radios-inline')\n }\n\n build () {\n this.control = this.theme.getRadiosControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema),\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || getSchemaEnum(this.instance.schema),\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n inline: getSchemaXOption(this.instance.schema, 'format') === 'radios-inline',\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableRadiosControl(this.control)\n }\n\n addEventListeners () {\n this.control.radios.forEach((radio) => {\n radio.addEventListener('change', () => {\n this.instance.setValue(radio.value, true, 'user')\n })\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.radios.forEach((radio) => {\n radio.checked = (radio.value === this.instance.getValue())\n })\n }\n}\n\nexport default EditorStringRadios\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaEnum, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringSelect instance.\n * @extends EditorString\n */\nclass EditorStringSelect extends EditorString {\n static resolves (schema) {\n return getSchemaType(schema) === 'string' && isSet(getSchemaEnum(schema))\n }\n\n build () {\n this.control = this.theme.getSelectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema),\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || getSchemaEnum(this.instance.schema),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableSelectControl(this.control)\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue()\n }\n}\n\nexport default EditorStringSelect\n","import EditorString from './string.js'\nimport { getSchemaXOption, getSchemaType } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringTextarea instance.\n * @extends EditorString\n */\nclass EditorStringTextarea extends EditorString {\n static resolves (schema) {\n return getSchemaType(schema) === 'string' && getSchemaXOption(schema, 'format') === 'textarea'\n }\n\n build () {\n this.control = this.theme.getTextareaControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableTextareaControl(this.control)\n }\n\n addEventListeners () {\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue()\n }\n}\n\nexport default EditorStringTextarea\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringAwesomplete instance.\n * @extends EditorString\n */\nclass EditorStringAwesomplete extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'awesomplete' &&\n window.Awesomplete &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const awesompleteOptions = getSchemaXOption(this.instance.schema, 'awesomplete') ?? {}\n this.awesomplete = new window.Awesomplete(this.control.input, awesompleteOptions)\n this.control.container.querySelector('.awesomplete').style.display = 'block'\n } catch (e) {\n console.error('Awesomplete is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.control.input.addEventListener('awesomplete-selectcomplete', () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue()\n }\n\n destroy () {\n this.awesomplete.destroy()\n super.destroy()\n }\n}\n\nexport default EditorStringAwesomplete\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Emoji picker editor using Emoji Button library.\n * @extends EditorString\n */\nclass EditorStringEmojiButton extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'emojiButton' &&\n window.EmojiButton &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getInputControl({\n type: 'button',\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n this.control.input.classList.add('jedi-emoji-button')\n this.control.input.value = '😀'\n\n const emojiButtonOptions = getSchemaXOption(this.instance.schema, 'emojiButton') ?? {}\n\n const options = Object.assign({\n theme: 'auto',\n autoHide: true,\n showPreview: false,\n showSearch: true,\n zIndex: 10000,\n position: 'auto'\n }, emojiButtonOptions)\n\n this.emojiButton = new window.EmojiButton(options)\n }\n\n addEventListeners () {\n this.emojiButton.on('emoji', emoji => {\n this.control.input.value = emoji\n let value = emoji\n\n if (typeof emoji === 'object') {\n value = emoji.emoji\n }\n\n this.instance.setValue(value, true, 'user')\n })\n\n this.control.input.addEventListener('click', () => {\n this.emojiButton.togglePicker(this.control.input)\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue()\n }\n\n destroy () {\n if (this.emojiButton) {\n this.emojiButton = null\n }\n\n super.destroy()\n }\n}\n\nexport default EditorStringEmojiButton\n","import EditorString from './string.js'\nimport { getSchemaXOption, getSchemaType } from '../helpers/schema.js'\n\n/**\n * Represents a EditorString instance.\n * @extends Editor\n */\nclass EditorStringInput extends EditorString {\n static resolves (schema) {\n return getSchemaType(schema) === 'string'\n }\n\n static getTypes () {\n return ['hidden', 'color', 'date', 'datetime-local', 'email', 'number', 'month', 'password', 'search', 'time', 'tel', 'text', 'url', 'week']\n }\n\n build () {\n const optionFormat = getSchemaXOption(this.instance.schema, 'format')\n\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: EditorStringInput.getTypes().includes(optionFormat) ? optionFormat : 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden') || optionFormat === 'hidden',\n info: this.getInfo()\n })\n\n // fix color picker bug\n if (optionFormat === 'color' && this.instance.value.length === 0) {\n this.instance.setValue('#000000', false, 'user')\n }\n }\n\n adaptForTable () {\n this.theme.adaptForTableInputControl(this.control)\n }\n\n addEventListeners () {\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n sanitize (value) {\n return String(value)\n }\n\n refreshUI () {\n super.refreshUI()\n this.control.input.value = this.instance.getValue()\n }\n}\n\nexport default EditorStringInput\n","import Editor from './editor.js'\nimport { getSchemaType } from '../helpers/schema.js'\n\n/**\n * Represents a EditorNumber instance.\n * @extends Editor\n */\nclass EditorNumber extends Editor {\n sanitize (value) {\n if (getSchemaType(this.instance.schema) === 'integer') {\n return Math.floor(Number(value))\n } else {\n return Number(value)\n }\n }\n}\n\nexport default EditorNumber\n","import EditorNumber from './number.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaEnum, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorNumberRadios instance.\n * @extends EditorNumber\n */\nclass EditorNumberRadios extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const schemaEnum = getSchemaEnum(schema)\n const optionFormat = getSchemaXOption(schema, 'format')\n const typeIsNumeric = schemaType === 'number' || schemaType === 'integer'\n return typeIsNumeric && isSet(schemaEnum) && (optionFormat === 'radios' || optionFormat === 'radios-inline')\n }\n\n build () {\n this.control = this.theme.getRadiosControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema),\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || getSchemaEnum(this.instance.schema),\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n inline: getSchemaXOption(this.instance.schema, 'format') === 'radios-inline',\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableRadiosControl(this.control)\n }\n\n addEventListeners () {\n this.control.radios.forEach((radio) => {\n radio.addEventListener('change', () => {\n const value = this.sanitize(radio.value)\n this.instance.setValue(value, true, 'user')\n })\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.radios.forEach((radio) => {\n radio.checked = (Number(radio.value) === Number(this.instance.getValue()))\n })\n }\n}\n\nexport default EditorNumberRadios\n","import EditorNumber from './number.js'\nimport { isNumber, isSet } from '../helpers/utils.js'\nimport { getSchemaEnum, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorNumberSelect instance.\n * @extends EditorNumber\n */\nclass EditorNumberSelect extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const typeIsNumeric = schemaType === 'number' || schemaType === 'integer'\n return typeIsNumeric && isSet(getSchemaEnum(schema))\n }\n\n build () {\n this.control = this.theme.getSelectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema),\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || getSchemaEnum(this.instance.schema),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableSelectControl(this.control)\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n const value = this.sanitize(this.control.input.value)\n this.instance.setValue(value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n const value = this.instance.getValue()\n\n if (isNumber(value)) {\n this.control.input.value = this.instance.getValue()\n }\n }\n}\n\nexport default EditorNumberSelect\n","import EditorNumber from './number.js'\nimport { isNumber, isSet } from '../helpers/utils.js'\nimport {\n getSchemaXOption,\n getSchemaType, getSchemaMinimum, getSchemaMaximum\n} from '../helpers/schema.js'\n\n/**\n * Represents a EditorNumber instance.\n * @extends EditorNumber\n */\nclass EditorNumberInput extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n return schemaType === 'number' || schemaType === 'integer'\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'number',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden') || getSchemaXOption(this.instance.schema, 'format') === 'hidden',\n info: this.getInfo()\n })\n\n this.control.input.setAttribute('step', 'any')\n\n const useConstraintAttributes = getSchemaXOption(this.instance.schema, 'useConstraintAttributes') ?? this.instance.jedison.options.useConstraintAttributes\n\n if (useConstraintAttributes === true) {\n const schemaMinimum = getSchemaMinimum(this.instance.schema)\n const schemaMaximum = getSchemaMaximum(this.instance.schema)\n\n if (isSet(schemaMinimum)) {\n this.control.input.setAttribute('min', schemaMinimum)\n }\n\n if (isSet(schemaMaximum)) {\n this.control.input.setAttribute('max', schemaMaximum)\n }\n }\n }\n\n adaptForTable () {\n this.theme.adaptForTableInputControl(this.control)\n }\n\n addEventListeners () {\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n const value = this.sanitize(this.control.input.value)\n this.instance.setValue(value, true, 'user')\n })\n\n this.control.input.addEventListener('focus', () => {\n if (this.control.input.value === '0') {\n this.control.input.value = this.instance.getValue().toString()\n }\n })\n\n this.control.input.addEventListener('blur', () => {\n this.refreshUI()\n })\n }\n\n refreshUI () {\n super.refreshUI()\n const value = this.instance.getValue()\n\n if (isNumber(value)) {\n this.control.input.value = value\n }\n }\n}\n\nexport default EditorNumberInput\n","import EditorNumberInput from './number-input.js'\nimport {\n isArray,\n isNumber,\n isSet\n} from '../helpers/utils.js'\nimport {\n getSchemaXOption,\n getSchemaType\n} from '../helpers/schema.js'\n\n/**\n * Represents a EditorNumberInputNullable instance.\n * @extends Editor\n */\nclass EditorNumberInputNullable extends EditorNumberInput {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const format = getSchemaXOption(schema, 'format')\n return isSet(format) &&\n format === 'number-nullable' &&\n isSet(schemaType) &&\n isArray(schemaType) &&\n schemaType.length === 2 &&\n schemaType.includes('null') &&\n (schemaType.includes('number') || schemaType.includes('integer'))\n }\n\n addEventListeners () {\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n const value = this.sanitize(this.control.input.value)\n this.instance.setValue(value, true, 'user')\n })\n }\n\n sanitize (value) {\n if (value === '') {\n return null\n }\n\n const schemaType = getSchemaType(this.instance.schema)\n\n if (schemaType.includes('integer')) {\n return Math.floor(Number(value))\n } else {\n return Number(value)\n }\n }\n\n refreshUI () {\n super.refreshUI()\n const value = this.instance.getValue()\n\n if (value === null) {\n this.control.input.value = ''\n }\n\n if (isNumber(value)) {\n const schemaType = getSchemaType(this.instance.schema)\n\n if (schemaType.includes('integer')) {\n this.control.input.value = Math.floor(Number(value))\n } else {\n this.control.input.value = value\n }\n }\n }\n}\n\nexport default EditorNumberInputNullable\n","import Editor from './editor.js'\nimport {\n equal,\n hasOwn,\n isObject,\n isSet, isString,\n pathToAttribute\n} from '../helpers/utils.js'\nimport {\n getSchemaAdditionalProperties,\n getSchemaTitle, getSchemaType,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an EditorObject instance.\n * @extends Editor\n */\nclass EditorObject extends Editor {\n static resolves (schema) {\n return getSchemaType(schema) === 'object'\n }\n\n build () {\n this.propertyActivators = {}\n let addProperty = true\n const additionalProperties = getSchemaAdditionalProperties(this.instance.schema)\n\n if (isSet(additionalProperties) && additionalProperties === false) {\n addProperty = false\n }\n\n let enablePropertiesToggle = false\n\n if (isSet(this.instance.jedison.options.enablePropertiesToggle)) {\n enablePropertiesToggle = this.instance.jedison.options.enablePropertiesToggle\n }\n\n const schemaEnablePropertiesToggle = getSchemaXOption(this.instance.schema, 'enablePropertiesToggle')\n\n if (isSet(schemaEnablePropertiesToggle)) {\n enablePropertiesToggle = schemaEnablePropertiesToggle\n }\n\n this.control = this.theme.getObjectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n id: this.getIdFromPath(this.instance.path),\n enablePropertiesToggle: enablePropertiesToggle,\n addProperty: addProperty,\n enableCollapseToggle: getSchemaXOption(this.instance.schema, 'enableCollapseToggle') ?? this.instance.jedison.options.enableCollapseToggle,\n startCollapsed: getSchemaXOption(this.instance.schema, 'startCollapsed') ?? this.instance.jedison.options.startCollapsed,\n readOnly: this.instance.isReadOnly(),\n info: this.getInfo(),\n editJsonData: getSchemaXOption(this.instance.schema, 'editJsonData') ?? this.instance.jedison.options.editJsonData,\n propertiesToggleContent: getSchemaXOption(this.instance.schema, 'propertiesToggleContent') ?? this.instance.jedison.translator.translate('propertiesToggle'),\n collapseToggleContent: getSchemaXOption(this.instance.schema, 'collapseToggleContent') ?? this.instance.jedison.translator.translate('collapseToggle'),\n addPropertyContent: getSchemaXOption(this.instance.schema, 'addPropertyContent') ?? this.instance.jedison.translator.translate('objectAddProperty')\n })\n\n this.control.jsonData.input.value = JSON.stringify(this.instance.getValue(), null, 2)\n }\n\n addEventListeners () {\n this.control.addPropertyBtn.addEventListener('click', () => {\n const propertyName = this.control.addPropertyControl.input.value.split(' ').join('')\n\n const propertyNameEmpty = propertyName.length === 0\n\n if (propertyNameEmpty) {\n return\n }\n\n const propertyExist = isSet(this.instance.value[propertyName])\n\n if (propertyExist) {\n return\n }\n\n const schema = this.instance.getPropertySchema(propertyName)\n\n const child = this.instance.createChild(schema, propertyName)\n child.activate()\n this.instance.setValue(this.instance.value, true, 'user')\n this.control.addPropertyControl.input.value = ''\n\n const ariaLive = this.control.ariaLive\n const schemaTitle = getSchemaTitle(child.schema)\n const label = isSet(schemaTitle) ? schemaTitle : propertyName\n const ariaLiveMessage = this.theme.getAriaLiveMessage()\n ariaLiveMessage.textContent = label + ' ' + this.instance.jedison.translator.translate('objectPropertyAdded')\n ariaLive.appendChild(ariaLiveMessage)\n\n // keeps dialog open\n this.control.propertiesContainer.close()\n this.control.propertiesContainer.showModal()\n })\n\n this.control.jsonData.saveBtn.addEventListener('click', () => {\n try {\n const inputValue = JSON.parse(this.control.jsonData.input.value)\n this.instance.setValue(inputValue, true, 'user')\n this.control.jsonData.dialog.close()\n } catch (error) {\n // eslint-disable-next-line no-undef\n alert('Invalid JSON')\n }\n })\n\n this.control.jsonData.toggle.addEventListener('click', () => {\n this.refreshJsonDataInputSize()\n })\n }\n\n sanitize (value) {\n if (isObject(value)) {\n return value\n }\n\n return {}\n }\n\n getErrorFeedback (config) {\n return this.theme.getAlert(config)\n }\n\n refreshPropertiesSlot () {\n const schemaOptionEnablePropertiesToggle = getSchemaXOption(this.instance.schema, 'enablePropertiesToggle') ?? this.instance.jedison.options.enablePropertiesToggle\n\n if (equal(schemaOptionEnablePropertiesToggle, true)) {\n const declaredProperties = Object.keys(this.instance.properties)\n const instanceProperties = this.instance.children.map((child) => child.getKey())\n const properties = [...new Set([...declaredProperties, ...instanceProperties])]\n\n while (this.control.propertiesActivators.firstChild) {\n this.control.propertiesActivators.removeChild(this.control.propertiesActivators.firstChild)\n }\n\n const {\n container: defaultGroupContainer,\n group: defaultGroup\n } = this.theme.getPropertiesGroup()\n\n this.control.propertiesActivators.appendChild(defaultGroupContainer)\n\n const propertiesGroups = {}\n\n properties.forEach((property) => {\n const isRequired = this.instance.isRequired(property)\n const ariaLive = this.control.ariaLive\n const schema = this.instance.getPropertySchema(property)\n const schemaTitle = getSchemaTitle(schema)\n const path = this.instance.path + this.instance.jedison.pathSeparator + property\n const id = pathToAttribute(path) + '-activator'\n const title = isSet(schemaTitle) ? schemaTitle : property\n\n const checkboxControl = this.theme.getCheckboxControl({\n id: id,\n title: title,\n titleHidden: false\n })\n\n const checkbox = checkboxControl.input\n this.propertyActivators[property] = checkbox\n\n checkbox.addEventListener('change', () => {\n ariaLive.innerHTML = ''\n const ariaLiveMessage = this.theme.getAriaLiveMessage()\n\n if (checkbox.checked) {\n const child = this.instance.getChild(property)\n\n if (!child) {\n this.instance.createChild(schema, property)\n }\n\n this.instance.getChild(property).activate()\n ariaLiveMessage.textContent = title + ' ' + this.instance.jedison.translator.translate('objectPropertyAdded')\n ariaLive.appendChild(ariaLiveMessage)\n } else {\n this.instance.getChild(property).deactivate()\n ariaLiveMessage.textContent = title + ' ' + this.instance.jedison.translator.translate('objectPropertyRemoved')\n ariaLive.appendChild(ariaLiveMessage)\n }\n\n // keeps dialog open\n this.control.propertiesContainer.close()\n this.control.propertiesContainer.showModal()\n })\n\n const propGroup = getSchemaXOption(schema, 'propGroup')\n\n if (isSet(propGroup) && isString(propGroup)) {\n let propertiesGroup = propertiesGroups[propGroup]\n\n if (!isSet(propertiesGroup)) {\n propertiesGroup = this.theme.getPropertiesGroup({ name: propGroup })\n propertiesGroups[propGroup] = propertiesGroup\n }\n\n propertiesGroup.group.appendChild(checkboxControl.container)\n this.control.propertiesActivators.appendChild(propertiesGroup.container)\n } else {\n defaultGroup.appendChild(checkboxControl.container)\n }\n\n checkbox.disabled = this.disabled || isRequired\n checkbox.checked = hasOwn(this.instance.getValue(), property)\n })\n }\n }\n\n refreshJsonDataInputSize () {\n const input = this.control.jsonData.input\n input.style.height = 'auto'\n input.style.height = input.scrollHeight + 'px'\n\n setTimeout(() => {\n if (input) {\n input.scrollTop = 0\n }\n })\n }\n\n refreshJsonData () {\n this.control.jsonData.input.value = JSON.stringify(this.instance.getValue(), null, 2)\n }\n\n refreshEditors () {\n while (this.control.childrenSlot.firstChild) {\n this.control.childrenSlot.removeChild(this.control.childrenSlot.firstChild)\n }\n\n this.instance.children.forEach((child) => {\n const showOptIn = true\n\n const optIn = this.theme.getCheckboxControl({\n id: child.path + '-opt-in',\n title: child.path + '-opt-in',\n titleHidden: true\n })\n\n optIn.input.checked = child.isActive\n\n optIn.input.addEventListener('change', () => {\n if (child.isActive) {\n child.deactivate()\n } else {\n child.activate()\n }\n })\n\n if (child.isActive) {\n if (child.ui.control.container.parentNode === null) {\n this.control.childrenSlot.appendChild(child.ui.control.container)\n\n // append optIn toggle\n if (showOptIn && child.ui.control.optInContainer) {\n child.ui.control.optInContainer.appendChild(optIn.container)\n }\n }\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n } else {\n if (child.ui.control.container.parentNode) {\n child.ui.control.container.parentNode.removeChild(child.ui.control.container)\n }\n }\n })\n }\n\n refreshUI () {\n super.refreshUI()\n this.refreshPropertiesSlot()\n this.refreshEditors()\n this.refreshJsonData()\n }\n}\n\nexport default EditorObject\n","import EditorObject from './object.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorObjectGrid instance.\n * @extends EditorObject\n */\nclass EditorObjectGrid extends EditorObject {\n static resolves (schema) {\n return getSchemaType(schema) === 'object' && getSchemaXOption(schema, 'format') === 'grid'\n }\n\n refreshEditors () {\n while (this.control.childrenSlot.firstChild) {\n this.control.childrenSlot.removeChild(this.control.childrenSlot.lastChild)\n }\n\n let row = this.theme.getRow()\n this.control.childrenSlot.appendChild(row)\n\n this.instance.children.forEach((child) => {\n if (child.isActive) {\n const childGridOptions = getSchemaXOption(child.schema, 'grid') || {}\n const gridColumns = getSchemaXOption(child.schema, 'gridColumns') ?? undefined\n const gridOffset = getSchemaXOption(child.schema, 'gridOffset') ?? 0\n\n // Retro base: in the last release \"columns\" was columnsMd\n const columnsMdRetro = childGridOptions.columns ?? undefined\n\n // Breakpoints with cascade fallback\n const columnsXs = childGridOptions.columnsXs ?? gridColumns ?? 12\n const columnsSm = childGridOptions.columnsSm ?? gridColumns ?? columnsXs\n const columnsMd = childGridOptions.columnsMd ?? columnsMdRetro ?? gridColumns ?? columnsSm\n const columnsLg = childGridOptions.columnsLg ?? gridColumns ?? columnsMd\n\n const offset = childGridOptions.offset ?? gridOffset\n const col = this.theme.getCol(columnsXs, columnsSm, columnsMd, columnsLg, offset)\n const newRow = childGridOptions.newRow || false\n\n if (newRow) {\n row = this.theme.getRow()\n this.control.childrenSlot.appendChild(row)\n }\n\n row.appendChild(col)\n col.appendChild(child.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n }\n })\n }\n}\n\nexport default EditorObjectGrid\n","import EditorObject from './object.js'\nimport { isSet, pathToAttribute } from '../helpers/utils.js'\nimport { getSchemaTitle, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorObjectNav instance.\n * @extends EditorObject\n */\nclass EditorObjectNav extends EditorObject {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n const regex = /^nav-(horizontal|vertical(?:-\\d+)?)$/\n const hasNavFormat = regex.test(format)\n return getSchemaType(schema) === 'object' && hasNavFormat\n }\n\n init () {\n super.init()\n this.activeTabIndex = 0\n }\n\n refreshEditors () {\n while (this.control.childrenSlot.firstChild) {\n this.control.childrenSlot.removeChild(this.control.childrenSlot.lastChild)\n }\n\n const format = getSchemaXOption(this.instance.schema, 'format')\n const formatParts = format.split('-')\n const variant = formatParts[1]\n const columns = formatParts[2]\n const navColumns = variant === 'horizontal' ? 12 : columns ?? 4\n const row = this.theme.getRow()\n const tabListCol = this.theme.getCol(12, 12, navColumns, navColumns)\n const tabContentCol = this.theme.getCol(12, 12, (12 - navColumns), (12 - navColumns))\n const tabContent = this.theme.getTabContent()\n const tabList = this.theme.getTabList({\n variant: variant\n })\n\n this.control.childrenSlot.appendChild(row)\n row.appendChild(tabListCol)\n row.appendChild(tabContentCol)\n tabListCol.appendChild(tabList)\n tabContentCol.appendChild(tabContent)\n\n this.instance.children.forEach((child, index) => {\n if (child.isActive) {\n const active = index === this.activeTabIndex\n const id = pathToAttribute(child.path)\n const schemaTitle = getSchemaTitle(child.schema)\n\n const tab = this.theme.getTab({\n hasErrors: child.children.some((grandChild) => grandChild.ui.showingValidationErrors),\n title: isSet(schemaTitle) ? schemaTitle : child.getKey(),\n id: id,\n active: active\n })\n\n tab.list.addEventListener('click', () => {\n this.activeTabIndex = index\n })\n\n this.theme.setTabPaneAttributes(child.ui.control.container, active, id)\n\n tabList.appendChild(tab.list)\n tabContent.appendChild(child.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n }\n })\n }\n}\n\nexport default EditorObjectNav\n","import Editor from './editor.js'\nimport { clamp, isArray, isSet } from '../helpers/utils.js'\nimport {\n getSchemaMaxItems,\n getSchemaMinItems,\n getSchemaType,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an EditorArray instance.\n * @extends Editor\n */\nclass EditorArray extends Editor {\n static resolves (schema) {\n return getSchemaType(schema) === 'array'\n }\n\n init () {\n super.init()\n this.activeItemIndex = 0\n }\n\n build () {\n this.control = this.theme.getArrayControl({\n title: this.getTitle(),\n description: this.getDescription(),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n id: this.getIdFromPath(this.instance.path),\n enableCollapseToggle: getSchemaXOption(this.instance.schema, 'enableCollapseToggle') ?? this.instance.jedison.options.enableCollapseToggle,\n startCollapsed: getSchemaXOption(this.instance.schema, 'startCollapsed') ?? this.instance.jedison.options.startCollapsed,\n readOnly: this.instance.isReadOnly(),\n info: this.getInfo(),\n arrayAdd: getSchemaXOption(this.instance.schema, 'arrayAdd') ?? this.instance.jedison.options.arrayAdd,\n arrayAddContent: getSchemaXOption(this.instance.schema, 'arrayAddContent') ?? this.instance.jedison.translator.translate('arrayAdd'),\n collapseToggleContent: getSchemaXOption(this.instance.schema, 'collapseToggleContent') ?? this.instance.jedison.translator.translate('collapseToggle')\n })\n }\n\n addEventListeners () {\n this.control.addBtn.addEventListener('click', () => {\n this.instance.addItem('user')\n })\n }\n\n getErrorFeedback (config) {\n return this.theme.getAlert(config)\n }\n\n sanitize (value) {\n if (isArray(value)) {\n return value\n }\n\n return []\n }\n\n getButtons (index) {\n const schemaDeleteContent = getSchemaXOption(this.instance.schema, 'arrayDeleteContent')\n const schemaMoveUpContent = getSchemaXOption(this.instance.schema, 'arrayMoveUpContent')\n const schemaMoveDownContent = getSchemaXOption(this.instance.schema, 'arrayMoveDownContent')\n const schemaDragContent = getSchemaXOption(this.instance.schema, 'arrayDragContent')\n\n const deleteBtn = this.theme.getDeleteItemBtn({\n content: schemaDeleteContent ?? this.instance.jedison.translator.translate('arrayDelete')\n })\n\n const moveUpBtn = this.theme.getMoveUpItemBtn({\n content: schemaMoveUpContent ?? this.instance.jedison.translator.translate('arrayMoveUp')\n })\n\n const moveDownBtn = this.theme.getMoveDownItemBtn({\n content: schemaMoveDownContent ?? this.instance.jedison.translator.translate('arrayMoveDown')\n })\n\n const dragBtn = this.theme.getDragItemBtn({\n content: schemaDragContent ?? this.instance.jedison.translator.translate('arrayDrag')\n })\n\n const btnGroup = this.theme.getBtnGroup()\n\n deleteBtn.addEventListener('click', () => {\n const confirmDeletion = window.confirm(this.instance.jedison.translator.translate('arrayConfirmDelete'))\n\n if (confirmDeletion) {\n this.activeItemIndex = clamp((index - 1), 0, (this.instance.value.length - 1))\n this.instance.deleteItem(index, 'user')\n }\n })\n\n moveUpBtn.addEventListener('click', () => {\n const toIndex = index - 1\n this.activeItemIndex = toIndex\n this.instance.move(index, toIndex, 'user')\n })\n\n moveDownBtn.addEventListener('click', () => {\n const toIndex = index + 1\n this.activeItemIndex = toIndex\n this.instance.move(index, toIndex, 'user')\n })\n\n if (index === 0) {\n moveUpBtn.setAttribute('always-disabled', true)\n }\n\n if (index === this.instance.children.length - 1) {\n moveDownBtn.setAttribute('always-disabled', true)\n }\n\n return { deleteBtn, moveUpBtn, moveDownBtn, btnGroup, dragBtn }\n }\n\n isSortable () {\n return window.Sortable && isSet(getSchemaXOption(this.instance.schema, 'sortable'))\n }\n\n refreshSortable (container) {\n if (this.isSortable()) {\n if (this.sortable) {\n this.sortable.destroy()\n }\n\n this.sortable = window.Sortable.create(container, {\n animation: 150,\n handle: '.jedi-array-drag',\n disabled: this.disabled || this.readOnly,\n onEnd: (evt) => {\n this.instance.move(evt.oldIndex, evt.newIndex)\n }\n })\n }\n }\n\n refreshAddBtn () {\n const maxItems = getSchemaMaxItems(this.instance.schema)\n const enforceMaxItems = getSchemaXOption(this.instance.schema, 'enforceMaxItems') ?? this.instance.jedison.options.enforceMaxItems\n\n if (isSet(maxItems) && enforceMaxItems && maxItems <= this.instance.value.length) {\n this.control.addBtn.setAttribute('disabled', '')\n this.control.addBtn.setAttribute('always-disabled', true)\n } else {\n if (!this.disabled && !this.readOnly) {\n this.control.addBtn.removeAttribute('disabled')\n this.control.addBtn.removeAttribute('always-disabled')\n }\n }\n }\n\n refreshUI () {\n const minItems = getSchemaMinItems(this.instance.schema)\n const arrayDelete = getSchemaXOption(this.instance.schema, 'arrayDelete') ?? this.instance.jedison.options.arrayDelete\n const arrayMove = getSchemaXOption(this.instance.schema, 'arrayMove') ?? this.instance.jedison.options.arrayMove\n\n this.control.childrenSlot.innerHTML = ''\n\n this.instance.children.forEach((child, index) => {\n const { deleteBtn, moveUpBtn, moveDownBtn, dragBtn, btnGroup } = this.getButtons(index)\n const { container, arrayActions, body } = this.theme.getArrayItem({\n readOnly: this.instance.isReadOnly(),\n index: index\n })\n\n arrayActions.appendChild(btnGroup)\n\n if (isSet(arrayDelete) && arrayDelete === true) {\n btnGroup.appendChild(deleteBtn)\n }\n\n if (isSet(arrayMove) && arrayMove === true) {\n btnGroup.appendChild(moveUpBtn)\n btnGroup.appendChild(moveDownBtn)\n }\n\n if (this.isSortable()) {\n btnGroup.appendChild(dragBtn)\n }\n\n this.control.childrenSlot.appendChild(container)\n body.appendChild(child.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n\n if (isSet(minItems) && this.instance.value.length <= minItems) {\n deleteBtn.setAttribute('disabled', '')\n }\n })\n\n this.refreshDisabledState()\n this.refreshSortable(this.control.childrenSlot)\n\n this.instance.children.forEach((child) => {\n child.ui.refreshUI()\n })\n\n this.refreshAddBtn()\n }\n}\n\nexport default EditorArray\n","import EditorArray from './array.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaItems, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorArrayTable instance.\n * @extends EditorArray\n */\nclass EditorArrayTable extends EditorArray {\n static resolves (schema, refParser) {\n return getSchemaType(schema) === 'array' && getSchemaXOption(schema, 'format') === 'table'\n }\n\n addEventListeners () {\n this.control.addBtn.addEventListener('click', () => {\n this.activeItemIndex = this.instance.value.length\n this.instance.addItem('user')\n })\n }\n\n isSortable () {\n return window.Sortable && isSet(getSchemaXOption(this.instance.schema, 'sortable'))\n }\n\n refreshUI () {\n this.control.childrenSlot.innerHTML = ''\n\n const table = this.theme.getTable()\n\n this.control.childrenSlot.appendChild(table.container)\n\n // thead labels\n const th = this.theme.getTableHeader()\n const { label } = this.theme.getFakeLabel({\n content: 'Controls',\n visuallyHidden: true\n })\n\n th.appendChild(label)\n\n table.thead.appendChild(th)\n\n // table header\n\n if (this.instance.children.length) {\n const schemaItems = getSchemaItems(this.instance.schema)\n\n const thTitle = this.theme.getTableHeader()\n\n if (schemaItems.title) {\n const fakeLabel = this.theme.getFakeLabel({\n content: schemaItems.title\n })\n\n thTitle.appendChild(fakeLabel.label)\n }\n\n const schemaXInfo = getSchemaXOption(schemaItems, 'info')\n\n if (isSet(schemaXInfo)) {\n const infoContent = this.getInfo(schemaItems)\n const info = this.theme.getInfo(infoContent)\n\n if (schemaXInfo.variant === 'modal') {\n this.theme.infoAsModal(info, this.getIdFromPath(this.instance.path), infoContent)\n }\n\n thTitle.appendChild(info.container)\n }\n\n table.thead.appendChild(thTitle)\n }\n\n const arrayDelete = getSchemaXOption(this.instance.schema, 'arrayDelete') ?? this.instance.jedison.options.arrayDelete\n const arrayMove = getSchemaXOption(this.instance.schema, 'arrayMove') ?? this.instance.jedison.options.arrayMove\n\n // tbody rows\n this.instance.children.forEach((child, index) => {\n const tbodyRow = document.createElement('tr')\n\n // buttons\n const buttonsTd = this.theme.getTableDefinition()\n const { deleteBtn, moveUpBtn, moveDownBtn, dragBtn, btnGroup } = this.getButtons(index)\n\n if (this.isSortable()) {\n btnGroup.appendChild(dragBtn)\n }\n\n if (isSet(arrayDelete) && arrayDelete === true) {\n btnGroup.appendChild(deleteBtn)\n }\n\n if (isSet(arrayMove) && arrayMove === true) {\n btnGroup.appendChild(moveUpBtn)\n btnGroup.appendChild(moveDownBtn)\n }\n\n buttonsTd.appendChild(btnGroup)\n tbodyRow.appendChild(buttonsTd)\n\n // child\n const td = this.theme.getTableDefinition()\n child.ui.adaptForTable(child, td)\n td.appendChild(child.ui.control.container)\n tbodyRow.appendChild(td)\n\n table.tbody.appendChild(tbodyRow)\n })\n\n this.refreshSortable(table.tbody)\n this.refreshAddBtn()\n this.refreshDisabledState()\n this.refreshScrollPosition(table.container)\n\n table.container.addEventListener('scroll', () => {\n this.lastScrollTop = table.container.scrollTop\n this.lastScrollLeft = table.container.scrollLeft\n })\n }\n\n refreshScrollPosition (element) {\n element.scroll({\n top: this.lastScrollTop,\n left: this.lastScrollLeft\n })\n }\n\n refreshSortable (container) {\n if (this.isSortable()) {\n if (this.sortable) {\n this.sortable.destroy()\n }\n\n this.sortable = window.Sortable.create(container, {\n animation: 150,\n handle: '.jedi-array-drag',\n disabled: this.disabled || this.readOnly,\n onEnd: (evt) => {\n this.instance.move(evt.oldIndex, evt.newIndex)\n }\n })\n }\n }\n}\n\nexport default EditorArrayTable\n","import EditorArray from './array.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaItems, getSchemaProperties, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorArrayTableObject instance.\n * @extends EditorArray\n */\nclass EditorArrayTableObject extends EditorArray {\n static resolves (schema, refParser) {\n let schemaItems = getSchemaItems(schema)\n\n if (!schemaItems) {\n return false\n }\n\n if (refParser) {\n schemaItems = refParser.expand(schemaItems)\n }\n\n const itemType = getSchemaType(schemaItems)\n\n if (!itemType) {\n return false\n }\n\n return getSchemaType(schema) === 'array' && itemType === 'object' && getSchemaXOption(schema, 'format') === 'table-object'\n }\n\n addEventListeners () {\n this.control.addBtn.addEventListener('click', () => {\n this.activeItemIndex = this.instance.value.length\n this.instance.addItem('user')\n })\n }\n\n isSortable () {\n return window.Sortable && isSet(getSchemaXOption(this.instance.schema, 'sortable'))\n }\n\n refreshUI () {\n this.control.childrenSlot.innerHTML = ''\n\n const table = this.theme.getTable()\n\n this.control.childrenSlot.appendChild(table.container)\n\n // thead labels\n const th = this.theme.getTableHeader()\n const { label } = this.theme.getFakeLabel({\n content: 'Controls',\n visuallyHidden: true\n })\n\n th.appendChild(label)\n\n table.thead.appendChild(th)\n\n if (this.instance.getValue().length === 0) {\n table.table.removeChild(table.thead)\n }\n\n let schemaItems = getSchemaItems(this.instance.schema)\n\n if (this.instance.jedison.refParser) {\n schemaItems = this.instance.jedison.refParser.expand(schemaItems)\n }\n const itemProperties = getSchemaProperties(schemaItems)\n\n Object.values(itemProperties).forEach((propertySchema) => {\n const th = this.theme.getTableHeader()\n\n if (propertySchema.title) {\n const fakeLabel = this.theme.getFakeLabel({\n content: propertySchema.title\n })\n\n th.appendChild(fakeLabel.label)\n }\n\n const schemaXInfo = getSchemaXOption(propertySchema, 'info')\n\n if (isSet(schemaXInfo)) {\n const infoContent = this.getInfo(propertySchema)\n const info = this.theme.getInfo(infoContent)\n\n if (schemaXInfo.variant === 'modal') {\n this.theme.infoAsModal(info, this.getIdFromPath(this.instance.path), infoContent)\n }\n\n th.appendChild(info.container)\n }\n\n table.thead.appendChild(th)\n })\n\n const arrayDelete = getSchemaXOption(this.instance.schema, 'arrayDelete') ?? this.instance.jedison.options.arrayDelete\n const arrayMove = getSchemaXOption(this.instance.schema, 'arrayMove') ?? this.instance.jedison.options.arrayMove\n\n // tbody rows\n this.instance.children.forEach((child, index) => {\n const tbodyRow = document.createElement('tr')\n\n // buttons\n const buttonsTd = this.theme.getTableDefinition()\n const { deleteBtn, moveUpBtn, moveDownBtn, dragBtn, btnGroup } = this.getButtons(index)\n\n if (this.isSortable()) {\n btnGroup.appendChild(dragBtn)\n }\n\n if (isSet(arrayDelete) && arrayDelete === true) {\n btnGroup.appendChild(deleteBtn)\n }\n\n if (isSet(arrayMove) && arrayMove === true) {\n btnGroup.appendChild(moveUpBtn)\n btnGroup.appendChild(moveDownBtn)\n }\n\n buttonsTd.appendChild(btnGroup)\n tbodyRow.appendChild(buttonsTd)\n\n // editors\n if (child.children.length) {\n child.children.forEach((grandchild) => {\n const td = this.theme.getTableDefinition()\n grandchild.ui.adaptForTable(td)\n td.appendChild(grandchild.ui.control.container)\n tbodyRow.appendChild(td)\n })\n } else {\n const td = this.theme.getTableDefinition()\n child.ui.adaptForTable(td)\n td.appendChild(child.ui.control.container)\n tbodyRow.appendChild(td)\n }\n\n table.tbody.appendChild(tbodyRow)\n })\n\n this.refreshSortable(table.tbody)\n this.refreshAddBtn()\n this.refreshDisabledState()\n this.refreshScrollPosition(table.container)\n\n table.container.addEventListener('scroll', () => {\n this.lastScrollTop = table.container.scrollTop\n this.lastScrollLeft = table.container.scrollLeft\n })\n }\n\n refreshScrollPosition (element) {\n element.scroll({\n top: this.lastScrollTop,\n left: this.lastScrollLeft\n })\n }\n\n refreshSortable (container) {\n if (this.isSortable()) {\n if (this.sortable) {\n this.sortable.destroy()\n }\n\n this.sortable = window.Sortable.create(container, {\n animation: 150,\n handle: '.jedi-array-drag',\n disabled: this.disabled || this.readOnly,\n onEnd: (evt) => {\n this.instance.move(evt.oldIndex, evt.newIndex)\n }\n })\n }\n }\n}\n\nexport default EditorArrayTableObject\n","import Editor from './editor.js'\nimport { isArray, isSet } from '../helpers/utils.js'\nimport { getSchemaItems, getSchemaType, getSchemaUniqueItems, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorArrayChoices instance.\n * @extends EditorString\n */\nclass EditorArrayChoices extends Editor {\n static resolves (schema) {\n const hasChoicesFormat = getSchemaXOption(schema, 'format') === 'choices'\n const choicesInstalled = window.Choices\n const schemaType = getSchemaType(schema)\n const schemaItems = getSchemaItems(schema)\n const schemaItemsType = isSet(schemaItems) && getSchemaType(schemaItems)\n const isArrayType = isSet(schemaType) && schemaType === 'array'\n const isUniqueItems = getSchemaUniqueItems(schema) === true\n const hasTypes = isSet(schemaItems) && isSet(schemaItemsType)\n\n const validTypes = ['string', 'number', 'integer']\n\n const hasValidItemType = isSet(schemaItems) &&\n isSet(schemaItemsType) &&\n (validTypes.includes(schemaItemsType) ||\n (isArray(schemaItemsType) && schemaItemsType.some(type => validTypes.includes(type))))\n\n return hasChoicesFormat && choicesInstalled && isArrayType && isUniqueItems && hasTypes && hasValidItemType\n }\n\n build () {\n this.control = this.theme.getSelectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: [],\n titles: [],\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n this.control.input.setAttribute('multiple', '')\n\n try {\n const value = this.instance.getValue()\n const itemEnum = this.instance.schema.items.enum ?? []\n const itemEnumTitles = getSchemaXOption(this.instance.schema.items, 'enumTitles') ?? this.instance.getValue()\n const choicesOptions = getSchemaXOption(this.instance.schema, 'choicesOptions') ?? {}\n\n if (this.choicesInstance) {\n this.choicesInstance.destroy()\n }\n\n this.choices = itemEnum.map((item, index) => ({\n value: item,\n label: itemEnumTitles[index] || item,\n selected: value.includes(item)\n }))\n\n this.choicesInstance = new window.Choices(this.control.input, {\n duplicateItemsAllowed: false,\n removeItemButton: true,\n choices: this.choices,\n ...choicesOptions\n })\n } catch (e) {\n console.error('Choices is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n const value = this.choicesInstance.getValue(true)\n\n if (value !== this.instance.getValue()) {\n this.instance.setValue(value, true, 'user')\n }\n })\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n this.choicesInstance.disable()\n } else {\n this.choicesInstance.enable()\n }\n }\n\n refreshUI () {\n super.refreshUI()\n\n const value = this.instance.getValue()\n\n this.choicesInstance.removeActiveItems()\n\n if (Array.isArray(value)) {\n value.forEach(val => {\n this.choicesInstance.setChoiceByValue(val)\n })\n }\n }\n\n destroy () {\n this.choicesInstance.destroy()\n super.destroy()\n }\n}\n\nexport default EditorArrayChoices\n","import EditorArray from './array.js'\nimport { compileTemplate, isSet, pathToAttribute } from '../helpers/utils.js'\nimport { getSchemaTitle, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorArrayNav instance.\n * @extends EditorArray\n */\nclass EditorArrayNav extends EditorArray {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n const regex = /^nav-(horizontal|vertical(?:-\\d+)?)$/\n const hasNavFormat = regex.test(format)\n return getSchemaType(schema) === 'array' && hasNavFormat\n }\n\n addEventListeners () {\n this.control.addBtn.addEventListener('click', () => {\n this.activeItemIndex = this.instance.value.length\n this.instance.addItem('user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.childrenSlot.innerHTML = ''\n\n const format = getSchemaXOption(this.instance.schema, 'format')\n const formatParts = format.split('-')\n const variant = formatParts[1]\n const columns = formatParts[2]\n const navColumns = variant === 'horizontal' ? 12 : columns ?? 4\n const row = this.theme.getRow()\n const tabListCol = this.theme.getCol(12, 12, navColumns, navColumns)\n const tabContentCol = this.theme.getCol(12, 12, (12 - navColumns), (12 - navColumns))\n const tabContent = this.theme.getTabContent()\n const tabList = this.theme.getTabList({\n variant: variant\n })\n\n const arrayDelete = getSchemaXOption(this.instance.schema, 'arrayDelete') ?? this.instance.jedison.options.arrayDelete\n const arrayMove = getSchemaXOption(this.instance.schema, 'arrayMove') ?? this.instance.jedison.options.arrayMove\n\n this.control.childrenSlot.appendChild(row)\n row.appendChild(tabListCol)\n row.appendChild(tabContentCol)\n tabListCol.appendChild(tabList)\n tabContentCol.appendChild(tabContent)\n\n this.instance.children.forEach((child, index) => {\n const { deleteBtn, moveUpBtn, moveDownBtn, btnGroup } = this.getButtons(index)\n\n if (isSet(arrayDelete) && arrayDelete === true) {\n btnGroup.appendChild(deleteBtn)\n }\n\n if (isSet(arrayMove) && arrayMove === true) {\n btnGroup.appendChild(moveUpBtn)\n btnGroup.appendChild(moveDownBtn)\n }\n\n this.control.childrenSlot.appendChild(child.ui.control.container)\n const schemaTitle = getSchemaTitle(child.schema)\n\n const childTitle = isSet(schemaTitle) ? schemaTitle + ' ' + (index + 1) : child.getKey()\n let titleTemplate\n\n const schemaOptionTitleTemplate = getSchemaXOption(this.instance.schema, 'titleTemplate')\n\n if (schemaOptionTitleTemplate) {\n const template = schemaOptionTitleTemplate\n const data = {\n i0: index,\n i1: (index + 1),\n value: child.getValue(),\n settings: this.instance.jedison.options.settings\n }\n\n titleTemplate = compileTemplate(template, data) ?? childTitle\n }\n\n const active = index === this.activeItemIndex\n const id = pathToAttribute(child.path)\n\n const { list, arrayActions } = this.theme.getTab({\n hasErrors: child.children.some((grandChild) => grandChild.ui.showingValidationErrors),\n title: titleTemplate?.length ? titleTemplate : childTitle,\n id: id,\n active: active\n })\n\n arrayActions.appendChild(btnGroup)\n\n list.addEventListener('click', () => {\n this.activeItemIndex = index\n })\n\n this.theme.setTabPaneAttributes(child.ui.control.container, active, id)\n tabList.appendChild(list)\n tabContent.appendChild(child.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n\n if (index === 0) {\n moveUpBtn.setAttribute('disabled', '')\n }\n\n if ((this.instance.value.length - 1) === index) {\n moveDownBtn.setAttribute('disabled', '')\n }\n })\n\n this.refreshAddBtn()\n }\n}\n\nexport default EditorArrayNav\n","import Editor from './editor.js'\nimport { isArray, isSet, notSet } from '../helpers/utils.js'\nimport { getSchemaAnyOf, getSchemaOneOf, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorMultiple instance.\n * @extends Editor\n */\nclass EditorMultiple extends Editor {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const schemaOneOf = getSchemaOneOf(schema)\n const schemaAnyOf = getSchemaAnyOf(schema)\n return isSet(schemaAnyOf) || isSet(schemaOneOf) || schemaType === 'any' || isArray(schemaType) || notSet(schemaType)\n }\n\n build () {\n this.switcherInput = getSchemaXOption(this.instance.schema, 'switcherInput') ?? this.instance.jedison.options.switcherInput\n\n this.control = this.theme.getMultipleControl({\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n id: this.getIdFromPath(this.instance.path),\n switcherOptionValues: this.instance.switcherOptionValues,\n switcherOptionsLabels: this.instance.switcherOptionsLabels,\n switcher: this.switcherInput,\n readOnly: this.instance.isReadOnly()\n })\n }\n\n adaptForTable (td) {\n this.theme.adaptForTableMultipleControl(this.control, td)\n }\n\n addEventListeners () {\n if (this.switcherInput === 'select') {\n this.control.switcher.input.addEventListener('change', () => {\n const index = Number(this.control.switcher.input.value)\n this.instance.switchInstance(index, undefined, 'user')\n })\n }\n\n if (this.switcherInput === 'radios' || this.switcherInput === 'radios-inline') {\n this.control.switcher.radios.forEach((radio) => {\n radio.addEventListener('change', () => {\n const index = Number(radio.value)\n this.instance.switchInstance(index, undefined, 'user')\n })\n })\n }\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.childrenSlot.innerHTML = ''\n this.control.childrenSlot.appendChild(this.instance.activeInstance.ui.control.container)\n\n if (this.switcherInput === 'select') {\n this.control.switcher.input.value = this.instance.index\n }\n\n if (this.switcherInput === 'radios' || this.switcherInput === 'radios-inline') {\n this.control.switcher.radios.forEach((radio) => {\n const radioIndex = Number(radio.value)\n radio.checked = radioIndex === this.instance.index\n })\n }\n\n if (this.disabled || this.instance.isReadOnly()) {\n this.instance.activeInstance.ui.disable()\n } else {\n this.instance.activeInstance.ui.enable()\n }\n }\n\n getErrorFeedback (config) {\n return this.theme.getAlert(config)\n }\n}\n\nexport default EditorMultiple\n","import Editor from './editor.js'\nimport {\n getSchemaType,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents a EditorNull instance.\n * @extends Editor\n */\nclass EditorNull extends Editor {\n static resolves (schema) {\n return getSchemaType(schema) === 'null'\n }\n\n build () {\n this.control = this.theme.getNullControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden') || getSchemaXOption(this.instance.schema, 'format') === 'hidden',\n info: this.getInfo()\n })\n }\n\n sanitize () {\n return null\n }\n}\n\nexport default EditorNull\n","import EditorString from './string.js'\nimport { clone, isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringSimpleMDE instance.\n * @extends EditorString\n */\nclass EditorStringSimpleMDE extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'simplemde' &&\n window.SimpleMDE &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getTextareaControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const simplemdeOptions = clone(getSchemaXOption(this.instance.schema, 'simplemde') ?? {})\n simplemdeOptions.element = this.control.input\n this.simplemde = new window.SimpleMDE(simplemdeOptions)\n } catch (e) {\n console.error('simpleMDE is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.simplemde.codemirror.on('blur', () => {\n const mdeText = this.simplemde.value()\n\n if (mdeText !== this.instance.getValue()) {\n this.instance.setValue(mdeText, true, 'user')\n }\n })\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n if (!this.simplemde.isPreviewActive()) {\n this.simplemde.togglePreview()\n this.control.container.querySelector('.editor-toolbar').style.display = 'none'\n }\n } else {\n if (this.simplemde.isPreviewActive()) {\n this.simplemde.togglePreview()\n this.control.container.querySelector('.editor-toolbar').style.display = 'block'\n }\n }\n }\n\n refreshUI () {\n super.refreshUI()\n this.simplemde.value(this.instance.getValue())\n }\n}\n\nexport default EditorStringSimpleMDE\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringQuill instance.\n * @extends EditorString\n */\nclass EditorStringQuill extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'quill' &&\n window.Quill &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getPlaceholderControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const quillOptions = getSchemaXOption(this.instance.schema, 'quill') ?? {}\n this.quill = new window.Quill(this.control.placeholder, quillOptions)\n } catch (e) {\n console.error('Quill is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.quill.root.addEventListener('blur', () => {\n const quillText = this.quill.getText()\n\n if (quillText !== this.instance.getValue()) {\n this.instance.setValue(quillText, true, 'user')\n }\n })\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n this.quill.disable()\n } else {\n this.quill.enable()\n }\n }\n\n refreshUI () {\n super.refreshUI()\n this.quill.setText(this.instance.getValue())\n }\n}\n\nexport default EditorStringQuill\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringQuill instance.\n * @extends EditorString\n */\nclass EditorStringJodit extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'jodit' &&\n window.Jodit &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getTextareaControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const joditDefaultOptions = {\n showCharsCounter: false,\n showWordsCounter: false,\n showXPathInStatusbar: false,\n toolbarAdaptive: false,\n buttons: [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n '|',\n 'ul',\n 'ol',\n '|',\n 'link',\n '|',\n 'source',\n 'preview'\n ]\n }\n\n const joditSchemaOptions = getSchemaXOption(this.instance.schema, 'jodit') ?? {}\n\n const joditOptions = Object.assign({}, joditDefaultOptions, joditSchemaOptions)\n\n console.log('joditOptions', joditOptions, getSchemaXOption(this.instance.schema, 'jodit'))\n this.jodit = window.Jodit.make(this.control.input, joditOptions)\n } catch (e) {\n console.error('Jodit is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.jodit.events.on('change', () => {\n const joditValue = this.jodit.value\n\n if (joditValue !== this.instance.getValue()) {\n this.instance.setValue(joditValue, true, 'user')\n }\n })\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n this.jodit.setReadOnly(true)\n } else {\n this.jodit.setReadOnly(false)\n }\n }\n\n refreshUI () {\n super.refreshUI()\n this.jodit.value = this.instance.getValue()\n }\n\n destroy () {\n this.jodit.destruct()\n super.destroy()\n }\n}\n\nexport default EditorStringJodit\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringFlatpickr instance.\n * @extends EditorString\n */\nclass EditorStringFlatpickr extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n return isSet(format) &&\n format === 'flatpickr' &&\n window.flatpickr &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const flatpickrOptions = getSchemaXOption(this.instance.schema, 'flatpickr') ?? {}\n this.flatpickr = window.flatpickr(this.control.input, flatpickrOptions)\n } catch (e) {\n console.error('Flatpickr is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.flatpickr.setDate(this.instance.getValue())\n }\n\n destroy () {\n this.flatpickr.destroy()\n super.destroy()\n }\n}\n\nexport default EditorStringFlatpickr\n","import EditorString from './string.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\nimport { isSet } from '../helpers/utils.js'\n\n/**\n * Represents a EditorStringIMask instance.\n * @extends EditorString\n */\nclass EditorStringIMask extends EditorString {\n static resolves (schema) {\n const hasSchemaTypeString = getSchemaType(schema) === 'string'\n const imaskAvailable = window.IMask\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'imask' &&\n hasSchemaTypeString &&\n imaskAvailable\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const schemaImask = getSchemaXOption(this.instance.schema, 'imask') ?? {}\n const schemaImaskSettings = schemaImask['x-settings']\n const settings = schemaImaskSettings && this.instance.jedison.options.settings[schemaImaskSettings] ? this.instance.jedison.options.settings[schemaImaskSettings] : {}\n const imaskOptions = { ...schemaImask, ...settings }\n this.imask = window.IMask(this.control.input, imaskOptions)\n this.useMaskedValue = schemaImask['x-masked'] ?? false\n } catch (e) {\n console.error('IMask is not available or not loaded or configured correctly.', e)\n }\n }\n\n addEventListeners () {\n this.imask.on('accept', () => {\n const value = this.useMaskedValue ? this.imask.value : this.imask.unmaskedValue\n this.instance.setValue(value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.imask.value = this.instance.getValue()\n }\n\n destroy () {\n this.imask.destroy()\n super.destroy()\n }\n}\n\nexport default EditorStringIMask\n","import EditorNumber from './number.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\nimport { isSet } from '../helpers/utils.js'\n\n/**\n * Represents a EditorNumberIMask instance.\n * @extends EditorString\n */\nclass EditorNumberIMask extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const imaskAvailable = window.IMask\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'imask' &&\n schemaType === 'number' &&\n imaskAvailable\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const schemaImask = getSchemaXOption(this.instance.schema, 'imask') ?? {}\n const schemaImaskSettings = schemaImask['x-settings']\n const settings = schemaImaskSettings && this.instance.jedison.options.settings[schemaImaskSettings] ? this.instance.jedison.options.settings[schemaImaskSettings] : {}\n const imaskOptions = {\n mask: Number,\n ...schemaImask,\n ...settings\n }\n this.imask = window.IMask(this.control.input, imaskOptions)\n this.useMaskedValue = schemaImask['x-masked'] ?? false\n } catch (e) {\n console.error('IMask is not available or not loaded or configured correctly.', e)\n }\n }\n\n addEventListeners () {\n this.imask.on('accept', () => {\n const value = this.imask.typedValue\n this.instance.setValue(value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n const val = this.instance.getValue()\n this.imask.value = val != null ? String(val) : ''\n }\n\n destroy () {\n this.imask.destroy()\n super.destroy()\n }\n}\n\nexport default EditorNumberIMask\n","/* global Raty */\n\nimport EditorNumber from './number.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorNumberRaty instance.\n * @extends EditorString\n */\nclass EditorNumberRaty extends EditorNumber {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'raty' &&\n typeof Raty !== 'undefined' &&\n getSchemaType(schema) === 'number'\n }\n\n build () {\n this.control = this.theme.getPlaceholderControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const ratyOptions = getSchemaXOption(this.instance.schema, 'raty') ?? {}\n\n this.raty = new Raty(this.control.placeholder, Object.assign({}, ratyOptions), {\n click: (score) => {\n this.instance.setValue(score, true, 'user')\n }\n })\n this.raty.init()\n } catch (e) {\n console.error('Raty is not available or not loaded correctly.', e)\n }\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n this.raty.readOnly(true)\n } else {\n this.raty.readOnly(false)\n }\n }\n\n refreshUI () {\n super.refreshUI()\n this.raty.score(this.instance.getValue())\n }\n}\n\nexport default EditorNumberRaty\n","import {\n isArray,\n isSet\n} from '../helpers/utils.js'\n\nimport {\n getSchemaEnum,\n getSchemaItems,\n getSchemaType,\n getSchemaUniqueItems,\n getSchemaXOption\n} from '../helpers/schema.js'\n\nimport Editor from './editor.js'\n\n/**\n * Represents an EditorArrayCheckboxes instance.\n * @extends Editor\n */\nclass EditorArrayCheckboxes extends Editor {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const schemaItems = getSchemaItems(schema)\n const schemaItemsType = isSet(schemaItems) && getSchemaType(schemaItems)\n const isArrayType = isSet(schemaType) && schemaType === 'array'\n const isUniqueItems = getSchemaUniqueItems(schema) === true\n const hasEnum = isSet(schemaItems) && isSet(getSchemaEnum(schema.items))\n const hasTypes = isSet(schemaItems) && isSet(schemaItemsType)\n\n const validTypes = ['string', 'number', 'integer']\n\n const hasValidItemType = isSet(schemaItems) &&\n isSet(schemaItemsType) &&\n (validTypes.includes(schemaItemsType) ||\n (isArray(schemaItemsType) && schemaItemsType.some(type => validTypes.includes(type))))\n\n return isArrayType && isUniqueItems && hasEnum && hasTypes && hasValidItemType\n }\n\n build () {\n this.control = this.theme.getCheckboxesControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema.items),\n titles: getSchemaXOption(this.instance.schema.items, 'enumTitles') || getSchemaEnum(this.instance.schema.items),\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n inline: getSchemaXOption(this.instance.schema, 'format') === 'checkboxes-inline',\n info: this.getInfo()\n })\n }\n\n adaptForTable (td) {\n this.theme.adaptForTableCheckboxesControl(this.control, td)\n }\n\n addEventListeners () {\n this.control.checkboxes.forEach((checkbox) => {\n checkbox.addEventListener('change', () => {\n const value = this.instance.getValue()\n if (checkbox.checked) {\n value.push(checkbox.value)\n } else {\n const index = value.indexOf(checkbox.value)\n if (index > -1) {\n value.splice(index, 1)\n }\n }\n\n this.instance.setValue(value, true, 'user')\n })\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n\n const value = this.instance.getValue()\n\n this.control.checkboxes.forEach((checkbox) => {\n checkbox.checked = value.includes(checkbox.value)\n })\n }\n}\n\nexport default EditorArrayCheckboxes\n","import EditorNumber from './number.js'\nimport { getSchemaXOption, getSchemaType } from '../helpers/schema.js'\nimport { isSet } from '../helpers/utils.js'\n\n/**\n * Represents an EditorNumberRange instance.\n * @extends EditorNumber\n */\nclass EditorNumberRange extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const isNumericType = schemaType === 'number' || schemaType === 'integer'\n\n if (!isNumericType) {\n return false\n }\n\n // Check for explicit range format\n const hasFormatRange = getSchemaXOption(schema, 'format') === 'range'\n\n return isNumericType && hasFormatRange\n }\n\n build () {\n // Get min/max from schema constraints\n let optionMin = 0\n let optionMax = 100\n\n if (isSet(this.instance.schema.minimum)) {\n optionMin = this.instance.schema.minimum\n } else if (isSet(this.instance.schema.exclusiveMinimum)) {\n optionMin = this.instance.schema.exclusiveMinimum + 0.01\n }\n\n if (isSet(this.instance.schema.maximum)) {\n optionMax = this.instance.schema.maximum\n } else if (isSet(this.instance.schema.exclusiveMaximum)) {\n optionMax = this.instance.schema.exclusiveMaximum - 0.01\n }\n\n // Determine step based on type and multipleOf\n let optionStep\n const schemaType = getSchemaType(this.instance.schema)\n const multipleOf = this.instance.schema.multipleOf\n\n if (isSet(multipleOf)) {\n optionStep = multipleOf\n } else if (schemaType === 'integer') {\n optionStep = 1\n } else {\n optionStep = 0.01\n }\n\n this.control = this.theme.getInputRangeControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'range',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n // Set range-specific attributes\n this.control.input.setAttribute('min', optionMin)\n this.control.input.setAttribute('max', optionMax)\n this.control.input.setAttribute('step', optionStep)\n\n // Apply x-inputAttributes if provided\n const inputAttributes = getSchemaXOption(this.instance.schema, 'inputAttributes')\n if (inputAttributes && typeof inputAttributes === 'object') {\n Object.keys(inputAttributes).forEach(attr => {\n this.control.input.setAttribute(attr, inputAttributes[attr])\n })\n }\n\n // Set initial value for output\n const currentValue = this.instance.getValue()\n this.control.output.textContent = currentValue !== undefined ? currentValue : optionMin\n }\n\n adaptForTable () {\n this.theme.adaptForTableInputControl(this.control)\n }\n\n addEventListeners () {\n // Update output on input\n this.control.input.addEventListener('input', () => {\n this.control.output.textContent = parseFloat(this.control.input.value)\n })\n\n // Update value based on validation trigger setting\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n const value = parseFloat(this.control.input.value)\n this.control.output.textContent = value\n this.instance.setValue(value, true, 'user')\n })\n }\n\n sanitize (value) {\n const schemaType = getSchemaType(this.instance.schema)\n const numValue = Number(value)\n\n if (schemaType === 'integer') {\n return Math.round(numValue)\n }\n\n return numValue\n }\n\n refreshUI () {\n super.refreshUI()\n const currentValue = this.instance.getValue()\n this.control.input.value = currentValue !== undefined ? currentValue : 0\n if (this.control.output) {\n this.control.output.textContent = currentValue !== undefined ? currentValue : 0\n }\n }\n}\n\nexport default EditorNumberRange\n","import EditorBooleanRadios from './editors/boolean-radios.js'\nimport EditorBooleanSelect from './editors/boolean-select.js'\nimport EditorBooleanCheckbox from './editors/boolean-checkbox.js'\nimport EditorStringRadios from './editors/string-radios.js'\nimport EditorStringSelect from './editors/string-select.js'\nimport EditorStringTextarea from './editors/string-textarea.js'\nimport EditorStringAwesomplete from './editors/string-awesomplete.js'\nimport EditorStringEmojiButton from './editors/string-emoji-button.js'\nimport EditorStringInput from './editors/string-input.js'\nimport EditorNumberRadio from './editors/number-radios.js'\nimport EditorNumberSelect from './editors/number-select.js'\nimport EditorNumberInputNullable from './editors/number-input-nullable.js'\nimport EditorNumberInput from './editors/number-input.js'\nimport EditorObjectGrid from './editors/object-grid.js'\nimport EditorObjectNav from './editors/object-nav.js'\nimport EditorObject from './editors/object.js'\nimport EditorArrayTable from './editors/array-table.js'\nimport EditorArrayTableObject from './editors/array-table-object.js'\nimport EditorArrayChoices from './editors/array-choices.js'\nimport EditorArrayNav from './editors/array-nav.js'\nimport EditorArray from './editors/array.js'\nimport EditorMultiple from './editors/multiple.js'\nimport EditorNull from './editors/null.js'\nimport EditorStringSimpleMDE from './editors/string-simplemde.js'\nimport EditorStringQuill from './editors/string-quill.js'\nimport EditorStringJodit from './editors/string-jodit.js'\nimport EditorStringFlatpickr from './editors/string-flatpickr.js'\nimport EditorStringIMask from './editors/string-imask.js'\nimport EditorNumberImask from './editors/number-imask.js'\nimport EditorNumberRaty from './editors/number-raty.js'\nimport EditorIfThenElse from './editors/if-then-else.js'\nimport EditorArrayCheckboxes from './editors/array-checkboxes.js'\nimport EditorNumberRange from './editors/number-range.js'\n\nclass UiResolver {\n constructor (options) {\n this.customEditors = options.customEditors ?? []\n this.refParser = options.refParser ?? null\n\n this.editors = [\n EditorNumberInputNullable,\n EditorMultiple,\n EditorIfThenElse,\n EditorBooleanRadios,\n EditorBooleanCheckbox,\n EditorBooleanSelect,\n EditorStringRadios,\n EditorStringSelect,\n EditorStringTextarea,\n EditorStringAwesomplete,\n EditorStringEmojiButton,\n EditorStringSimpleMDE,\n EditorStringQuill,\n EditorStringJodit,\n EditorStringFlatpickr,\n EditorStringIMask,\n EditorStringInput,\n EditorNumberImask,\n EditorNumberRaty,\n EditorNumberRange,\n EditorNumberRadio,\n EditorNumberSelect,\n EditorNumberInput,\n EditorObjectGrid,\n EditorObjectNav,\n EditorObject,\n EditorArrayChoices,\n EditorArrayCheckboxes,\n EditorArrayTableObject,\n EditorArrayTable,\n EditorArrayNav,\n EditorArray,\n EditorNull\n ]\n }\n\n getClass (schema) {\n for (const editor of this.customEditors) {\n if (editor.resolves(schema, this.refParser)) {\n return editor\n }\n }\n\n for (const editor of this.editors) {\n if (editor.resolves(schema, this.refParser)) {\n return editor\n }\n }\n\n return null\n }\n}\n\nexport default UiResolver\n","export default {\n errorAdditionalProperties: 'Has additional property \"{{ property }}\" but no additional properties are allowed.',\n errorAnyOf: 'Must validate against at least one of the provided schemas.',\n errorConst: 'Must have value of: {{ const }}.',\n errorContains: 'Must contain at least one item matching the provided schema.',\n errorDependentRequired: 'Must have the required properties: {{ dependentRequired }}.',\n errorEnum: 'Must be one of the enumerated values: {{ enum }}.',\n errorExclusiveMaximum: 'Must be less than {{ exclusiveMaximum }}.',\n errorExclusiveMinimum: 'Must be greater than {{ exclusiveMinimum }}.',\n errorFormat: 'Must be a valid {{ format }}.',\n errorItems: 'Must have items that validate against the provided schema.',\n errorMaximum: 'Must be at most {{ maximum }}.',\n errorMaxItems: 'Must have at most {{ maxItems }} items.',\n errorMaxLength: 'Must be at most {{ maxLength }} characters long.',\n errorMaxProperties: 'Must have at most {{ maxProperties }} properties.',\n errorMaxContains: 'Must contain at most {{ maxContains }} items matching the provided schema. It currently contains {{ counter }}.',\n errorMinContains: 'Must contain at least {{ minContains }} items matching the provided schema. It currently contains {{ counter }}.',\n errorMinimum: 'Must be at least {{ minimum }}.',\n errorMinItems: 'Must have at least {{ minItems }} items.',\n errorMinLength: 'Must be at least {{ minLength }} characters long.',\n errorMinProperties: 'Must have at least {{ minProperties }} properties.',\n errorMultipleOf: 'Must be multiple of {{ multipleOf }}.',\n errorNot: 'Must not validate against the provided schema.',\n errorOneOf: 'Must validate against exactly one of the provided schemas. It currently validates against {{ counter }} of the schemas.',\n errorPattern: 'Must match the pattern: \"{{ pattern }}\".',\n errorPrefixItems: 'Item {{ index }} fails validation.',\n errorPropertyNames: 'Property name \"{{ propertyName }}\" fails validation.',\n errorProperties: 'The following properties do not comply with their schemas: {{ properties }}',\n errorRequired: 'Must have the required properties: {{ required }}.',\n errorType: 'Must be of type {{ type }}.',\n errorUnevaluatedProperties: 'Has invalid unevaluated property \"{{ property }}\"',\n errorUniqueItems: 'Must have unique items.',\n arrayDelete: 'Delete item',\n arrayMoveUp: 'Move up',\n arrayMoveDown: 'Move down',\n arrayDrag: 'Drag',\n arrayAdd: 'Add item',\n arrayConfirmDelete: 'Are you sure you want to delete this item?',\n objectAddProperty: 'Add property',\n objectPropertyAdded: 'field was added to the form',\n objectPropertyRemoved: 'field was removed from the form',\n propertiesToggle: 'Properties',\n collapseToggle: 'Collapse'\n}\n","export default {\n en: {\n errorAdditionalProperties: 'Has additional property \"{{ property }}\" but no additional properties are allowed.',\n errorAnyOf: 'Must validate against at least one of the provided schemas.',\n errorConst: 'Must have value of: {{ const }}.',\n errorContains: 'Must contain at least one item matching the provided schema.',\n errorDependentRequired: 'Must have the required properties: {{ dependentRequired }}.',\n errorEnum: 'Must be one of the enumerated values: {{ enum }}.',\n errorExclusiveMaximum: 'Must be less than {{ exclusiveMaximum }}.',\n errorExclusiveMinimum: 'Must be greater than {{ exclusiveMinimum }}.',\n errorFormat: 'Invalid format: {{ format }}.',\n errorItems: 'Must have items that validate against the provided schema.',\n errorMaximum: 'Must be at most {{ maximum }}.',\n errorMaxItems: 'Must have at most {{ maxItems }} items.',\n errorMaxLength: 'Must be at most {{ maxLength }} characters long.',\n errorMaxProperties: 'Must have at most {{ maxProperties }} properties.',\n errorMaxContains: 'Must contain at most {{ maxContains }} items matching the provided schema. It currently contains {{ counter }}.',\n errorMinContains: 'Must contain at least {{ minContains }} items matching the provided schema. It currently contains {{ counter }}.',\n errorMinimum: 'Must be at least {{ minimum }}.',\n errorMinItems: 'Must have at least {{ minItems }} items.',\n errorMinLength: 'Must be at least {{ minLength }} characters long.',\n errorMinProperties: 'Must have at least {{ minProperties }} properties.',\n errorMultipleOf: 'Must be multiple of {{ multipleOf }}.',\n errorNot: 'Must not validate against the provided schema.',\n errorOneOf: 'Must validate against exactly one of the provided schemas. It currently validates against {{ counter }} of the schemas.',\n errorPattern: 'Must match the pattern: \"{{ pattern }}\".',\n errorPrefixItems: 'Item {{ index }} fails validation.',\n errorPropertyNames: 'Property name \"{{ propertyName }}\" fails validation.',\n errorProperties: 'The following properties do not comply with their schemas: {{ properties }}',\n errorRequired: 'Must have the required properties: {{ required }}.',\n errorType: 'Must be of type {{ type }}.',\n errorUnevaluatedProperties: 'Has invalid unevaluated property \"{{ property }}\"',\n errorUniqueItems: 'Must have unique items.',\n arrayDelete: 'Delete item',\n arrayMoveUp: 'Move up',\n arrayMoveDown: 'Move down',\n arrayDrag: 'Drag',\n arrayAdd: 'Add item',\n arrayConfirmDelete: 'Are you sure you want to delete this item?',\n objectAddProperty: 'Add property',\n objectPropertyAdded: 'field was added to the form',\n objectPropertyRemoved: 'field was removed from the form',\n propertiesToggle: 'Properties',\n collapseToggle: 'Collapse'\n },\n de: {\n errorAdditionalProperties: 'Hat die zusätzliche Eigenschaft \"{{ property }}\", aber keine zusätzlichen Eigenschaften sind erlaubt.',\n errorAnyOf: 'Muss mindestens einem der bereitgestellten Schemata entsprechen.',\n errorConst: 'Muss den Wert {{ const }} haben.',\n errorContains: 'Muss mindestens ein Element enthalten, das dem bereitgestellten Schema entspricht.',\n errorDependentRequired: 'Muss die erforderlichen Eigenschaften haben: {{ dependentRequired }}.',\n errorEnum: 'Muss einer der aufgeführten Werte sein: {{ enum }}.',\n errorExclusiveMaximum: 'Muss kleiner als {{ exclusiveMaximum }} sein.',\n errorExclusiveMinimum: 'Muss größer als {{ exclusiveMinimum }} sein.',\n errorFormat: 'Ungültiges Format: {{ format }}.',\n errorItems: 'Muss Elemente enthalten, die dem bereitgestellten Schema entsprechen.',\n errorMaximum: 'Darf höchstens {{ maximum }} sein.',\n errorMaxItems: 'Darf höchstens {{ maxItems }} Elemente enthalten.',\n errorMaxLength: 'Darf höchstens {{ maxLength }} Zeichen lang sein.',\n errorMaxProperties: 'Darf höchstens {{ maxProperties }} Eigenschaften haben.',\n errorMaxContains: 'Darf höchstens {{ maxContains }} Elemente enthalten, die dem bereitgestellten Schema entsprechen. Aktuell enthält es {{ counter }}.',\n errorMinContains: 'Muss mindestens {{ minContains }} Elemente enthalten, die dem bereitgestellten Schema entsprechen. Aktuell enthält es {{ counter }}.',\n errorMinimum: 'Muss mindestens {{ minimum }} sein.',\n errorMinItems: 'Muss mindestens {{ minItems }} Elemente enthalten.',\n errorMinLength: 'Muss mindestens {{ minLength }} Zeichen lang sein.',\n errorMinProperties: 'Muss mindestens {{ minProperties }} Eigenschaften haben.',\n errorMultipleOf: 'Muss ein Vielfaches von {{ multipleOf }} sein.',\n errorNot: 'Darf nicht dem bereitgestellten Schema entsprechen.',\n errorOneOf: 'Muss genau einem der bereitgestellten Schemata entsprechen. Derzeit entspricht es {{ counter }} der Schemata.',\n errorPattern: 'Muss dem Muster \"{{ pattern }}\" entsprechen.',\n errorPrefixItems: 'Element {{ index }} entspricht nicht der Validierung.',\n errorPropertyNames: 'Der Eigenschaftsname \"{{ propertyName }}\" entspricht nicht der Validierung.',\n errorProperties: 'Die folgenden Eigenschaften entsprechen nicht ihren Schemata: {{ properties }}',\n errorRequired: 'Muss die erforderlichen Eigenschaften haben: {{ required }}.',\n errorType: 'Muss vom Typ {{ type }} sein.',\n errorUnevaluatedProperties: 'Hat eine ungültige nicht bewertete Eigenschaft \"{{ property }}\"',\n errorUniqueItems: 'Muss eindeutige Elemente haben.',\n arrayDelete: 'Element löschen',\n arrayMoveUp: 'Nach oben verschieben',\n arrayMoveDown: 'Nach unten verschieben',\n arrayDrag: 'Ziehen',\n arrayAdd: 'Element hinzufügen',\n arrayConfirmDelete: 'Möchten Sie dieses Element wirklich löschen?',\n objectAddProperty: 'Eigenschaft hinzufügen',\n objectPropertyAdded: 'Feld wurde dem Formular hinzugefügt',\n objectPropertyRemoved: 'Feld wurde aus dem Formular entfernt',\n propertiesToggle: 'Eigenschaften',\n collapseToggle: 'Einklappen'\n },\n it: {\n errorAdditionalProperties: 'Ha la proprietà aggiuntiva \"{{ property }}\" ma non sono consentite proprietà aggiuntive.',\n errorAnyOf: 'Deve rispettare almeno uno degli schemi forniti.',\n errorConst: 'Deve avere il valore: {{ const }}.',\n errorContains: 'Deve contenere almeno un elemento che rispetti lo schema fornito.',\n errorDependentRequired: 'Deve avere le proprietà richieste: {{ dependentRequired }}.',\n errorEnum: 'Deve essere uno dei valori elencati: {{ enum }}.',\n errorExclusiveMaximum: 'Deve essere inferiore a {{ exclusiveMaximum }}.',\n errorExclusiveMinimum: 'Deve essere maggiore di {{ exclusiveMinimum }}.',\n errorFormat: 'Formato non valido: {{ format }}.',\n errorItems: 'Deve avere elementi che rispettano lo schema fornito.',\n errorMaximum: 'Deve essere al massimo {{ maximum }}.',\n errorMaxItems: 'Deve avere al massimo {{ maxItems }} elementi.',\n errorMaxLength: 'Deve avere al massimo {{ maxLength }} caratteri.',\n errorMaxProperties: 'Deve avere al massimo {{ maxProperties }} proprietà.',\n errorMaxContains: 'Deve contenere al massimo {{ maxContains }} elementi che rispettano lo schema fornito. Attualmente ne contiene {{ counter }}.',\n errorMinContains: 'Deve contenere almeno {{ minContains }} elementi che rispettano lo schema fornito. Attualmente ne contiene {{ counter }}.',\n errorMinimum: 'Deve essere almeno {{ minimum }}.',\n errorMinItems: 'Deve avere almeno {{ minItems }} elementi.',\n errorMinLength: 'Deve avere almeno {{ minLength }} caratteri.',\n errorMinProperties: 'Deve avere almeno {{ minProperties }} proprietà.',\n errorMultipleOf: 'Deve essere un multiplo di {{ multipleOf }}.',\n errorNot: 'Non deve rispettare lo schema fornito.',\n errorOneOf: 'Deve rispettare esattamente uno degli schemi forniti. Attualmente rispetta {{ counter }} degli schemi.',\n errorPattern: 'Deve rispettare il modello: \"{{ pattern }}\".',\n errorPrefixItems: 'L\\'elemento {{ index }} non è valido.',\n errorPropertyNames: 'Il nome della proprietà \"{{ propertyName }}\" non è valido.',\n errorProperties: 'Le seguenti proprietà non rispettano i loro schemi: {{ properties }}',\n errorRequired: 'Deve avere le proprietà richieste: {{ required }}.',\n errorType: 'Deve essere di tipo {{ type }}.',\n errorUnevaluatedProperties: 'Ha una proprietà non valutata non valida \"{{ property }}\"',\n errorUniqueItems: 'Deve avere elementi univoci.',\n arrayDelete: 'Elimina elemento',\n arrayMoveUp: 'Sposta su',\n arrayMoveDown: 'Sposta giù',\n arrayDrag: 'Trascina',\n arrayAdd: 'Aggiungi elemento',\n arrayConfirmDelete: 'Sei sicuro di voler eliminare questo elemento?',\n objectAddProperty: 'Aggiungi proprietà',\n objectPropertyAdded: 'Campo aggiunto al modulo',\n objectPropertyRemoved: 'Campo rimosso dal modulo',\n propertiesToggle: 'Proprietà',\n collapseToggle: 'Comprimi'\n },\n es: {\n errorAdditionalProperties: 'Tiene la propiedad adicional \"{{ property }}\" pero no se permiten propiedades adicionales.',\n errorAnyOf: 'Debe cumplir con al menos uno de los esquemas proporcionados.',\n errorConst: 'Debe tener el valor: {{ const }}.',\n errorContains: 'Debe contener al menos un elemento que cumpla con el esquema proporcionado.',\n errorDependentRequired: 'Debe tener las propiedades requeridas: {{ dependentRequired }}.',\n errorEnum: 'Debe ser uno de los valores enumerados: {{ enum }}.',\n errorExclusiveMaximum: 'Debe ser menor que {{ exclusiveMaximum }}.',\n errorExclusiveMinimum: 'Debe ser mayor que {{ exclusiveMinimum }}.',\n errorFormat: 'Formato no válido: {{ format }}.',\n errorItems: 'Debe tener elementos que cumplan con el esquema proporcionado.',\n errorMaximum: 'Debe ser como máximo {{ maximum }}.',\n errorMaxItems: 'Debe tener como máximo {{ maxItems }} elementos.',\n errorMaxLength: 'Debe tener como máximo {{ maxLength }} caracteres.',\n errorMaxProperties: 'Debe tener como máximo {{ maxProperties }} propiedades.',\n errorMaxContains: 'Debe contener como máximo {{ maxContains }} elementos que cumplan con el esquema proporcionado. Actualmente contiene {{ counter }}.',\n errorMinContains: 'Debe contener al menos {{ minContains }} elementos que cumplan con el esquema proporcionado. Actualmente contiene {{ counter }}.',\n errorMinimum: 'Debe ser al menos {{ minimum }}.',\n errorMinItems: 'Debe tener al menos {{ minItems }} elementos.',\n errorMinLength: 'Debe tener al menos {{ minLength }} caracteres.',\n errorMinProperties: 'Debe tener al menos {{ minProperties }} propiedades.',\n errorMultipleOf: 'Debe ser múltiplo de {{ multipleOf }}.',\n errorNot: 'No debe cumplir con el esquema proporcionado.',\n errorOneOf: 'Debe cumplir con exactamente uno de los esquemas proporcionados. Actualmente cumple con {{ counter }} de los esquemas.',\n errorPattern: 'Debe coincidir con el patrón: \"{{ pattern }}\".',\n errorPrefixItems: 'El elemento {{ index }} no es válido.',\n errorPropertyNames: 'El nombre de la propiedad \"{{ propertyName }}\" no es válido.',\n errorProperties: 'Las siguientes propiedades no cumplen con sus esquemas: {{ properties }}',\n errorRequired: 'Debe tener las propiedades requeridas: {{ required }}.',\n errorType: 'Debe ser del tipo {{ type }}.',\n errorUnevaluatedProperties: 'Tiene una propiedad no evaluada no válida \"{{ property }}\"',\n errorUniqueItems: 'Debe tener elementos únicos.',\n arrayDelete: 'Eliminar elemento',\n arrayMoveUp: 'Mover hacia arriba',\n arrayMoveDown: 'Mover hacia abajo',\n arrayDrag: 'Arrastrar',\n arrayAdd: 'Agregar elemento',\n arrayConfirmDelete: '¿Estás seguro de que deseas eliminar este elemento?',\n objectAddProperty: 'Agregar propiedad',\n objectPropertyAdded: 'campo fue añadido al formulario',\n objectPropertyRemoved: 'campo fue eliminado del formulario',\n propertiesToggle: 'Propiedades',\n collapseToggle: 'Colapsar'\n }\n}\n","import defaultTranslations from './default-translations.js'\nimport translations from './translations.js'\nimport { mergeDeep, notSet } from '../helpers/utils.js'\n\nclass Translator {\n constructor (config) {\n this.language = config.language || 'en'\n this.translations = mergeDeep({}, translations, config.translations)\n this.defaultTranslations = defaultTranslations\n }\n\n translate (message) {\n let translation = this.translations[this.language][message]\n\n if (notSet(translation)) {\n translation = this.defaultTranslations[message]\n }\n\n return translation\n }\n\n /**\n * Deletes all properties of the class\n */\n destroy () {\n Object.keys(this).forEach((key) => {\n delete this[key]\n })\n }\n}\n\nexport default Translator\n","class JsonWalker {\n constructor (maxDepth = 200) {\n this.maxDepth = maxDepth\n }\n\n traverse (data, callback, node = data, path = '#', depth = 0, parent = null, key = null, customData = {}) {\n if (!node || typeof node !== 'object' || depth > this.maxDepth) {\n return\n }\n\n // Pass customData to the callback as an additional argument\n const newNode = callback(node, path, parent, key, depth, customData)\n\n if (newNode !== undefined) {\n if (parent && key !== null) {\n parent[key] = newNode\n } else if (path === '#') {\n Object.keys(data).forEach(k => delete data[k]) // Clear root\n Object.assign(data, newNode) // Replace root object\n }\n node = newNode\n }\n\n if (typeof node === 'object' && node !== null) {\n Object.entries(node).forEach(([k, v]) =>\n this.traverse(data, callback, v, `${path}/${k}`, depth + 1, node, k, customData)\n )\n }\n }\n}\n\nexport default JsonWalker\n","import Validator from './validation/validator.js'\nimport EventEmitter from './event-emitter.js'\nimport InstanceIfThenElse from './instances/if-then-else.js'\nimport InstanceMultiple from './instances/multiple.js'\nimport InstanceBoolean from './instances/boolean.js'\nimport InstanceObject from './instances/object.js'\nimport InstanceArray from './instances/array.js'\nimport InstanceString from './instances/string.js'\nimport InstanceNumber from './instances/number.js'\nimport InstanceNull from './instances/null.js'\nimport {\n clone, combineDeep,\n isArray, isObject,\n isSet,\n notSet\n} from './helpers/utils.js'\nimport {\n getSchemaAnyOf,\n getSchemaIf,\n getSchemaOneOf,\n getSchemaType, getSchemaXOption\n} from './helpers/schema.js'\nimport { bootstrapIcons, fontAwesome3, fontAwesome4, fontAwesome5, fontAwesome6, glyphicons } from './themes/icons/icons.js'\nimport UiResolver from './ui-resolver.js'\nimport Translator from './i18n/translator.js'\nimport JsonWalker from './json-walker.js'\n\n/**\n * Represents a Jedison instance.\n */\nclass Jedison extends EventEmitter {\n /**\n * Creates a Jedison instance.\n * @param {object} options - Options object\n * @param {object|boolean} options.schema - A JSON schema\n * @param {boolean} options.container - Where the UI controls will be rendered\n */\n constructor (options) {\n super()\n\n this.options = Object.assign({\n container: null,\n iconLib: null,\n theme: null,\n refParser: null,\n editJsonData: false,\n enablePropertiesToggle: false,\n enableCollapseToggle: false,\n btnContents: true,\n btnIcons: true,\n arrayDelete: true,\n arrayMove: true,\n arrayAdd: true,\n startCollapsed: false,\n deactivateNonRequired: false,\n schema: {},\n showErrors: 'change',\n switcherInput: 'select',\n data: undefined,\n assertFormat: false,\n customEditors: [],\n constraints: [],\n hiddenInputAttributes: {},\n id: '',\n radiosInline: false,\n language: 'en',\n translations: {},\n settings: {},\n useConstraintAttributes: true,\n parseMarkdown: false,\n purifyHtml: true,\n domPurifyOptions: {},\n mergeAllOf: false,\n enforceConst: false,\n enforceRequired: true,\n enforceEnumDefault: true, // todo: deprecated\n enforceAdditionalProperties: true,\n enforceMinItems: true,\n enforceMaxItems: true,\n enforceEnum: true,\n debug: false\n }, options)\n\n /**\n * Roots symbol used in paths\n * @type {string}\n */\n this.rootName = '#'\n\n /**\n * Separator symbol used in paths\n * @type {string}\n */\n this.pathSeparator = '/'\n\n /**\n * List of registered instances\n * @type {object}\n */\n this.instances = new Map()\n\n /**\n * The root editor\n * @type {Jedison}\n */\n this.root = null\n\n /**\n * The Validator instance used to translate UI texts and error messages\n * @type {Translator}\n */\n this.translator = new Translator({\n language: this.options.language,\n translations: this.options.translations\n })\n\n /**\n * The Validator instance used to validate instance values\n * @type {Validator}\n */\n this.validator = null\n\n /**\n * A json schema used\n * @type {*}\n */\n this.schema = {}\n\n /**\n * A list of watched instances and their callbacks\n * @type {*}\n */\n this.watched = {}\n\n this.theme = null\n\n this.uiResolver = null\n\n /**\n * A RefParser instance\n * @type {RefParser}\n */\n this.refParser = this.options.refParser ? this.options.refParser : null\n\n this.walker = new JsonWalker()\n\n /**\n * The id of the last focused element.\n * Used to reapply focus to the element that was removed and re-appended to the DOM\n * @type String\n */\n this.lastFocusedId = null\n\n this.isEditor = false\n\n this.debug = false\n\n this.init()\n this.bindEventListeners()\n this.updateInstancesWatchedData()\n }\n\n /**\n * Initializes instance properties\n */\n init () {\n if (this.options.container) {\n this.isEditor = true\n }\n\n this.uiResolver = new UiResolver({\n customEditors: this.options.customEditors,\n refParser: this.refParser\n })\n\n this.theme = this.options.theme\n\n if (this.theme) {\n this.theme.btnContents = this.options.btnContents\n this.theme.btnIcons = this.options.btnIcons\n }\n\n if (isSet(this.options.iconLib)) {\n switch (this.options.iconLib) {\n case 'glyphicons':\n this.theme.icons = glyphicons\n break\n case 'bootstrap-icons':\n this.theme.icons = bootstrapIcons\n break\n case 'fontawesome3':\n this.theme.icons = fontAwesome3\n break\n case 'fontawesome4':\n this.theme.icons = fontAwesome4\n break\n case 'fontawesome5':\n this.theme.icons = fontAwesome5\n break\n case 'fontawesome6':\n this.theme.icons = fontAwesome6\n break\n }\n }\n\n this.schema = this.options.schema\n\n this.validator = new Validator({\n refParser: this.refParser,\n assertFormat: this.options.assertFormat,\n translator: this.translator,\n constraints: this.options.constraints\n })\n\n this.root = this.createInstance({\n jedison: this,\n schema: this.options.schema,\n path: this.rootName\n })\n\n if (isSet(this.options.data)) {\n this.root.setValue(this.options.data, false)\n }\n\n if (this.options.container) {\n this.isEditor = true\n this.container = this.options.container\n this.appendHiddenInput()\n this.container.appendChild(this.root.ui.control.container)\n this.container.classList.add('jedi-ready')\n }\n }\n\n bindEventListeners () {\n if (this.root) {\n this.root.on('change', (initiator) => {\n this.emit('change', initiator)\n })\n }\n\n this.on('instance-change', (instance) => {\n for (const [path, callbacks] of Object.entries(this.watched)) {\n if (instance.path === path) {\n callbacks.forEach((callback) => {\n callback()\n })\n }\n }\n })\n\n if (this.hiddenInput) {\n this.on('change', (initiator) => {\n this.hiddenInput.value = JSON.stringify(this.getValue())\n\n if (initiator === 'user') {\n setTimeout(() => {\n this.refreshFocus()\n }, 0)\n }\n })\n\n document.addEventListener('focus', (event) => {\n this.lastKeyEvent = null\n this.lastFocusedId = event.target.id\n }, true)\n\n document.addEventListener('keydown', (event) => {\n this.lastKeyEvent = event\n })\n }\n }\n\n updateInstancesWatchedData () {\n Object.values(this.watched).forEach((callbacks) => {\n callbacks.forEach((callback) => {\n callback()\n })\n })\n }\n\n /**\n * Reapplies focus to the element that was removed and re-appended to the DOM\n * @type String\n */\n refreshFocus () {\n if (!this.lastFocusedId) {\n return\n }\n\n const el = document.getElementById(this.lastFocusedId)\n\n if (el) {\n el.focus()\n\n if (this.lastKeyEvent && this.lastKeyEvent.key === 'Tab') {\n this.simulateTab(el, this.lastKeyEvent.shiftKey)\n }\n }\n }\n\n simulateTab (currentElement, shift) {\n const focusableElements = document.querySelectorAll('input, button, select, textarea, a[href], [tabindex]:not([tabindex=\"-1\"])')\n const index = Array.prototype.indexOf.call(focusableElements, currentElement)\n\n if (index !== -1) {\n if (shift) {\n if (index > 0) {\n focusableElements[index - 1].focus()\n }\n } else {\n if (index + 1 < focusableElements.length) {\n focusableElements[index + 1].focus()\n }\n }\n }\n }\n\n /**\n * Appends a hidden input to the root container whose value will be the value\n * of the root instance.\n */\n appendHiddenInput () {\n const hiddenControl = this.theme.getInputControl({\n type: 'hidden',\n id: 'jedi-hidden-input'\n })\n\n this.hiddenInput = hiddenControl.input\n this.hiddenInput.setAttribute('name', 'json')\n this.hiddenInput.removeAttribute('aria-describedby')\n this.hiddenInput.removeAttribute('aria-hidden', 'true')\n\n if (this.options.hiddenInputAttributes && isObject(this.options.hiddenInputAttributes)) {\n Object.keys(this.options.hiddenInputAttributes).forEach(attr => {\n this.hiddenInput.setAttribute(attr, this.options.hiddenInputAttributes[attr])\n })\n }\n\n this.container.appendChild(this.hiddenInput)\n this.hiddenInput.value = JSON.stringify(this.getValue())\n }\n\n /**\n * Adds a child instance pointer to the instances list\n */\n register (instance) {\n this.instances.set(instance.path, instance)\n }\n\n /**\n * Deletes a child instance pointer from the instances list\n */\n unregister (instance) {\n this.instances.delete(instance.path)\n }\n\n logIfEditor (...params) {\n if (this.isEditor) {\n console.log(...params)\n }\n }\n\n warnIfEditor (...params) {\n if (this.isEditor) {\n console.warn(...params)\n }\n }\n\n /**\n * Creates a json instance and dereference schema on the fly if needed.\n */\n createInstance (config) {\n if (this.refParser) {\n config.schema = this.refParser.expand(config.schema)\n\n // allOf\n this.walker.traverse(config.schema, (node) => {\n if (node.allOf && Array.isArray(node.allOf)) {\n node.allOf.forEach((subschema, index) => {\n node.allOf[index] = this.refParser.expand(subschema)\n })\n }\n\n if (node.oneOf && Array.isArray(node.oneOf)) {\n node.oneOf.forEach((subschema, index) => {\n node.oneOf[index] = this.refParser.expand(subschema)\n })\n }\n\n if (node.oneOf && Array.isArray(node.oneOf)) {\n node.oneOf.forEach((subschema, index) => {\n node.oneOf[index] = this.refParser.expand(subschema)\n })\n }\n })\n }\n\n // merge allOf if editor and option is true\n if (this.isEditor) {\n // extract if then combinations\n this.walker.traverse(config.schema, (node) => {\n if (node.allOf && Array.isArray(node.allOf)) {\n if (isSet(node['x-allOf-merged'])) {\n return\n }\n\n const mergeAllOf = getSchemaXOption(node, 'mergeAllOf') ?? this.options.mergeAllOf\n\n const conditionals = []\n let nodeFinal = clone(node) // To store merged static properties\n // delete nodeFinal.allOf // do not delete allOf to keep validation clean\n\n node.allOf.forEach((subschema) => {\n if (subschema.if && subschema.then) {\n conditionals.push({\n if: subschema.if,\n then: subschema.then,\n else: subschema.else || null\n })\n } else {\n // Merge non-conditional schemas normally if mergeAllOf is true\n nodeFinal = mergeAllOf ? combineDeep({}, nodeFinal, subschema) : nodeFinal\n }\n })\n\n nodeFinal['x-allOf-merged'] = true\n\n // Build a long sequential if-then-else chain\n let sequentialIfThenElse = null\n\n for (let i = conditionals.length - 1; i >= 0; i--) {\n if (sequentialIfThenElse === null) {\n sequentialIfThenElse = conditionals[i]\n } else {\n sequentialIfThenElse = {\n if: conditionals[i].if,\n then: conditionals[i].then,\n else: sequentialIfThenElse\n }\n }\n }\n\n // Attach the final sequential if-then-else structure to nodeFinal\n if (sequentialIfThenElse) {\n Object.assign(nodeFinal, sequentialIfThenElse)\n }\n\n return nodeFinal\n }\n })\n\n // oneOf\n this.walker.traverse(config.schema, (node) => {\n if (node.oneOf && Array.isArray(node.oneOf)) {\n const nodeClone = clone(node)\n delete nodeClone.oneOf\n\n node.oneOf = node.oneOf.map((subschema) => {\n return combineDeep({}, nodeClone, subschema)\n })\n\n return {\n oneOf: node.oneOf\n }\n }\n })\n\n // anyOf\n this.walker.traverse(config.schema, (node) => {\n if (node.anyOf && Array.isArray(node.anyOf)) {\n const nodeClone = clone(node)\n delete nodeClone.anyOf\n\n node.anyOf = node.anyOf.map((subschema) => {\n return combineDeep({}, nodeClone, subschema)\n })\n\n return {\n anyOf: node.anyOf\n }\n }\n })\n\n // not\n this.walker.traverse(config.schema, (node) => {\n if (node.not && isObject(node.not)) {\n const nodeClone = clone(node)\n delete nodeClone.not\n\n node.not = combineDeep({}, nodeClone, node.not)\n }\n })\n }\n\n const schemaOneOf = getSchemaOneOf(config.schema)\n const schemaAnyOf = getSchemaAnyOf(config.schema)\n const schemaIf = getSchemaIf(config.schema)\n const schemaType = getSchemaType(config.schema)\n\n if (this.debug && notSet(schemaType) && !isSet(schemaOneOf) && !isSet(schemaAnyOf) && !isSet(schemaIf)) {\n console.warn('TYPE NOT SET', config.schema, config.path)\n }\n\n if (isSet(schemaAnyOf) || isSet(schemaOneOf) || schemaType === 'any' || isArray(schemaType) || notSet(schemaType)) {\n return new InstanceMultiple(config)\n }\n\n if (isSet(schemaIf)) {\n return new InstanceIfThenElse(config)\n }\n\n if (schemaType === 'object') {\n return new InstanceObject(config)\n }\n\n if (schemaType === 'array') {\n return new InstanceArray(config)\n }\n\n if (schemaType === 'string') {\n return new InstanceString(config)\n }\n\n if (schemaType === 'number' || schemaType === 'integer') {\n return new InstanceNumber(config)\n }\n\n if (schemaType === 'boolean') {\n return new InstanceBoolean(config)\n }\n\n if (schemaType === 'null') {\n return new InstanceNull(config)\n }\n }\n\n /**\n * Returns the value of the root instance\n * @return {*}\n */\n getValue () {\n return this.root.getValue()\n }\n\n /**\n * Sets the value of the root instance\n */\n setValue () {\n this.root.setValue(...arguments)\n this.updateInstancesWatchedData()\n }\n\n /**\n * Returns an instance by path\n * @return {*}\n */\n getInstance (path) {\n return this.instances.get(path)\n }\n\n /**\n * Disables the root instance and it's children user interfaces\n */\n disable () {\n this.root.ui.disable()\n }\n\n /**\n * Enables the root instance and it's children user interfaces\n */\n enable () {\n this.root.ui.enable()\n }\n\n /**\n * Get an array of validation errors\n * @param {string[]} filters - Types to include, e.g., ['errors', 'warnings']\n * @returns {*[]}\n */\n getErrors (filters = ['error']) {\n let results = []\n\n for (const instance of this.instances.values()) {\n results = [...results, ...instance.getErrors()]\n }\n\n return results.filter((error) => {\n return filters.includes(error.type.toLowerCase())\n })\n }\n\n export () {\n const results = []\n\n for (const instance of this.instances.values()) {\n results.push({\n path: instance.path ?? '-',\n type: instance.schema.type ?? '-',\n title: instance.ui.getTitle() ?? '-',\n value: instance.getValue() ?? '-'\n })\n }\n\n return results\n }\n\n /**\n * Displays validation errors in the respective editors.\n * If an errors list is passed, it will display these errors;\n * otherwise, it will retrieve existing errors from the instance.\n *\n * @param {Array|null} errorsList - An optional array containing error messages.\n * @returns {boolean} Returns `true` if the container exists and errors are displayed,\n * or `false` if there is no container and thus no errors are displayed.\n */\n showValidationErrors (errorsList = null) {\n if (!this.options.container) {\n return false\n }\n\n const errors = errorsList ?? this.getErrors()\n\n for (const instance of this.instances.values()) {\n instance.ui.showValidationErrors(errors, true)\n }\n }\n\n watch (path, callback) {\n if (!this.watched[path]) {\n this.watched[path] = []\n }\n\n this.watched[path].push(callback)\n }\n\n unwatch (path, callback) {\n if (!this.watched[path]) {\n return\n }\n\n this.watched[path] = this.watched[path].filter(cb => cb !== callback)\n\n if (this.watched[path].length === 0) {\n delete this.watched[path]\n }\n }\n\n /**\n * Destroy the root instance and it's children\n */\n destroy () {\n this.root.destroy()\n\n if (this.options.container) {\n this.container.innerHTML = ''\n }\n\n Object.keys(this).forEach((key) => {\n delete this[key]\n })\n }\n}\n\nexport default Jedison\n","import { mergeDeep } from '../helpers/utils.js'\nimport JsonWalker from '../json-walker.js'\n\nclass RefParser {\n constructor () {\n this.refs = {}\n this.data = {}\n this.iterations = 0\n this.maxIterations = 1000\n this.cycles = []\n this.walker = new JsonWalker()\n }\n\n async dereference (schema) {\n await this.collectRefs(schema)\n\n while (this.iterations < this.maxIterations) {\n if (this.refsResolved()) {\n break\n }\n\n this.iterations++\n await this.collectRefs(schema)\n }\n\n const missingRefs = Object.entries(this.refs).filter(([key, value]) => value === null).map(([key]) => key)\n\n if (missingRefs.length) {\n console.warn('Missing refs:', JSON.stringify(missingRefs))\n }\n\n this.cycles = this.findRecursiveRefs(this.refs)\n }\n\n refsResolved () {\n return Object.values(this.refs).every((value) => {\n return value !== null\n })\n }\n\n /**\n * Traverses the given schema recursively and for each schema with $ref\n * add a new property in the this.refs object with key being the json path to that schema.\n * If the ref has no value in data will be given a value of null. This value will be later\n * replaced in a future iteration. At that time the data will be available\n * @param schema\n * @param path\n */\n async collectRefs (schema, path = '#') {\n if (typeof schema !== 'object' || schema === null) {\n return\n }\n\n for (const [key, value] of Object.entries(schema)) {\n const nextPath = path ? `${path}/${key}` : `/${key}`\n\n if (this.hasRef(schema)) {\n const ref = schema['$ref']\n\n if (this.isExternalRef(ref)) {\n const resolvedSchema = await this.load(ref)\n this.refs[ref] = resolvedSchema\n await this.collectRefs(resolvedSchema, nextPath)\n } else {\n this.refs[ref] = this.data[ref] ?? null\n }\n }\n\n this.data[path] = schema\n\n await this.collectRefs(value, nextPath)\n }\n }\n\n hasRef (schema) {\n return typeof schema['$ref'] !== 'undefined' && typeof schema['$ref'] === 'string'\n }\n\n isExternalRef (ref) {\n if (typeof ref !== 'string') {\n return false\n }\n\n return ref.startsWith('http') || ref.startsWith('https')\n }\n\n isObject (value) {\n return value !== null && typeof value === 'object'\n }\n\n findRecursiveRefs (defs) {\n const cycles = new Set()\n\n function checkRef (path, visited, stack) {\n if (visited.has(path)) {\n const cycleStartIndex = stack.indexOf(path)\n if (cycleStartIndex !== -1) {\n const cyclePath = stack.slice(cycleStartIndex).concat(path) // Close the cycle\n\n // Normalize cycle to avoid duplicates\n const minIndex = cyclePath.reduce((minIdx, ref, idx) =>\n ref < cyclePath[minIdx] ? idx : minIdx, 0)\n const normalizedCycle = [...cyclePath.slice(minIndex), ...cyclePath.slice(0, minIndex)]\n const cycleSignature = normalizedCycle.join(' → ')\n\n cycles.add(cycleSignature)\n }\n return\n }\n if (!defs[path]) return\n\n visited.add(path)\n stack.push(path)\n\n function traverse (value) {\n if (typeof value === 'object' && value !== null) {\n if (value.$ref) checkRef(value.$ref, visited, stack)\n for (const key in value) traverse(value[key])\n }\n }\n\n traverse(defs[path])\n\n visited.delete(path)\n stack.pop()\n }\n\n for (const key in defs) {\n checkRef(key, new Set(), [])\n }\n\n return [...cycles] // Convert Set back to array for output\n }\n\n hasRefCycles () {\n return this.cycles.length > 0\n }\n\n expand (schema) {\n const cloneSchema = JSON.parse(JSON.stringify(schema))\n\n if (this.isObject(cloneSchema) && this.hasRef(cloneSchema)) {\n const ref = cloneSchema.$ref\n delete cloneSchema['$ref']\n return this.expand(mergeDeep({}, this.refs[ref], cloneSchema))\n }\n\n return cloneSchema\n }\n\n expandRecursive (schema) {\n let mustContinue = true\n\n while (mustContinue) {\n mustContinue = false\n\n this.walker.traverse(schema, (node, path, parent, key) => {\n if (node.$ref && typeof node.$ref === 'string' && parent && key !== null) {\n parent[key] = this.expand(node)\n mustContinue = true\n }\n })\n }\n }\n\n /**\n * Loads a schema with a synchronous http request\n * @param uri\n * @returns {any}\n */\n async load (uri) {\n try {\n const response = await fetch(uri)\n if (!response.ok) {\n throw new Error('Network response was not ok')\n }\n return await response.json()\n } catch (error) {\n console.error('Error loading', uri, error)\n throw error\n }\n }\n}\n\nexport default RefParser\n","import { generateRandomID, isObject, isSet, isString } from '../helpers/utils.js'\n\n/**\n * Represents a Theme instance.\n */\nclass Theme {\n constructor (icons = null) {\n this.icons = icons\n this.useToggleEvents = true\n this.btnContents = true\n this.btnIcons = true\n this.init()\n }\n\n /**\n * Inits some instance properties\n */\n init () {\n this.useToggleEvents = true\n }\n\n /**\n * Used to wrap the editor UI elements\n */\n getEditorContainer () {\n const html = document.createElement('div')\n html.classList.add('jedi-editor-container')\n return html\n }\n\n /**\n * Used to group several controls\n */\n getFieldset () {\n const html = document.createElement('fieldset')\n html.classList.add('jedi-editor-fieldset')\n html.setAttribute('role', 'group')\n return html\n }\n\n /**\n * Represents a caption for the content of its parent fieldset\n */\n getLegend (config) {\n const left = document.createElement('div')\n const right = document.createElement('div')\n const legend = document.createElement('legend')\n const legendText = document.createElement('label')\n const infoContainer = document.createElement('span')\n const dummyInput = document.createElement('input')\n const legendLabelId = 'legend-label-' + config.id\n const dummyInputId = 'legend-dummy-input-' + config.id\n\n left.classList.add('jedi-editor-legend-left')\n right.classList.add('jedi-editor-legend-right')\n\n legend.classList.add('jedi-editor-legend')\n legend.style.fontSize = 'inherit'\n legend.setAttribute('aria-labelledby', legendLabelId)\n\n legendText.classList.add('jedi-title')\n legendText.classList.add('jedi-legend')\n legendText.setAttribute('id', legendLabelId)\n legendText.innerHTML = config.content\n\n infoContainer.classList.add('jedi-editor-info-container')\n infoContainer.setAttribute('for', dummyInputId)\n\n dummyInput.setAttribute('aria-hidden', 'true')\n dummyInput.setAttribute('type', 'hidden')\n dummyInput.setAttribute('id', dummyInputId)\n\n this.visuallyHidden(dummyInput)\n\n if (config.titleHidden) {\n this.visuallyHidden(legendText)\n }\n\n legend.appendChild(left)\n legend.appendChild(right)\n left.appendChild(legendText)\n left.appendChild(infoContainer)\n legendText.appendChild(dummyInput)\n\n return { left, right, legend, legendText, infoContainer }\n }\n\n /**\n * Used to group several controls\n */\n getRadioFieldset () {\n const fieldset = document.createElement('fieldset')\n fieldset.classList.add('jedi-editor-radio-fieldset')\n fieldset.setAttribute('role', 'group')\n fieldset.style.marginBottom = '15px'\n fieldset.style.fontSize = 'inherit'\n return fieldset\n }\n\n /**\n * Represents a caption for the content of its parent fieldset\n */\n getRadioLegend (config) {\n const legendLabelId = 'legend-label-' + config.id\n const legend = document.createElement('legend')\n const legendText = document.createElement('label')\n const dummyInput = document.createElement('input')\n\n legend.classList.add('jedi-editor-legend')\n legend.style.fontSize = 'inherit'\n legend.setAttribute('aria-labelledby', legendLabelId)\n\n legendText.classList.add('jedi-title')\n legendText.classList.add('jedi-label')\n legendText.innerHTML = config.content\n legendText.setAttribute('id', legendLabelId)\n\n dummyInput.setAttribute('aria-hidden', 'true')\n dummyInput.setAttribute('type', 'hidden')\n dummyInput.setAttribute('disabled', '')\n\n this.visuallyHidden(dummyInput)\n\n legend.appendChild(legendText)\n legendText.appendChild(dummyInput)\n\n return { legend, legendText }\n }\n\n /**\n * Represents a caption for the content of its parent fieldset\n */\n getLabel (config) {\n const label = document.createElement('label')\n const labelText = document.createElement('span')\n const icon = document.createElement('i')\n\n label.setAttribute('for', config.for)\n label.classList.add('jedi-title')\n label.classList.add('jedi-label')\n labelText.innerHTML = config.text\n\n if (config.visuallyHidden) {\n this.visuallyHidden(label)\n }\n\n if (config.titleIconClass) {\n this.addIconClass(icon, config.titleIconClass)\n }\n\n if (config.titleIconClass) {\n label.appendChild(icon)\n }\n\n label.appendChild(labelText)\n\n return { label, labelText, icon }\n }\n\n getFakeLabel (config) {\n const label = document.createElement('label')\n const labelText = document.createElement('span')\n const icon = document.createElement('i')\n const dummyInput = document.createElement('input')\n\n label.setAttribute('for', config.for)\n label.classList.add('jedi-title')\n label.classList.add('jedi-label')\n\n if (config.visuallyHidden) {\n this.visuallyHidden(label)\n }\n\n labelText.innerHTML = config.content\n\n if (config.titleIconClass) {\n this.addIconClass(icon, config.titleIconClass)\n }\n\n dummyInput.setAttribute('aria-hidden', 'true')\n dummyInput.setAttribute('type', 'hidden')\n dummyInput.setAttribute('disabled', '')\n dummyInput.setAttribute('id', config.for)\n this.visuallyHidden(dummyInput)\n\n label.appendChild(icon)\n label.appendChild(labelText)\n label.appendChild(dummyInput)\n\n return { label, labelText, icon, dummyInput }\n }\n\n /**\n * Returns a icon element\n */\n addIconClass (element, classes = '') {\n let iconClasses = classes.split(' ')\n iconClasses = iconClasses.filter((className) => className.length > 0)\n\n if (iconClasses) {\n iconClasses.forEach((className) => {\n element.classList.add(className)\n })\n }\n }\n\n getOptInWrapper () {\n const optInWrapper = document.createElement('span')\n const optInContainer = document.createElement('span')\n const otherContainer = document.createElement('span')\n\n optInWrapper.classList.add('jedi-opt-in-wrapper')\n optInWrapper.style.display = 'flex'\n optInWrapper.style.alignItems = 'center'\n\n optInContainer.classList.add('jedi-opt-in-container')\n\n otherContainer.classList.add('jedi-title-container')\n otherContainer.style.flexGrow = '1'\n\n optInWrapper.appendChild(otherContainer)\n optInWrapper.appendChild(optInContainer)\n\n return { optInWrapper, optInContainer, otherContainer }\n }\n\n /**\n * Container for complex editors like arrays and objects\n */\n getCard () {\n const html = document.createElement('div')\n html.classList.add('jedi-editor-card')\n return html\n }\n\n /**\n * Header for cards\n */\n getCardHeader () {\n const html = document.createElement('div')\n html.classList.add('jedi-editor-card-header')\n return html\n }\n\n /**\n * A body for the cards\n */\n getCardBody () {\n const html = document.createElement('div')\n html.classList.add('jedi-editor-card-body')\n return html\n }\n\n /**\n * Wrapper for editor actions buttons\n */\n getActionsSlot () {\n const html = document.createElement('div')\n html.classList.add('jedi-actions-slot')\n return html\n }\n\n /**\n * Wrapper for editor array specific actions buttons\n */\n getArrayActionsSlot () {\n const html = document.createElement('span')\n html.classList.add('jedi-array-actions-slot')\n return html\n }\n\n /**\n * Wrapper for child editors\n */\n getChildrenSlot () {\n const html = document.createElement('div')\n html.classList.add('jedi-children-slot')\n return html\n }\n\n /**\n * Wrapper for error messages\n */\n getMessagesSlot (config = {}) {\n const html = document.createElement('div')\n html.classList.add('jedi-messages-slot')\n html.setAttribute('aria-atomic', 'false')\n html.setAttribute('aria-live', 'polite')\n\n if (config.id) {\n html.setAttribute('id', config.id)\n }\n\n return html\n }\n\n /**\n * Wrapper for editor controls\n */\n getControlSlot () {\n const html = document.createElement('div')\n html.classList.add('jedi-control-slot')\n return html\n }\n\n /**\n * Toggles the ObjectEditor properties wrapper visibility\n */\n getPropertiesToggle (config) {\n const toggle = this.getButton(config)\n toggle.classList.add('jedi-properties-toggle')\n\n toggle.addEventListener('click', () => {\n if (config.propertiesContainer.open) {\n config.propertiesContainer.close()\n } else {\n config.propertiesContainer.showModal()\n }\n })\n\n return toggle\n }\n\n /**\n * Container that will collapse and expand to show and hide it contents\n */\n getCollapse (config) {\n const collapse = document.createElement('div')\n collapse.classList.add('jedi-collapse')\n collapse.setAttribute('id', config.id)\n\n if (this.useToggleEvents && config.startCollapsed) {\n collapse.style.display = 'none'\n }\n\n return collapse\n }\n\n /**\n * Toggle button for collapse\n */\n getCollapseToggle (config) {\n const toggle = this.getButton(config)\n toggle.classList.add('jedi-collapse-toggle')\n toggle.setAttribute('always-enabled', '')\n\n if (this.useToggleEvents) {\n toggle.addEventListener('click', () => {\n if (config.collapse.style.display === 'none') {\n config.collapse.style.display = 'block'\n } else {\n config.collapse.style.display = 'none'\n }\n })\n }\n\n let collapsed = config.startCollapsed\n\n if (collapsed) {\n toggle.setAttribute('aria-expanded', 'false')\n } else {\n toggle.setAttribute('aria-expanded', 'true')\n }\n\n toggle.style.transition = 'transform 0.1s ease'\n\n if (collapsed) {\n toggle.style.transform = 'rotate(90deg)'\n }\n\n toggle.addEventListener('click', () => {\n if (collapsed) {\n toggle.style.transform = 'rotate(0deg)'\n } else {\n toggle.style.transform = 'rotate(90deg)'\n }\n\n collapsed = !collapsed\n })\n\n return toggle\n }\n\n /**\n * Container for properties editing elements like property activators\n */\n getPropertiesSlot (config) {\n const html = document.createElement('dialog')\n html.classList.add('jedi-properties-slot')\n html.setAttribute('id', config.id)\n\n window.addEventListener('click', (event) => {\n if (event.target === html) {\n html.close()\n }\n })\n\n return html\n }\n\n /**\n * Container for properties editing elements like property activators\n */\n getJsonData (config) {\n // dialog\n const dialog = document.createElement('dialog')\n dialog.classList.add('jedi-json-data')\n dialog.setAttribute('id', config.id)\n\n window.addEventListener('click', (event) => {\n if (event.target === dialog) {\n dialog.close()\n }\n })\n\n // toggle\n const toggle = this.getButton({\n // content: config.propertiesToggleContent, // todo: use text config or something\n id: 'jedi-json-data-toggle-' + config.id,\n icon: 'edit'\n })\n\n toggle.classList.add('jedi-json-data-toggle')\n\n toggle.addEventListener('click', () => {\n if (dialog.open) {\n dialog.close()\n } else {\n dialog.showModal()\n }\n })\n\n const control = document.createElement('div')\n\n // label\n const { label } = this.getLabel({\n for: 'json-data-input-' + config.id,\n text: 'JSON Data'\n })\n\n // input\n const input = document.createElement('textarea')\n input.setAttribute('id', 'json-data-input-' + config.id)\n input.cols = 60\n input.style.whiteSpace = 'pre'\n input.style.overflowX = 'auto'\n input.style.resize = 'both'\n input.style.maxHeight = '60vh'\n\n // saveBtn\n const saveBtn = this.getButton({\n // content: config.propertiesToggleContent, // todo: use text config or something\n id: 'jedi-json-data-save-' + config.id,\n icon: 'save'\n })\n\n dialog.appendChild(control)\n control.appendChild(label)\n control.appendChild(input)\n dialog.appendChild(saveBtn)\n\n return {\n dialog,\n toggle,\n control,\n input,\n saveBtn\n }\n }\n\n /**\n * Container for screen reader announced messages\n */\n getPropertiesAriaLive () {\n const html = document.createElement('div')\n html.classList.add('jedi-properties-aria-live')\n html.setAttribute('role', 'status')\n html.setAttribute('aria-live', 'polite')\n return html\n }\n\n /**\n * A message that will be announced by screen reader\n */\n getAriaLiveMessage (message) {\n const html = document.createElement('p')\n html.classList.add('jedi-aria-live-message')\n html.textContent = message\n this.visuallyHidden(html)\n return html\n }\n\n /**\n * Wrapper for property activators\n */\n getPropertiesActivators () {\n const html = document.createElement('div')\n html.classList.add('jedi-properties-activators')\n return html\n }\n\n /**\n * Group for property activators\n */\n getPropertiesGroup (config = {}) {\n const container = document.createElement('div')\n container.classList.add('jedi-properties-group-container')\n\n const group = document.createElement('div')\n group.classList.add('jedi-properties-group')\n\n const name = document.createElement('p')\n name.classList.add('jedi-properties-group-name')\n name.textContent = config.name ?? ''\n\n container.appendChild(name)\n container.appendChild(group)\n return { container, group, name }\n }\n\n /**\n * Wrapper buttons\n */\n getBtnGroup () {\n const html = document.createElement('span')\n html.classList.add('jedi-btn-group')\n return html\n }\n\n /**\n * A button\n */\n getButton (config = {}) {\n const button = document.createElement('button')\n const text = document.createElement('span')\n const icon = document.createElement('i')\n\n button.classList.add('jedi-btn')\n button.setAttribute('type', 'button')\n\n if (config.value) {\n button.value = config.value\n }\n\n if (config.id) {\n button.setAttribute('id', config.id)\n }\n\n text.textContent = ' ' + config.content\n\n if (this.btnIcons && this.icons && config.icon) {\n this.addIconClass(icon, this.icons[config.icon])\n icon.setAttribute('title', config.content)\n }\n\n if (!this.btnContents) {\n this.visuallyHidden(text)\n }\n\n if (this.icons && config.icon) {\n button.appendChild(icon)\n }\n\n button.appendChild(text)\n\n return button\n }\n\n getAddPropertyButton (config) {\n const html = this.getButton(config)\n html.classList.add('jedi-add-property-btn')\n return html\n }\n\n /**\n * Array \"add\" item button\n */\n getArrayBtnAdd (config) {\n const html = this.getButton({\n content: config.content,\n icon: 'add'\n })\n html.classList.add('jedi-array-add')\n return html\n }\n\n /**\n * Array \"delete\" item button\n */\n getDeleteItemBtn (config) {\n const deleteItemBtn = this.getButton({\n content: config.content,\n icon: 'delete'\n })\n deleteItemBtn.classList.add('jedi-array-delete')\n return deleteItemBtn\n }\n\n /**\n * Array \"move up\" item button\n */\n getMoveUpItemBtn (config) {\n const moveUpItemBtn = this.getButton({\n content: config.content,\n icon: 'moveUp'\n })\n moveUpItemBtn.classList.add('jedi-array-move-up')\n return moveUpItemBtn\n }\n\n /**\n * Array \"move down\" item button\n */\n getMoveDownItemBtn (config) {\n const moveDownItemBtn = this.getButton({\n content: config.content,\n icon: 'moveDown'\n })\n moveDownItemBtn.classList.add('jedi-array-move-down')\n return moveDownItemBtn\n }\n\n getDragItemBtn (config) {\n const dragItemBtn = this.getButton({\n content: config.content,\n icon: 'drag'\n })\n dragItemBtn.classList.add('jedi-array-drag')\n return dragItemBtn\n }\n\n /**\n * Wrapper for the editor description\n */\n getDescription (config = {}) {\n const description = document.createElement('small')\n description.style.display = 'block'\n description.classList.add('jedi-description')\n\n if (config.content) {\n description.innerHTML = config.content\n }\n\n if (config.id) {\n description.setAttribute('id', config.id)\n }\n\n return description\n }\n\n /**\n * Info button to display extra information\n */\n getInfo (config = {}) {\n const container = document.createElement('span')\n const info = document.createElement('a')\n const infoText = document.createElement('span')\n const icon = document.createElement('i')\n\n container.classList.add('jedi-info-button-container')\n container.style.display = 'inline-block'\n\n info.setAttribute('href', '#')\n info.classList.add('jedi-info-button')\n info.style.marginLeft = '4px'\n\n if (isObject(config.attributes)) {\n for (const [key, value] of Object.entries(config.attributes)) {\n info.setAttribute(key, value)\n }\n }\n\n infoText.textContent = 'Info'\n\n if (!this.btnContents && this.btnIcons) {\n this.visuallyHidden(infoText)\n }\n\n icon.setAttribute('title', 'More information')\n\n if (this.icons) {\n this.addIconClass(icon, this.icons['info'])\n }\n\n info.appendChild(icon)\n info.appendChild(infoText)\n container.appendChild(info)\n\n return { container, info }\n }\n\n /**\n * Dialog or modal that contains extra information about the control\n */\n infoAsModal (info, id, config = {}) {\n const dialog = document.createElement('dialog')\n const title = document.createElement('div')\n const content = document.createElement('div')\n const closeBtn = this.getButton({\n content: 'Close',\n icon: 'close'\n })\n\n dialog.classList.add('jedi-modal-dialog')\n\n title.classList.add('jedi-modal-title')\n\n if (isString(config.title)) {\n title.innerHTML = config.title\n }\n\n content.classList.add('jedi-modal-content')\n\n if (isString(config.content)) {\n content.innerHTML = config.content\n }\n\n closeBtn.classList.add('jedi-modal-close')\n closeBtn.setAttribute('always-enabled', '')\n\n window.addEventListener('click', (event) => {\n if (event.target === dialog) {\n dialog.close()\n }\n })\n\n closeBtn.addEventListener('click', () => {\n dialog.close()\n })\n\n info.info.addEventListener('click', () => {\n dialog.showModal()\n })\n\n info.container.appendChild(dialog)\n dialog.appendChild(title)\n dialog.appendChild(content)\n dialog.appendChild(closeBtn)\n }\n\n getPlaceholderControl (config) {\n const descriptionId = config.id + '-description'\n const messagesId = config.id + '-messages'\n\n const container = document.createElement('div')\n const placeholder = document.createElement('div')\n const actions = this.getActionsSlot()\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden,\n titleIconClass: config.titleIconClass\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(placeholder)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, placeholder, label, labelText, description, messages, actions }\n }\n\n /**\n * Object control is a card containing multiple editors.\n * Each editor is mapped to an object instance property.\n * Properties can be added, activated and deactivated depending on configuration\n */\n getObjectControl (config) {\n const collapseId = 'collapse-' + config.id\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const body = this.getCardBody()\n const ariaLive = this.getPropertiesAriaLive()\n const messages = this.getMessagesSlot()\n const childrenSlot = this.getChildrenSlot()\n const propertiesActivators = this.getPropertiesActivators()\n const info = this.getInfo(config.info)\n const description = this.getDescription({\n content: config.description\n })\n const jsonData = this.getJsonData({\n id: 'json-data-' + config.id\n })\n const propertiesContainer = this.getPropertiesSlot({\n id: 'properties-slot-' + config.id\n })\n const propertiesToggle = this.getPropertiesToggle({\n content: config.propertiesToggleContent,\n id: 'properties-slot-toggle-' + config.id,\n icon: 'properties',\n propertiesContainer: propertiesContainer\n })\n const collapse = this.getCollapse({\n id: collapseId,\n startCollapsed: config.startCollapsed\n })\n const collapseToggle = this.getCollapseToggle({\n content: config.collapseToggleContent,\n id: 'collapse-toggle-' + config.id,\n icon: 'collapse',\n collapseId: collapseId,\n collapse: collapse,\n startCollapsed: config.startCollapsed\n })\n const addPropertyControl = this.getInputControl({\n type: 'text',\n id: 'jedi-add-property-input-' + config.id,\n title: config.addPropertyContent\n })\n const addPropertyBtn = this.getAddPropertyButton({\n content: config.addPropertyContent,\n icon: 'add'\n })\n const fieldset = this.getFieldset()\n const { legend, infoContainer, legendText } = this.getLegend({\n content: config.title,\n id: config.id,\n titleHidden: config.titleHidden\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n addPropertyBtn.classList.add('jedi-object-add')\n\n container.appendChild(fieldset)\n container.appendChild(propertiesContainer)\n\n if (config.editJsonData) {\n container.appendChild(jsonData.dialog)\n }\n\n fieldset.appendChild(legend)\n\n if (isObject(config.info)) {\n infoContainer.appendChild(info.container)\n }\n\n fieldset.appendChild(collapse)\n collapse.appendChild(body)\n\n if (config.description) {\n body.appendChild(description)\n }\n\n body.appendChild(messages)\n\n if (config.readOnly === false) {\n legend.appendChild(actions)\n }\n\n body.appendChild(childrenSlot)\n\n if (config.addProperty) {\n propertiesContainer.appendChild(addPropertyControl.container)\n propertiesContainer.appendChild(addPropertyBtn)\n propertiesContainer.appendChild(document.createElement('hr'))\n }\n\n if (config.editJsonData) {\n actions.appendChild(jsonData.toggle)\n }\n\n if (config.enablePropertiesToggle) {\n actions.appendChild(propertiesToggle)\n propertiesContainer.appendChild(ariaLive)\n propertiesContainer.appendChild(propertiesActivators)\n }\n\n if (config.enableCollapseToggle) {\n actions.appendChild(collapseToggle)\n }\n\n return {\n container,\n collapse,\n collapseToggle,\n description,\n body,\n actions,\n messages,\n childrenSlot,\n propertiesToggle,\n jsonData,\n propertiesContainer,\n addPropertyControl,\n addPropertyBtn,\n ariaLive,\n propertiesActivators,\n legend,\n legendText,\n infoContainer\n }\n }\n\n /**\n * Array control is a card containing multiple editors.\n * Items can bve added, deleted or moved up or down.\n */\n getArrayControl (config) {\n const collapseId = 'collapse-' + config.id\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const body = this.getCardBody()\n const messages = this.getMessagesSlot()\n const childrenSlot = this.getChildrenSlot()\n const btnGroup = this.getBtnGroup()\n const addBtn = this.getArrayBtnAdd({\n content: config.arrayAddContent\n })\n\n const fieldset = this.getFieldset()\n const info = this.getInfo(config.info)\n const { legend, legendText } = this.getLegend({\n content: config.title,\n id: config.id,\n titleHidden: config.titleHidden\n })\n const description = this.getDescription({\n content: config.description\n })\n const collapse = this.getCollapse({\n id: collapseId,\n startCollapsed: config.startCollapsed\n })\n const collapseToggle = this.getCollapseToggle({\n content: config.collapseToggleContent,\n id: 'collapse-toggle-' + config.id,\n icon: 'collapse',\n collapseId: collapseId,\n collapse: collapse,\n startCollapsed: config.startCollapsed\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(fieldset)\n fieldset.appendChild(legend)\n\n if (isObject(config.info)) {\n legendText.appendChild(info.container)\n }\n\n fieldset.appendChild(collapse)\n collapse.appendChild(body)\n\n if (config.description) {\n body.appendChild(description)\n }\n\n body.appendChild(messages)\n\n legend.appendChild(actions)\n\n actions.appendChild(btnGroup)\n\n if (isSet(config.arrayAdd) && config.arrayAdd === true) {\n btnGroup.appendChild(addBtn)\n }\n\n body.appendChild(childrenSlot)\n\n if (config.enableCollapseToggle) {\n actions.appendChild(collapseToggle)\n }\n\n return {\n container,\n collapseToggle,\n collapse,\n body,\n actions,\n messages,\n childrenSlot,\n btnGroup,\n addBtn,\n legend,\n legendText\n }\n }\n\n getArrayItem (config = {}) {\n const container = document.createElement('div')\n const body = document.createElement('div')\n const actions = this.getActionsSlot()\n const arrayActions = this.getArrayActionsSlot()\n\n actions.style.textAlign = 'right'\n\n container.classList.add('jedi-array-item')\n body.classList.add('jedi-array-item-body')\n\n if (isSet(config.index)) {\n container.setAttribute('jedi-array-item-index', config.index)\n }\n\n actions.appendChild(arrayActions)\n\n container.appendChild(actions)\n\n container.appendChild(body)\n\n return {\n container,\n actions,\n arrayActions,\n body\n }\n }\n\n /**\n * Multiple control is a card containing multiple editors options that can be\n * selected with a switcher control. Only one editor can be active/visible\n * at a time\n */\n getMultipleControl (config = {}) {\n const container = document.createElement('div')\n const header = document.createElement('div')\n const body = document.createElement('div')\n const messages = this.getMessagesSlot()\n const childrenSlot = this.getChildrenSlot()\n const randomId = generateRandomID(5)\n\n let switcher\n\n if (config.switcher === 'select') {\n switcher = this.getSwitcherSelect({\n values: config.switcherOptionValues,\n titles: config.switcherOptionsLabels,\n title: config.id + '-switcher',\n id: config.id + '-switcher' + '-' + randomId,\n label: config.id + '-switcher' + '-' + randomId,\n titleHidden: true,\n readOnly: config.readOnly\n })\n }\n\n if (config.switcher === 'radios' || config.switcher === 'radios-inline') {\n switcher = this.getSwitcherRadios({\n values: config.switcherOptionValues,\n titles: config.switcherOptionsLabels,\n title: config.id + '-switcher',\n id: config.id + '-switcher' + '-' + randomId,\n label: config.id + '-switcher' + '-' + randomId,\n titleHidden: true,\n readOnly: config.readOnly,\n inline: config.switcher === 'radios-inline'\n })\n }\n\n switcher.container.classList.add('jedi-switcher')\n\n container.appendChild(header)\n container.appendChild(body)\n header.appendChild(switcher.container)\n body.appendChild(messages)\n body.appendChild(childrenSlot)\n\n return {\n container,\n header,\n body,\n messages,\n childrenSlot,\n switcher\n }\n }\n\n adaptForTableMultipleControl (control, td) {\n }\n\n getIfThenElseControl (config) {\n const container = document.createElement('div')\n const card = this.getCard()\n const actions = this.getActionsSlot()\n const body = this.getCardBody()\n const messages = this.getMessagesSlot()\n const childrenSlot = this.getChildrenSlot()\n const header = this.getCardHeader({\n content: config.title,\n titleHidden: config.titleHidden\n })\n const description = this.getDescription({\n content: config.description\n })\n\n body.appendChild(description)\n container.appendChild(messages)\n container.appendChild(childrenSlot)\n\n return {\n container,\n card,\n header,\n body,\n actions,\n messages,\n childrenSlot\n }\n }\n\n /**\n * Control for NullEditor\n */\n getNullControl (config) {\n const descriptionId = config.id + '-description'\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const messages = this.getMessagesSlot()\n const br = document.createElement('br')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getFakeLabel({\n for: config.id,\n content: config.title,\n visuallyHidden: config.titleHidden,\n titleIconClass: config.titleIconClass\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(br)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, label, labelText, description, messages, actions }\n }\n\n /**\n * A Textarea\n */\n getTextareaControl (config) {\n const descriptionId = config.id + '-description'\n const messagesId = config.id + '-messages'\n const describedBy = messagesId + ' ' + descriptionId\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const input = document.createElement('textarea')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n\n input.setAttribute('aria-describedby', describedBy)\n input.setAttribute('id', config.id)\n input.setAttribute('name', config.id)\n input.style.width = '100%'\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(input)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, input, label, labelText, description, messages, actions }\n }\n\n adaptForTableTextareaControl (control) {\n this.visuallyHidden(control.label)\n this.visuallyHidden(control.description)\n control.input.setAttribute('rows', '1')\n }\n\n /**\n * An Input control\n */\n getInputControl (config) {\n const messagesId = config.id + '-messages'\n const descriptionId = config.id + '-description'\n const describedBy = messagesId + ' ' + descriptionId\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const input = document.createElement('input')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden,\n titleIconClass: config.titleIconClass\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n\n input.setAttribute('aria-describedby', describedBy)\n input.setAttribute('type', config.type)\n input.setAttribute('id', config.id)\n input.setAttribute('name', config.id)\n input.style.width = '100%'\n\n container.appendChild(label)\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(input)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, input, label, info, labelText, description, messages, actions }\n }\n\n getInputRangeControl (config) {\n const control = this.getInputControl(config)\n\n // Create output element to display current value\n const output = document.createElement('output')\n output.className = 'range-output'\n output.style.marginLeft = '10px'\n output.style.fontWeight = 'bold'\n\n // Insert output after the input\n control.input.parentNode.insertBefore(output, control.input.nextSibling)\n\n return { ...control, output }\n }\n\n adaptForTableInputControl (control) {\n this.visuallyHidden(control.label)\n this.visuallyHidden(control.description)\n }\n\n /**\n * A radio group control\n */\n getRadiosControl (config) {\n const messagesId = config.id + '-messages'\n const descriptionId = config.id + '-description'\n\n const container = document.createElement('div')\n const fieldset = this.getRadioFieldset()\n const info = this.getInfo(config.info)\n const { legend, legendText } = this.getRadioLegend({\n content: config.title,\n id: config.id,\n for: config.id\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n if (config.titleHidden) {\n this.visuallyHidden(legend)\n }\n\n const radioControls = []\n const radios = []\n const labels = []\n const labelTexts = []\n\n config.values.forEach((value, index) => {\n const describedBy = messagesId + ' ' + descriptionId\n\n const radioControl = document.createElement('div')\n const radio = document.createElement('input')\n const label = document.createElement('label')\n const labelText = document.createElement('span')\n\n radio.setAttribute('type', 'radio')\n radio.setAttribute('id', config.id + '-' + index)\n radio.setAttribute('name', config.id)\n radio.setAttribute('value', value)\n radio.setAttribute('aria-describedby', describedBy)\n\n label.setAttribute('for', config.id + '-' + index)\n label.classList.add('jedi-title')\n label.classList.add('jedi-label')\n\n labelTexts.push(labelText)\n\n if (isSet(config.titles) && isSet(config.titles[index])) {\n labelText.textContent = config.titles[index] ?? value\n }\n\n radioControls.push(radioControl)\n radios.push(radio)\n labels.push(label)\n })\n\n container.appendChild(fieldset)\n fieldset.appendChild(legend)\n\n if (isObject(config.info)) {\n legendText.appendChild(info.container)\n }\n\n radioControls.forEach((radioControl, index) => {\n fieldset.appendChild(radioControls[index])\n radioControl.appendChild(radios[index])\n radioControl.appendChild(labels[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return {\n container,\n fieldset,\n legend,\n legendText,\n info,\n radios,\n labels,\n labelTexts,\n radioControls,\n description,\n messages\n }\n }\n\n adaptForTableRadiosControl (control) {\n this.visuallyHidden(control.legend)\n this.visuallyHidden(control.description)\n }\n\n /**\n * A checkbox control\n */\n getCheckboxControl (config) {\n const descriptionId = config.id + '-description'\n const messagesId = config.id + '-messages'\n const describedBy = messagesId + ' ' + descriptionId\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const formGroup = document.createElement('span')\n const input = document.createElement('input')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n\n input.setAttribute('type', 'checkbox')\n input.setAttribute('id', config.id)\n input.setAttribute('name', config.id)\n input.setAttribute('aria-describedby', describedBy)\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(formGroup)\n container.appendChild(actions)\n formGroup.appendChild(input)\n formGroup.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n formGroup.appendChild(description)\n formGroup.appendChild(messages)\n\n return { container, formGroup, input, label, info, labelText, description, messages, actions }\n }\n\n adaptForTableCheckboxControl (control, td) {\n this.visuallyHidden(control.label)\n this.visuallyHidden(control.description)\n }\n\n getCheckboxesControl (config) {\n const messagesId = config.id + '-messages'\n const descriptionId = config.id + '-description'\n\n const container = document.createElement('div')\n const fieldset = this.getRadioFieldset()\n const info = this.getInfo(config.info)\n const { legend, legendText } = this.getRadioLegend({\n content: config.title,\n id: config.id,\n for: config.id\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n\n if (config.titleHidden) {\n this.visuallyHidden(legend)\n }\n\n const checkboxControls = []\n const checkboxes = []\n const labels = []\n const labelTexts = []\n\n config.values.forEach((value, index) => {\n const describedBy = messagesId + ' ' + descriptionId\n const checkboxId = config.id + '-' + index\n\n const checkboxControl = document.createElement('div')\n const checkbox = document.createElement('input')\n const label = document.createElement('label')\n const labelText = document.createElement('span')\n\n checkbox.setAttribute('type', 'checkbox')\n checkbox.setAttribute('id', checkboxId)\n checkbox.setAttribute('name', config.id)\n checkbox.setAttribute('value', value)\n checkbox.setAttribute('aria-describedby', describedBy)\n\n label.setAttribute('for', checkboxId)\n\n if (config.titles && config.titles[index]) {\n labelText.textContent = config.titles[index]\n }\n\n checkboxControls.push(checkboxControl)\n checkboxes.push(checkbox)\n labelTexts.push(labelText)\n labels.push(label)\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(fieldset)\n fieldset.appendChild(legend)\n\n if (isObject(config.info)) {\n legendText.appendChild(info.container)\n }\n\n checkboxControls.forEach((checkboxControl, index) => {\n fieldset.appendChild(checkboxControls[index])\n checkboxControl.appendChild(checkboxes[index])\n checkboxControl.appendChild(labels[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return {\n container,\n fieldset,\n legend,\n legendText,\n checkboxes,\n labels,\n labelTexts,\n checkboxControls,\n description,\n messages\n }\n }\n\n adaptForTableCheckboxesControl (control, td) {\n this.visuallyHidden(control.legend)\n this.visuallyHidden(control.description)\n }\n\n /**\n * A select control\n */\n getSelectControl (config) {\n const descriptionId = config.id + '-description'\n const messagesId = config.id + '-messages'\n const describedBy = messagesId + ' ' + descriptionId\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const input = document.createElement('select')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n\n input.setAttribute('id', config.id)\n input.setAttribute('name', config.id)\n input.setAttribute('aria-describedby', describedBy)\n\n config.values.forEach((value, index) => {\n const option = document.createElement('option')\n option.setAttribute('value', value)\n\n if (config.titles && config.titles[index]) {\n option.textContent = config.titles[index]\n }\n\n input.appendChild(option)\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(input)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, input, label, info, labelText, description, messages, actions }\n }\n\n adaptForTableSelectControl (control) {\n this.visuallyHidden(control.label)\n this.visuallyHidden(control.description)\n }\n\n /**\n * Control to switch between multiple editors options\n */\n getSwitcherSelect (config) {\n return this.getSelectControl(config)\n }\n\n /**\n * Control to switch between multiple editors options\n */\n getSwitcherRadios (config) {\n return this.getRadiosControl(config)\n }\n\n /**\n * Another type of error message container used for more complex editors like\n * object, array and multiple editors\n */\n getAlert (config) {\n return this.getErrorFeedback(config)\n }\n\n /**\n * Error messages\n * @public\n */\n getErrorFeedback (config) {\n const html = document.createElement('div')\n const invalidFeedbackText = document.createElement('small')\n const invalidFeedbackIcon = document.createElement('span')\n\n invalidFeedbackText.textContent = config.message\n invalidFeedbackIcon.textContent = '⚠ '\n invalidFeedbackIcon.classList.add('jedi-error-message')\n invalidFeedbackIcon.setAttribute('aria-hidden', 'true')\n\n html.classList.add('jedi-error-message')\n\n html.appendChild(invalidFeedbackIcon)\n html.appendChild(invalidFeedbackText)\n return html\n }\n\n /**\n * Error messages\n * @public\n */\n getWarningFeedback (config) {\n const html = document.createElement('div')\n const invalidFeedbackText = document.createElement('small')\n const invalidFeedbackIcon = document.createElement('span')\n\n invalidFeedbackText.textContent = config.message\n invalidFeedbackIcon.textContent = '⚠ '\n invalidFeedbackIcon.classList.add('jedi-warning-message')\n invalidFeedbackIcon.setAttribute('aria-hidden', 'true')\n\n html.classList.add('jedi-warning-message')\n\n html.appendChild(invalidFeedbackIcon)\n html.appendChild(invalidFeedbackText)\n return html\n }\n\n /**\n * Container for columns\n */\n getRow () {\n const row = document.createElement('div')\n row.classList.add('jedi-row')\n return row\n }\n\n /**\n * A column to contain content to a specific width\n */\n getCol (xs, sm, md, lg, offsetMd) {\n const col = document.createElement('div')\n col.classList.add('jedi-col')\n col.classList.add('jedi-col-xs-' + xs)\n col.classList.add('jedi-col-sm-' + sm)\n col.classList.add('jedi-col-md-' + md)\n col.classList.add('jedi-col-lg-' + lg)\n\n if (offsetMd) {\n col.classList.add('jedi-col-md-offset-' + offsetMd)\n }\n\n return col\n }\n\n /**\n * Clearfix fixes layout issues in some libraries like bootstrap 3\n */\n getClearfix () {\n const clearfix = document.createElement('div')\n clearfix.classList.add('clearfix')\n return clearfix\n }\n\n /**\n * Tab list is a list of links that triggers tabs visibility ne at the time\n */\n getTabList () {\n const tabList = document.createElement('ul')\n tabList.classList.add('jedi-nav-list')\n return tabList\n }\n\n /**\n * A Tab is a wrapper for content\n */\n getTab (config) {\n const list = document.createElement('li')\n const link = document.createElement('a')\n const arrayActions = document.createElement('span')\n const text = document.createElement('span')\n link.classList.add('jedi-nav-link')\n link.setAttribute('href', '#' + 'tab-pane-' + config.id)\n text.classList.add('jedi-nav-text')\n text.textContent = config.hasErrors ? '⚠ ' + config.title : config.title\n link.appendChild(arrayActions)\n link.appendChild(text)\n list.appendChild(link)\n return { list, link, arrayActions, text }\n }\n\n /**\n * Wrapper for tabs\n */\n getTabContent () {\n const tabContent = document.createElement('div')\n tabContent.classList.add('tab-content')\n return tabContent\n }\n\n /**\n * A simple table layout\n */\n getTable () {\n const container = document.createElement('div')\n const table = document.createElement('table')\n const thead = document.createElement('thead')\n const tbody = document.createElement('tbody')\n\n table.appendChild(thead)\n table.appendChild(tbody)\n container.appendChild(table)\n\n return { container, table, thead, tbody }\n }\n\n /**\n * Returns a <td> element\n */\n getTableDefinition () {\n const td = document.createElement('td')\n td.style.whiteSpace = 'nowrap'\n return td\n }\n\n /**\n * Returns a <th> element\n */\n getTableHeader (config = {}) {\n const th = document.createElement('th')\n th.style.paddingLeft = '12px'\n th.style.paddingRight = '12px'\n th.style.textWrap = 'nowrap'\n th.style.verticalAlign = 'bottom'\n\n if (config.minWidth) {\n th.style.minWidth = config.minWidth\n }\n\n return th\n }\n\n /**\n * Set tab attributes to make it toggleable\n */\n setTabPaneAttributes (element, active, id) {\n element.setAttribute('id', 'tab-pane-' + id)\n element.classList.add('jedi-tab-pane')\n }\n\n /**\n * Makes an element visually hidden\n */\n visuallyHidden (element) {\n element.style.position = 'absolute'\n element.style.width = '1px'\n element.style.height = '1px'\n element.style.padding = '0'\n element.style.margin = '-1px'\n element.style.overflow = 'hidden'\n element.style.clip = 'rect(0,0,0,0)'\n element.style.border = '0'\n }\n\n /**\n * Reveals a visually hidden element\n */\n visuallyVisible (element) {\n element.removeAttribute('style')\n }\n\n /**\n * Makes an element physically hidden\n */\n physicallyHidden (element) {\n element.style.display = 'none'\n }\n}\n\nexport default Theme\n","import Theme from './theme.js'\nimport { isString } from '../helpers/utils.js'\n\n/**\n * Represents a ThemeBootstrap3 instance.\n * @extends Theme\n */\nclass ThemeBootstrap3 extends Theme {\n init () {\n this.useToggleEvents = false\n }\n\n getAddPropertyButton (config) {\n const btn = super.getAddPropertyButton(config)\n btn.classList.add('btn-primary')\n btn.classList.add('btn-block')\n return btn\n }\n\n getCollapseToggle (config) {\n const toggle = super.getCollapseToggle(config)\n toggle.setAttribute('href', '#' + config.collapseId)\n toggle.setAttribute('data-toggle', 'collapse')\n toggle.setAttribute('always-enabled', '')\n return toggle\n }\n\n getCollapse (config) {\n const collapse = super.getCollapse(config)\n collapse.classList.add('collapse')\n\n if (!config.startCollapsed) {\n collapse.classList.add('in')\n }\n\n return collapse\n }\n\n getJsonData (config) {\n const jsonData = super.getJsonData(config)\n jsonData.control.classList.add('form-group')\n jsonData.input.classList.add('form-control')\n jsonData.saveBtn.classList.add('btn-primary')\n jsonData.saveBtn.classList.add('btn-block')\n return jsonData\n }\n\n getFieldset () {\n const fieldset = super.getFieldset()\n fieldset.classList.add('panel')\n fieldset.classList.add('panel-default')\n fieldset.style.marginBottom = '15px'\n return fieldset\n }\n\n getLegend (config) {\n const superLegend = super.getLegend(config)\n const { legend } = superLegend\n legend.classList.add('panel-heading')\n legend.classList.add('pull-left')\n legend.style.margin = '0'\n legend.style.display = 'flex'\n legend.style.justifyContent = 'space-between'\n legend.style.alignItems = 'center'\n return superLegend\n }\n\n getRadioLegend (config) {\n const superRadioLegend = super.getRadioLegend(config)\n const { legend } = superRadioLegend\n legend.style.fontWeight = 'inherit'\n legend.style.border = 'none'\n legend.style.marginBottom = '0'\n return superRadioLegend\n }\n\n getLabel (config) {\n const labelObj = super.getLabel(config)\n\n if (labelObj.icon.classList) {\n labelObj.icon.style.marginRight = '5px'\n }\n\n return labelObj\n }\n\n getCard () {\n const card = super.getCard()\n card.classList.add('panel')\n card.classList.add('panel-default')\n return card\n }\n\n getCardHeader (config) {\n const header = super.getCardHeader(config)\n header.classList.add('panel-heading')\n header.classList.add('text-right')\n return header\n }\n\n getCardBody () {\n const html = super.getCardBody()\n html.classList.add('panel-body')\n html.style.clear = 'both'\n html.style.paddingBottom = '0'\n return html\n }\n\n getBtnGroup () {\n const html = super.getBtnGroup()\n html.classList.add('btn-group')\n return html\n }\n\n getButton (config) {\n const html = super.getButton(config)\n html.classList.add('btn')\n html.classList.add('btn-xs')\n html.classList.add('btn-default')\n return html\n }\n\n getDescription (config) {\n const description = super.getDescription(config)\n description.classList.add('text-muted')\n description.style.marginBottom = '5px'\n return description\n }\n\n getPropertiesGroup (config = {}) {\n const propertiesGroup = super.getPropertiesGroup(config)\n const br = document.createElement('br')\n propertiesGroup.container.appendChild(br)\n propertiesGroup.group.classList.add('pl-3')\n return propertiesGroup\n }\n\n getTextareaControl (config) {\n const control = super.getTextareaControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableTextareaControl (control) {\n super.adaptForTableTextareaControl(control)\n control.container.classList.remove('form-group')\n }\n\n getInputControl (config) {\n const control = super.getInputControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n getInputRangeControl (config) {\n return super.getInputRangeControl(config)\n }\n\n adaptForTableInputControl (control, td) {\n super.adaptForTableInputControl(control, td)\n control.container.classList.remove('form-group')\n }\n\n getRadiosControl (config) {\n const control = super.getRadiosControl(config)\n const { fieldset, radios, labels, labelTexts, radioControls, description, messages } = control\n\n radioControls.forEach((radioControl, index) => {\n radioControl.classList.add('radio')\n\n if (config.inline) {\n radioControl.style.display = 'inline-flex'\n radioControl.style.alignItems = 'center'\n radioControl.style.paddingLeft = '0'\n radioControl.style.marginRight = '15px'\n }\n\n fieldset.appendChild(radioControls[index])\n radioControl.appendChild(labels[index])\n labels[index].appendChild(radios[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return control\n }\n\n adaptForTableRadiosControl (control, td) {\n super.adaptForTableRadiosControl(control, td)\n control.fieldset.classList.remove('panel')\n control.fieldset.classList.remove('panel-default')\n control.fieldset.style.marginBottom = '0'\n }\n\n getCheckboxesControl (config) {\n const control = super.getCheckboxesControl(config)\n const { fieldset, checkboxes, labels, labelTexts, checkboxControls } = control\n\n checkboxControls.forEach((checkboxControl, index) => {\n checkboxControl.classList.add('checkbox')\n\n if (config.inline) {\n checkboxControl.style.display = 'inline-flex'\n checkboxControl.style.alignItems = 'center'\n checkboxControl.style.paddingLeft = '0'\n checkboxControl.style.marginRight = '30px'\n }\n\n fieldset.appendChild(checkboxControls[index])\n checkboxControl.appendChild(labels[index])\n labels[index].appendChild(checkboxes[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n return control\n }\n\n adaptForTableCheckboxesControl (control, td) {\n super.adaptForTableCheckboxesControl(control, td)\n control.fieldset.classList.remove('panel')\n control.fieldset.classList.remove('panel-default')\n control.body.classList.remove('panel-body')\n }\n\n getCheckboxControl (config) {\n const control = super.getCheckboxControl(config)\n const { container, formGroup, description, messages } = control\n\n container.appendChild(formGroup)\n container.appendChild(description)\n container.appendChild(messages)\n return control\n }\n\n adaptForTableCheckboxControl (control, td) {\n super.adaptForTableCheckboxControl(control, td)\n }\n\n getSelectControl (config) {\n const control = super.getSelectControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableSelectControl (control, td) {\n super.adaptForTableSelectControl(control, td)\n control.container.classList.remove('form-group')\n }\n\n adaptForTableMultipleControl (control, td) {\n super.adaptForTableMultipleControl(control, td)\n }\n\n getAlert (config) {\n const html = super.getAlert(config)\n html.classList.add('alert')\n html.classList.add('alert-danger')\n return html\n }\n\n getErrorFeedback (config) {\n const html = super.getErrorFeedback(config)\n html.classList.add('text-danger')\n return html\n }\n\n getWarningFeedback (config) {\n const html = super.getWarningFeedback(config)\n html.classList.add('text-warning')\n return html\n }\n\n getRow () {\n const row = super.getRow()\n row.classList.add('row')\n return row\n }\n\n getCol (xs, sm, md, lg, offsetMd) {\n const col = super.getCol()\n col.classList.add('col-xs-' + xs)\n col.classList.add('col-sm-' + sm)\n col.classList.add('col-md-' + md)\n col.classList.add('col-lg-' + lg)\n\n if (offsetMd) {\n col.classList.add('col-md-offset-' + offsetMd)\n }\n\n return col\n }\n\n getTabList (config) {\n const tabList = super.getTabList(config)\n tabList.classList.add('nav')\n\n if (config.variant === 'horizontal') {\n tabList.classList.add('nav-tabs')\n } else {\n tabList.classList.add('nav-pills')\n tabList.classList.add('nav-stacked')\n }\n\n return tabList\n }\n\n getTab (config) {\n const tab = super.getTab(config)\n tab.text.style.marginLeft = '15px'\n\n if (config.active) {\n tab.list.classList.add('active')\n }\n\n tab.link.setAttribute('data-toggle', 'tab')\n return tab\n }\n\n /**\n * A simple table layout\n */\n getTable () {\n const container = document.createElement('div')\n const table = document.createElement('table')\n const thead = document.createElement('thead')\n const tbody = document.createElement('tbody')\n\n container.classList.add('table-responsive')\n table.classList.add('table')\n\n table.appendChild(thead)\n table.appendChild(tbody)\n container.appendChild(table)\n\n return { container, table, thead, tbody }\n }\n\n setTabPaneAttributes (element, active, id) {\n super.setTabPaneAttributes(element, active, id)\n element.classList.add('tab-pane')\n\n if (active) {\n element.classList.add('in')\n element.classList.add('active')\n }\n }\n\n infoAsModal (info, id, config = {}) {\n const modal = document.createElement('div')\n const modalDialog = document.createElement('div')\n const modalContent = document.createElement('div')\n const modalHeader = document.createElement('div')\n const modalTitle = document.createElement('div')\n const modalBody = document.createElement('div')\n const closeBtn = this.getButton({\n content: 'Close',\n icon: 'close'\n })\n const modalId = id + '-modal'\n\n modal.setAttribute('role', 'dialog')\n modal.setAttribute('aria-modal', 'true')\n modal.setAttribute('id', modalId)\n closeBtn.setAttribute('data-dismiss', 'modal')\n closeBtn.setAttribute('always-enabled', '')\n info.info.setAttribute('data-toggle', 'modal')\n info.info.setAttribute('data-target', '#' + modalId)\n modal.classList.add('modal')\n modal.classList.add('fade')\n modalDialog.classList.add('modal-dialog')\n modalContent.classList.add('modal-content')\n modalHeader.classList.add('modal-header')\n modalTitle.classList.add('modal-title')\n modalBody.classList.add('modal-body')\n closeBtn.classList.add('jedi-modal-close')\n closeBtn.classList.add('close')\n\n if (isString(config.title)) {\n modalTitle.innerHTML = config.title\n }\n\n if (isString(config.content)) {\n modalBody.innerHTML = config.content\n }\n\n info.container.appendChild(modal)\n modal.appendChild(modalDialog)\n modalDialog.appendChild(modalContent)\n modalContent.appendChild(modalHeader)\n modalHeader.appendChild(closeBtn)\n modalHeader.appendChild(modalTitle)\n modalContent.appendChild(modalBody)\n }\n\n visuallyHidden (element) {\n element.classList.add('sr-only')\n }\n\n visuallyVisible (element) {\n element.classList.remove('sr-only')\n }\n}\n\nexport default ThemeBootstrap3\n","import Theme from './theme.js'\nimport { isObject, isString } from '../helpers/utils.js'\n\n/**\n * Represents a ThemeBootstrap4 instance.\n * @extends Theme\n */\nclass ThemeBootstrap4 extends Theme {\n init () {\n this.useToggleEvents = false\n }\n\n getAddPropertyButton (config) {\n const btn = super.getAddPropertyButton(config)\n btn.classList.add('btn-primary')\n btn.classList.add('btn-block')\n return btn\n }\n\n getCollapseToggle (config) {\n const toggle = super.getCollapseToggle(config)\n toggle.setAttribute('href', '#' + config.collapseId)\n toggle.setAttribute('data-toggle', 'collapse')\n toggle.setAttribute('always-enabled', '')\n return toggle\n }\n\n getCollapse (config) {\n const collapse = super.getCollapse(config)\n collapse.classList.add('collapse')\n\n if (!config.startCollapsed) {\n collapse.classList.add('show')\n }\n\n return collapse\n }\n\n getJsonData (config) {\n const jsonData = super.getJsonData(config)\n jsonData.control.classList.add('form-group')\n jsonData.input.classList.add('form-control')\n jsonData.saveBtn.classList.add('btn-primary')\n jsonData.saveBtn.classList.add('btn-block')\n return jsonData\n }\n\n getFieldset () {\n const fieldset = document.createElement('fieldset')\n fieldset.setAttribute('role', 'group')\n fieldset.classList.add('card')\n fieldset.classList.add('mb-3')\n return fieldset\n }\n\n getLegend (config) {\n const superLegend = super.getLegend(config)\n const { legend } = superLegend\n legend.classList.add('card-header')\n legend.classList.add('d-flex')\n legend.classList.add('justify-content-between')\n legend.classList.add('align-items-center')\n legend.classList.add('float-left')\n legend.classList.add('py-2')\n return superLegend\n }\n\n getLabel (config) {\n const labelObj = super.getLabel(config)\n\n if (labelObj.icon.classList) {\n labelObj.icon.classList.add('mr-1')\n }\n\n return labelObj\n }\n\n getCard () {\n const card = super.getCard()\n card.classList.add('card')\n card.classList.add('mb-3')\n return card\n }\n\n getCardHeader (config) {\n const html = super.getCardHeader(config)\n html.classList.add('card-header')\n html.classList.add('d-flex')\n html.classList.add('justify-content-end')\n html.classList.add('align-items-center')\n html.classList.add('py-1')\n return html\n }\n\n getCardBody () {\n const html = super.getCardBody()\n html.classList.add('card-body')\n html.classList.add('pb-0')\n return html\n }\n\n getBtnGroup () {\n const html = super.getBtnGroup()\n html.classList.add('btn-group')\n return html\n }\n\n getButton (config) {\n const html = super.getButton(config)\n html.classList.add('btn')\n html.classList.add('btn-sm')\n return html\n }\n\n getDescription (config) {\n const description = super.getDescription(config)\n description.classList.add('text-muted')\n description.classList.add('fs-sm')\n description.classList.add('mb-1')\n return description\n }\n\n getPropertiesGroup (config = {}) {\n const propertiesGroup = super.getPropertiesGroup(config)\n propertiesGroup.group.classList.add('pl-3')\n propertiesGroup.name.classList.add('mb-3')\n propertiesGroup.container.classList.add('mb-4')\n return propertiesGroup\n }\n\n getTextareaControl (config) {\n const control = super.getTextareaControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableTextareaControl (control) {\n super.adaptForTableTextareaControl(control)\n control.container.classList.remove('form-group')\n }\n\n getInputControl (config) {\n const control = super.getInputControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n getInputRangeControl (config) {\n const control = super.getInputRangeControl(config)\n const { container, input, label } = control\n\n container.classList.add('form-group')\n input.classList.add('custom-range')\n input.classList.remove('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableInputControl (control, td) {\n super.adaptForTableInputControl(control, td)\n control.container.classList.remove('form-group')\n }\n\n getRadiosControl (config) {\n const control = super.getRadiosControl(config)\n const { container, fieldset, radios, labels, labelTexts, radioControls, description, messages } = control\n\n container.classList.add('form-group')\n\n radioControls.forEach((radioControl, index) => {\n radioControl.classList.add('form-check')\n radios[index].classList.add('form-check-input')\n labels[index].classList.add('form-check-label')\n\n if (config.inline) {\n radioControl.classList.add('form-check-inline')\n }\n\n fieldset.appendChild(radioControls[index])\n radioControl.appendChild(radios[index])\n radioControl.appendChild(labels[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return control\n }\n\n adaptForTableRadiosControl (control, td) {\n super.adaptForTableRadiosControl(control, td)\n control.container.classList.remove('form-group')\n control.fieldset.classList.remove('card')\n control.fieldset.style.marginBottom = '0'\n }\n\n getCheckboxesControl (config) {\n const control = super.getCheckboxesControl(config)\n const { checkboxes, labels, checkboxControls } = control\n\n checkboxControls.forEach((checkboxControl, index) => {\n checkboxControl.classList.add('form-group')\n checkboxControl.classList.add('form-check')\n checkboxes[index].classList.add('form-check-input')\n labels[index].classList.add('form-check-label')\n\n if (config.inline) {\n checkboxControl.classList.add('form-check-inline')\n }\n })\n\n return control\n }\n\n adaptForTableCheckboxesControl (control, td) {\n super.adaptForTableCheckboxesControl(control, td)\n control.container.classList.remove('form-group')\n control.fieldset.classList.remove('card')\n control.fieldset.classList.remove('mb-3')\n control.body.classList.remove('card-body')\n\n control.body.classList.remove('card-body')\n }\n\n getCheckboxControl (config) {\n const control = super.getCheckboxControl(config)\n const { container, formGroup, input, label, info, description, messages } = control\n container.classList.add('form-group')\n formGroup.classList.add('form-check')\n input.classList.add('form-check-input')\n label.classList.add('form-check-label')\n\n container.appendChild(formGroup)\n formGroup.appendChild(input)\n formGroup.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(description)\n container.appendChild(messages)\n return control\n }\n\n adaptForTableCheckboxControl (control, td) {\n super.adaptForTableCheckboxControl(control, td)\n control.container.classList.remove('form-group')\n control.formGroup.classList.remove('form-check')\n control.input.classList.remove('form-check-input')\n control.label.classList.remove('form-check-label')\n }\n\n getSelectControl (config) {\n const control = super.getSelectControl(config)\n const { container, input } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n return control\n }\n\n adaptForTableSelectControl (control, td) {\n super.adaptForTableSelectControl(control, td)\n control.container.classList.remove('form-group')\n }\n\n adaptForTableMultipleControl (control, td) {\n super.adaptForTableMultipleControl(control, td)\n control.container.classList.remove('mb-3')\n }\n\n getAlert (config) {\n const html = super.getAlert(config)\n html.classList.add('alert')\n html.classList.add('alert-danger')\n return html\n }\n\n getErrorFeedback (config) {\n const html = super.getErrorFeedback(config)\n html.classList.add('text-danger')\n html.classList.add('form-text')\n html.classList.add('d-block')\n return html\n }\n\n getWarningFeedback (config) {\n const html = super.getWarningFeedback(config)\n html.classList.add('text-warning')\n html.classList.add('form-text')\n html.classList.add('d-block')\n return html\n }\n\n getColumnClass (size, cols) {\n return 'col-' + size + '-' + cols\n }\n\n getRow () {\n const row = super.getRow()\n row.classList.add('row')\n return row\n }\n\n getCol (xs, sm, md, lg, offsetMd) {\n const col = super.getCol(xs, md, offsetMd)\n col.classList.add('col-' + xs)\n col.classList.add('col-sm' + sm)\n col.classList.add('col-md-' + md)\n col.classList.add('col-lg-' + lg)\n\n if (offsetMd) {\n col.classList.add('offset-md-' + offsetMd)\n }\n\n return col\n }\n\n getTabList (config) {\n const tabList = super.getTabList()\n tabList.classList.add('nav')\n\n if (config.variant === 'horizontal') {\n tabList.classList.add('nav-tabs')\n } else {\n tabList.classList.add('nav-pills')\n tabList.classList.add('flex-column')\n }\n\n return tabList\n }\n\n getTab (config) {\n const tab = super.getTab(config)\n tab.list.classList.add('nav-item')\n tab.list.classList.add('mb-3')\n tab.text.classList.add('ml-3')\n tab.link.classList.add('nav-link')\n tab.link.setAttribute('data-toggle', 'tab')\n\n if (config.active) {\n tab.link.classList.add('active')\n }\n\n return tab\n }\n\n /**\n * A simple table layout\n */\n getTable () {\n const container = document.createElement('div')\n const table = document.createElement('table')\n const thead = document.createElement('thead')\n const tbody = document.createElement('tbody')\n\n container.classList.add('table-responsive')\n table.classList.add('table')\n table.classList.add('table-borderless')\n table.classList.add('table-sm')\n table.classList.add('align-middle')\n\n table.appendChild(thead)\n table.appendChild(tbody)\n container.appendChild(table)\n\n return { container, table, thead, tbody }\n }\n\n setTabPaneAttributes (element, active, id) {\n super.setTabPaneAttributes(element, active, id)\n element.classList.add('tab-pane')\n\n if (active) {\n element.classList.add('active')\n }\n }\n\n infoAsModal (info, id, config = {}) {\n const modal = document.createElement('div')\n const modalDialog = document.createElement('div')\n const modalContent = document.createElement('div')\n const modalHeader = document.createElement('div')\n const modalTitle = document.createElement('div')\n const modalBody = document.createElement('div')\n const closeBtn = this.getButton({\n content: 'Close',\n icon: 'close'\n })\n const modalId = id + '-modal'\n\n modal.setAttribute('role', 'dialog')\n modal.setAttribute('aria-modal', 'true')\n modal.setAttribute('id', modalId)\n closeBtn.setAttribute('data-dismiss', 'modal')\n closeBtn.setAttribute('always-enabled', '')\n info.info.setAttribute('data-toggle', 'modal')\n info.info.setAttribute('data-target', '#' + modalId)\n info.container.classList.add('ml-1')\n modal.classList.add('modal')\n modal.classList.add('fade')\n modalDialog.classList.add('modal-dialog')\n modalContent.classList.add('modal-content')\n modalHeader.classList.add('modal-header')\n modalTitle.classList.add('modal-title')\n modalBody.classList.add('modal-body')\n closeBtn.classList.add('jedi-modal-close')\n closeBtn.classList.add('close')\n\n if (isString(config.title)) {\n modalTitle.innerHTML = config.title\n }\n\n if (isString(config.content)) {\n modalBody.innerHTML = config.content\n }\n\n info.container.appendChild(modal)\n modal.appendChild(modalDialog)\n modalDialog.appendChild(modalContent)\n modalContent.appendChild(modalHeader)\n modalHeader.appendChild(modalTitle)\n modalHeader.appendChild(closeBtn)\n modalContent.appendChild(modalBody)\n }\n\n visuallyHidden (element) {\n element.classList.add('sr-only')\n }\n\n visuallyVisible (element) {\n element.classList.remove('sr-only')\n }\n}\n\nexport default ThemeBootstrap4\n","import Theme from './theme.js'\nimport { isObject, isString } from '../helpers/utils.js'\n\n/**\n * Represents a ThemeBootstrap5 instance.\n * @extends Theme\n */\nclass ThemeBootstrap5 extends Theme {\n init () {\n this.useToggleEvents = false\n }\n\n getAddPropertyButton (config) {\n const btn = super.getAddPropertyButton(config)\n btn.classList.add('btn-primary')\n btn.classList.add('w-100')\n return btn\n }\n\n getCollapseToggle (config) {\n const toggle = super.getCollapseToggle(config)\n toggle.setAttribute('href', '#' + config.collapseId)\n toggle.setAttribute('data-bs-toggle', 'collapse')\n toggle.setAttribute('always-enabled', '')\n return toggle\n }\n\n getCollapse (config) {\n const collapse = super.getCollapse(config)\n collapse.classList.add('collapse')\n\n if (!config.startCollapsed) {\n collapse.classList.add('show')\n }\n\n return collapse\n }\n\n getJsonData (config) {\n const jsonData = super.getJsonData(config)\n jsonData.control.classList.add('mb-3')\n jsonData.input.classList.add('form-control')\n jsonData.saveBtn.classList.add('btn-primary')\n jsonData.saveBtn.classList.add('w-100')\n return jsonData\n }\n\n getFieldset () {\n const fieldset = document.createElement('fieldset')\n fieldset.setAttribute('role', 'group')\n fieldset.classList.add('card')\n fieldset.classList.add('mb-3')\n return fieldset\n }\n\n getLegend (config) {\n const superLegend = super.getLegend(config)\n const { legend } = superLegend\n legend.classList.add('card-header')\n legend.classList.add('d-flex')\n legend.classList.add('justify-content-between')\n legend.classList.add('align-items-center')\n legend.classList.add('py-2')\n return superLegend\n }\n\n getLabel (config) {\n const labelObj = super.getLabel(config)\n\n if (labelObj.icon.classList) {\n labelObj.icon.classList.add('me-1')\n }\n\n return labelObj\n }\n\n getCard () {\n const card = super.getCard()\n card.classList.add('card')\n card.classList.add('mb-3')\n return card\n }\n\n getCardHeader (config) {\n const html = super.getCardHeader(config)\n html.classList.add('card-header')\n html.classList.add('d-flex')\n html.classList.add('justify-content-end')\n html.classList.add('align-items-center')\n html.classList.add('py-1')\n return html\n }\n\n getCardBody () {\n const html = super.getCardBody()\n html.classList.add('card-body')\n html.classList.add('pb-0')\n return html\n }\n\n getControlSlot () {\n const controlSlot = super.getControlSlot()\n controlSlot.classList.add('mb-3')\n return controlSlot\n }\n\n getBtnGroup () {\n const html = super.getBtnGroup()\n html.classList.add('btn-group')\n return html\n }\n\n getButton (config) {\n const html = super.getButton(config)\n html.classList.add('btn')\n html.classList.add('btn-sm')\n return html\n }\n\n getDescription (config) {\n const description = super.getDescription(config)\n description.classList.add('text-muted')\n description.classList.add('mb-1')\n return description\n }\n\n getPropertiesGroup (config = {}) {\n const propertiesGroup = super.getPropertiesGroup(config)\n propertiesGroup.group.classList.add('ps-3')\n propertiesGroup.container.classList.add('mb-4')\n return propertiesGroup\n }\n\n getTextareaControl (config) {\n const control = super.getTextareaControl(config)\n const { container, input, label } = control\n container.classList.add('mb-3')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableTextareaControl (control) {\n super.adaptForTableTextareaControl(control)\n control.container.classList.remove('mb-3')\n }\n\n getInputControl (config) {\n const control = super.getInputControl(config)\n const { container, input, label } = control\n container.classList.add('mb-3')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n getInputRangeControl (config) {\n const control = super.getInputRangeControl(config)\n const { container, input, label } = control\n\n container.classList.add('mb-3')\n input.classList.add('form-range')\n input.classList.remove('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableInputControl (control, td) {\n super.adaptForTableInputControl(control, td)\n control.container.classList.remove('mb-3')\n }\n\n getRadiosControl (config) {\n const control = super.getRadiosControl(config)\n const { container, fieldset, radios, labels, labelTexts, radioControls, description, messages } = control\n\n container.classList.add('mb-3')\n\n radioControls.forEach((radioControl, index) => {\n radioControl.classList.add('form-check')\n radios[index].classList.add('form-check-input')\n labels[index].classList.add('form-check-label')\n\n if (config.inline) {\n radioControl.classList.add('form-check-inline')\n }\n\n fieldset.appendChild(radioControls[index])\n radioControl.appendChild(radios[index])\n radioControl.appendChild(labels[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return control\n }\n\n adaptForTableRadiosControl (control, td) {\n super.adaptForTableRadiosControl(control, td)\n control.container.classList.remove('mb-3')\n control.fieldset.classList.remove('card')\n control.fieldset.style.marginBottom = '0'\n }\n\n getCheckboxesControl (config) {\n const control = super.getCheckboxesControl(config)\n const { checkboxes, labels, checkboxControls } = control\n\n checkboxControls.forEach((checkboxControl, index) => {\n checkboxControl.classList.add('mb-3')\n checkboxControl.classList.add('form-check')\n checkboxes[index].classList.add('form-check-input')\n labels[index].classList.add('form-check-label')\n\n if (config.inline) {\n checkboxControl.classList.add('form-check-inline')\n }\n })\n\n return control\n }\n\n getCheckboxControl (config) {\n const control = super.getCheckboxControl(config)\n const { container, formGroup, input, label, info, description, messages } = control\n container.classList.add('mb-3')\n formGroup.classList.add('form-check')\n input.classList.add('form-check-input')\n label.classList.add('form-check-label')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n container.appendChild(formGroup)\n formGroup.appendChild(input)\n formGroup.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(description)\n container.appendChild(messages)\n return control\n }\n\n adaptForTableCheckboxControl (control, td) {\n super.adaptForTableCheckboxControl(control, td)\n control.container.classList.remove('mb-3')\n control.formGroup.classList.remove('form-check')\n }\n\n getSelectControl (config) {\n const control = super.getSelectControl(config)\n const { container, input } = control\n container.classList.add('mb-3')\n input.classList.add('form-select')\n return control\n }\n\n adaptForTableSelectControl (control, td) {\n super.adaptForTableSelectControl(control, td)\n control.container.classList.remove('mb-3')\n }\n\n adaptForTableMultipleControl (control, td) {\n super.adaptForTableMultipleControl(control, td)\n control.container.classList.remove('mb-3')\n }\n\n getAlert (config) {\n const html = super.getAlert(config)\n html.classList.add('alert')\n html.classList.add('alert-danger')\n return html\n }\n\n getErrorFeedback (config) {\n const html = super.getErrorFeedback(config)\n html.classList.add('text-danger')\n html.classList.add('d-block')\n html.classList.add('form-text')\n return html\n }\n\n getWarningFeedback (config) {\n const html = super.getWarningFeedback(config)\n html.classList.add('text-warning')\n html.classList.add('d-block')\n html.classList.add('form-text')\n return html\n }\n\n getRow () {\n const row = super.getRow()\n row.classList.add('row')\n return row\n }\n\n getCol (xs, sm, md, lg, offsetMd) {\n const col = super.getCol(xs, md, offsetMd)\n col.classList.add('col-' + xs)\n col.classList.add('col-sm' + sm)\n col.classList.add('col-md-' + md)\n col.classList.add('col-lg-' + lg)\n\n if (offsetMd) {\n col.classList.add('offset-md-' + offsetMd)\n }\n\n return col\n }\n\n getTabList (config) {\n const tabList = super.getTabList(config)\n tabList.classList.add('nav')\n\n if (config.variant === 'horizontal') {\n tabList.classList.add('nav-tabs')\n } else {\n tabList.classList.add('nav-pills')\n tabList.classList.add('flex-column')\n }\n\n return tabList\n }\n\n getTab (config) {\n const tab = super.getTab(config)\n tab.list.classList.add('nav-item')\n tab.list.classList.add('mb-3')\n\n tab.text.classList.add('ms-3')\n\n tab.link.classList.add('nav-link')\n tab.link.setAttribute('data-bs-toggle', 'tab')\n\n if (config.active) {\n tab.link.classList.add('active')\n }\n\n return tab\n }\n\n /**\n * A simple table layout\n */\n getTable () {\n const container = document.createElement('div')\n const table = document.createElement('table')\n const thead = document.createElement('thead')\n const tbody = document.createElement('tbody')\n\n container.classList.add('table-responsive')\n table.classList.add('table')\n table.classList.add('table-borderless')\n table.classList.add('table-sm')\n table.classList.add('align-middle')\n\n table.appendChild(thead)\n table.appendChild(tbody)\n container.appendChild(table)\n\n return { container, table, thead, tbody }\n }\n\n setTabPaneAttributes (element, active, id) {\n super.setTabPaneAttributes(element, active, id)\n element.classList.add('tab-pane')\n\n if (active) {\n element.classList.add('active')\n }\n }\n\n infoAsModal (info, id, config = {}) {\n const modal = document.createElement('div')\n const modalDialog = document.createElement('div')\n const modalContent = document.createElement('div')\n const modalHeader = document.createElement('div')\n const modalTitle = document.createElement('div')\n const modalBody = document.createElement('div')\n const closeBtn = this.getButton({\n content: 'Close',\n icon: 'close'\n })\n const modalId = id + '-modal'\n\n modal.setAttribute('role', 'dialog')\n modal.setAttribute('aria-modal', 'true')\n modal.setAttribute('id', modalId)\n closeBtn.setAttribute('data-bs-dismiss', 'modal')\n closeBtn.setAttribute('always-enabled', '')\n info.info.setAttribute('data-bs-toggle', 'modal')\n info.info.setAttribute('data-bs-target', '#' + modalId)\n info.container.classList.add('ms-1')\n modal.classList.add('modal')\n modal.classList.add('fade')\n modalDialog.classList.add('modal-dialog')\n modalContent.classList.add('modal-content')\n modalHeader.classList.add('modal-header')\n modalTitle.classList.add('modal-title')\n modalBody.classList.add('modal-body')\n closeBtn.classList.add('jedi-modal-close')\n\n if (isString(config.title)) {\n modalTitle.innerHTML = config.title\n }\n\n if (isString(config.content)) {\n modalBody.innerHTML = config.content\n }\n\n info.container.appendChild(modal)\n modal.appendChild(modalDialog)\n modalDialog.appendChild(modalContent)\n modalContent.appendChild(modalHeader)\n modalHeader.appendChild(modalTitle)\n modalHeader.appendChild(closeBtn)\n modalContent.appendChild(modalBody)\n }\n\n visuallyHidden (element) {\n element.classList.add('visually-hidden')\n }\n\n visuallyVisible (element) {\n element.classList.remove('visually-hidden')\n }\n}\n\nexport default ThemeBootstrap5\n","import Schema from './helpers/schema.js'\nimport Utils from './helpers/utils.js'\nimport SchemaGenerator from './schema-generator/schema-generator.js'\nimport Create from './jedison.js'\nimport RefParser from './ref-parser/ref-parser.js'\nimport Theme from './themes/theme.js'\nimport ThemeBootstrap3 from './themes/bootstrap3.js'\nimport ThemeBootstrap4 from './themes/bootstrap4.js'\nimport ThemeBootstrap5 from './themes/bootstrap5.js'\nimport EditorBoolean from './editors/boolean.js'\nimport EditorBooleanRadios from './editors/boolean-radios.js'\nimport EditorBooleanSelect from './editors/boolean-select.js'\nimport EditorBooleanCheckbox from './editors/boolean-checkbox.js'\nimport EditorString from './editors/string.js'\nimport EditorStringRadios from './editors/string-radios.js'\nimport EditorStringSelect from './editors/string-select.js'\nimport EditorStringTextarea from './editors/string-textarea.js'\nimport EditorStringAwesomplete from './editors/string-awesomplete.js'\nimport EditorStringInput from './editors/string-input.js'\nimport EditorNumberRange from './editors/number-range.js'\nimport EditorNumber from './editors/number.js'\nimport EditorNumberRadios from './editors/number-radios.js'\nimport EditorNumberSelect from './editors/number-select.js'\nimport EditorNumberInput from './editors/number-input.js'\nimport EditorObjectGrid from './editors/object-grid.js'\nimport EditorObjectNav from './editors/object-nav.js'\nimport EditorObject from './editors/object.js'\nimport EditorArrayChoices from './editors/array-choices.js'\nimport EditorArrayNav from './editors/array-nav.js'\nimport EditorArray from './editors/array.js'\nimport EditorMultiple from './editors/multiple.js'\nimport EditorIfThenElse from './editors/if-then-else.js'\nimport EditorNull from './editors/null.js'\n\nexport default {\n Schema,\n Utils,\n EditorBoolean,\n EditorBooleanRadios,\n EditorBooleanSelect,\n EditorBooleanCheckbox,\n EditorString,\n EditorStringRadios,\n EditorStringSelect,\n EditorStringTextarea,\n EditorStringAwesomplete,\n EditorStringInput,\n EditorNumberRange,\n EditorNumber,\n EditorNumberRadios,\n EditorNumberSelect,\n EditorNumberInput,\n EditorObjectGrid,\n EditorObjectNav,\n EditorObject,\n EditorArrayChoices,\n EditorArrayNav,\n EditorArray,\n EditorMultiple,\n EditorIfThenElse,\n EditorNull,\n Theme,\n ThemeBootstrap3,\n ThemeBootstrap4,\n ThemeBootstrap5,\n RefParser,\n Create,\n SchemaGenerator\n}\n"],"names":["type","index","maxLength","properties","allOf","minLength","anyOf","exclusiveMaximum","exclusiveMinimum","format","items","prefixItems","maxItems","maxProperties","minimum","minItems","minProperties","multipleOf","not","oneOf","pattern","patternProperties","required","maximum","uniqueItems","seen","additionalProperties","contains","dependentRequired","dependentSchemas","unevaluatedProperties","initiator","value","property","th","EditorBooleanRadios","EditorNumberImask","EditorNumberRadio","Create"],"mappings":"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"}
1
+ {"version":3,"file":"jedison.js","sources":["../../src/helpers/utils.js","../../src/helpers/schema.js","../../src/schema-generator/schema-generator.js","../../src/validation/constrains/allOf.js","../../src/validation/constrains/minLength.js","../../src/validation/constrains/anyOf.js","../../src/validation/constrains/enum.js","../../src/validation/constrains/exclusiveMaximum.js","../../src/validation/constrains/exclusiveMinimum.js","../../src/validation/constrains/format.js","../../src/validation/constrains/items.js","../../src/validation/constrains/maxItems.js","../../src/validation/constrains/maxLength.js","../../src/validation/constrains/maxProperties.js","../../src/validation/constrains/minimum.js","../../src/validation/constrains/minItems.js","../../src/validation/constrains/minProperties.js","../../src/validation/constrains/multipleOf.js","../../src/validation/constrains/not.js","../../src/validation/constrains/oneOf.js","../../src/validation/constrains/pattern.js","../../src/validation/constrains/patternProperties.js","../../src/validation/constrains/properties.js","../../src/validation/constrains/required.js","../../src/validation/constrains/type.js","../../src/validation/constrains/maximum.js","../../src/validation/constrains/uniqueItems.js","../../src/validation/constrains/additionalProperties.js","../../src/validation/drafts/draft-04.js","../../src/validation/constrains/const.js","../../src/validation/constrains/contains.js","../../src/validation/constrains/dependentRequired.js","../../src/validation/constrains/dependentSchemas.js","../../src/validation/constrains/if-then-else.js","../../src/validation/constrains/prefixItems.js","../../src/validation/drafts/draft-06.js","../../src/validation/drafts/draft-07.js","../../src/validation/constrains/unevaluatedProperties.js","../../src/validation/drafts/draft-2019-09.js","../../src/validation/constrains/propertyNames.js","../../src/validation/drafts/draft-2020-12.js","../../src/validation/validator.js","../../src/event-emitter.js","../../src/instances/instance.js","../../src/editors/editor.js","../../src/editors/if-then-else.js","../../src/instances/if-then-else.js","../../src/instances/multiple.js","../../src/instances/boolean.js","../../src/instances/object.js","../../src/instances/array.js","../../src/instances/string.js","../../src/instances/number.js","../../src/instances/null.js","../../src/themes/icons/icons.js","../../src/editors/boolean.js","../../src/editors/boolean-radios.js","../../src/editors/boolean-select.js","../../src/editors/boolean-checkbox.js","../../src/editors/string.js","../../src/editors/string-radios.js","../../src/editors/string-select.js","../../src/editors/string-textarea.js","../../src/editors/string-awesomplete.js","../../src/editors/string-emoji-button.js","../../src/editors/string-input.js","../../src/editors/number.js","../../src/editors/number-radios.js","../../src/editors/number-select.js","../../src/editors/number-input.js","../../src/editors/number-input-nullable.js","../../src/editors/object.js","../../src/editors/object-grid.js","../../src/editors/object-nav.js","../../src/editors/array.js","../../src/editors/array-table.js","../../src/editors/array-table-object.js","../../src/editors/array-choices.js","../../src/editors/array-nav.js","../../src/editors/multiple.js","../../src/editors/null.js","../../src/editors/string-simplemde.js","../../src/editors/string-quill.js","../../src/editors/string-jodit.js","../../src/editors/string-flatpickr.js","../../src/editors/string-imask.js","../../src/editors/number-imask.js","../../src/editors/number-raty.js","../../src/editors/array-checkboxes.js","../../src/editors/number-range.js","../../src/ui-resolver.js","../../src/i18n/default-translations.js","../../src/i18n/translations.js","../../src/i18n/translator.js","../../src/json-walker.js","../../src/jedison.js","../../src/ref-parser/ref-parser.js","../../src/themes/theme.js","../../src/themes/bootstrap3.js","../../src/themes/bootstrap4.js","../../src/themes/bootstrap5.js","../../src/index.js"],"sourcesContent":["/**\n * Utils.\n * @module utils\n */\n\n/**\n * Returns a clone of a thing\n * @param {*} thing - The thing to be cloned\n * @return {*} The clone of the thing\n */\nexport function clone (thing) {\n if (typeof thing === 'undefined') {\n return undefined\n }\n\n return JSON.parse(JSON.stringify(thing))\n}\n\n/**\n * Returns escaped regexp\n * @param {string} string - The string\n * @return {string} Escaped regexp\n */\nexport function escapeRegExp (string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&') // $& means the whole matched string\n}\n\n/**\n * Multiple search and replace\n * @param {string} str - The string\n * @param {string} find - The part to be replaced\n * @param {string} replace - The replacement\n * @return {void}\n */\nexport function replaceAll (str, find, replace) {\n return str.replace(new RegExp(escapeRegExp(find), 'g'), replace)\n}\n\n/**\n * Formats a json path to be used as an html attribute value\n * @param {string} path - The json path\n * @return {string}\n */\nexport function pathToAttribute (path) {\n return replaceAll(replaceAll(path, '#', 'root'), '/', '-')\n}\n\n/**\n * Returns true if a given object has a given property\n * @param {object} obj - The object\n * @param {string} prop - The property\n * @return {boolean}\n */\nexport function hasOwn (obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop)\n}\n\n/**\n * Sort object properties\n * @param {object} obj - The object\n * @return {object}\n */\nexport function sortObject (obj) {\n return Object.keys(obj).sort().reduce((result, key) => {\n result[key] = obj[key]\n return result\n }, {})\n}\n\n/**\n * Returns true if the two values passed are equal\n * @param {*} a - Value A\n * @param {*} b - Value B\n * @return {boolean}\n */\nexport function equal (a, b) {\n if (isObject(a) && isObject(b)) {\n a = sortObject(a)\n b = sortObject(b)\n }\n return JSON.stringify(a) === JSON.stringify(b)\n}\n\n/**\n * Returns true if the two values passed are different\n * @param {*} a - Value A\n * @param {*} b - Value B\n * @return {boolean}\n */\nexport function different (a, b) {\n return !equal(a, b)\n}\n\n/**\n * Returns true if the value passed is null\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isNull (value) {\n return value === null\n}\n\n/**\n * Returns true if the value is defined\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isSet (value) {\n return typeof value !== 'undefined'\n}\n\n/**\n * Returns true if the value is undefined\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function notSet (value) {\n return typeof value === 'undefined'\n}\n\n/**\n * Returns true if the value passed is a number\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isNumber (value) {\n return typeof value === 'number'\n}\n\n/**\n * Returns true if the value passed is an integer\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isInteger (value) {\n return isNumber(value) && value === Math.floor(value)\n}\n\n/**\n * Returns true if the value passed is a string\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isString (value) {\n return typeof value === 'string'\n}\n\n/**\n * Returns true if the value passed is a boolean\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isBoolean (value) {\n return typeof value === 'boolean'\n}\n\n/**\n * Returns true if the value passed is an array\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isArray (value) {\n return Array.isArray(value)\n}\n\n/**\n * Returns true if the value passed is an object\n * @param {*} value - The value\n * @return {boolean}\n */\nexport function isObject (value) {\n return !isNull(value) && !isArray(value) && typeof value === 'object'\n}\n\n/**\n * Returns the type of a value\n * @param {*} value - The value\n * @return {string} The type of the value\n */\nexport function getType (value) {\n let type = 'any'\n\n if (isNumber(value)) {\n type = isInteger(value) ? 'integer' : 'number'\n } else if (isString(value)) {\n type = 'string'\n } else if (isBoolean(value)) {\n type = 'boolean'\n } else if (isArray(value)) {\n type = 'array'\n } else if (isNull(value)) {\n type = 'null'\n } else if (isObject(value)) {\n type = 'object'\n }\n\n return type\n}\n\n/**\n * Merges objects\n * @param {object} target - The target object\n * @param {object[]} sources - Objects to be merged into the target object\n * @return {object} The merged object\n */\nexport function mergeDeep (target, ...sources) {\n if (!sources.length) return target\n const source = sources.shift()\n\n if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, {\n [key]: {}\n })\n }\n mergeDeep(target[key], source[key])\n } else {\n Object.assign(target, {\n [key]: source[key]\n })\n }\n })\n }\n return mergeDeep(target, ...sources)\n}\n\nexport function combineDeep (target, ...sources) {\n if (!sources.length) return target\n const source = sources.shift()\n\n if (Array.isArray(target) && Array.isArray(source)) {\n // Concatenate arrays instead of replacing them\n target.push(...source)\n } else if (isObject(target) && isObject(source)) {\n Object.keys(source).forEach((key) => {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, {\n [key]: {}\n })\n }\n combineDeep(target[key], source[key])\n } else if (Array.isArray(source[key])) {\n // Handle array merging here\n if (!target[key]) {\n target[key] = []\n }\n target[key].push(...source[key])\n } else {\n Object.assign(target, {\n [key]: source[key]\n })\n }\n })\n }\n\n return combineDeep(target, ...sources)\n}\n\n/**\n * Merges objects but only the properties that exist in both objects\n * if they are the same type of value.\n * Handles nested objects recursively.\n * @param {object} obj1 - The target object\n * @param {object} obj2 - Object whose properties are the overrides\n * @return {object} The overwritten object\n */\nexport const overwriteExistingProperties = (obj1, obj2) => {\n Object.keys(obj2).forEach((key) => {\n if (key in obj1) {\n if (\n isSet(obj1[key]) &&\n isSet(obj2[key]) && (\n (isObject(obj1[key]) && isObject(obj2[key])) ||\n (isArray(obj1[key]) && isArray(obj2[key])) ||\n (isString(obj1[key]) && isString(obj2[key])) ||\n (isNumber(obj1[key]) && isNumber(obj2[key])) ||\n (isBoolean(obj1[key]) && isBoolean(obj2[key])) ||\n (isNull(obj1[key]) && isNull(obj2[key]))\n )\n ) {\n if (isObject(obj1[key]) && isObject(obj2[key])) {\n overwriteExistingProperties(obj1[key], obj2[key])\n } else {\n obj1[key] = obj2[key]\n }\n }\n }\n })\n\n return obj1\n}\n\n/**\n * Get some value by traversing the data using JSON path\n * @param {object} data - The data source\n * @param {string} path - JSON path\n * @return {*}\n */\nexport function getValueByJSONPath (data, path) {\n const keys = path.split('.') // Split the path into individual keys\n\n let value = data\n for (const key of keys) {\n if (Array.isArray(value) && /^\\d+$/.test(key)) {\n const index = parseInt(key)\n if (index >= 0 && index < value.length) {\n value = value[index]\n } else {\n return undefined // Index is out of bounds, return undefined\n }\n } else if (hasOwn(value, key)) {\n value = value[key]\n } else {\n return undefined // Key doesn't exist, return undefined\n }\n }\n\n return value\n}\n\n/**\n * Compiles a template by search and replace\n * @param {string} template - The template string\n * @param {object} data - Where template data lives\n * @return {string}\n */\nexport function compileTemplate (template, data) {\n return template.replace(/{{(.*?)}}/g, (match) => {\n match = match.replace(/\\s/g, '')\n const path = match.split(/{{|}}/)[1]\n return getValueByJSONPath(data, path)\n })\n}\n\nexport function clamp (number, min, max) {\n return Math.max(min, Math.min(number, max))\n}\n\nexport function removeDuplicatesFromArray (arr) {\n const uniqueObjects = []\n const uniqueValues = new Set()\n\n for (const obj of arr) {\n const objString = JSON.stringify(obj)\n if (!uniqueValues.has(objString)) {\n uniqueValues.add(objString)\n uniqueObjects.push(obj)\n }\n }\n\n return uniqueObjects\n}\n\nexport function generateRandomID (maxLength) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let randomID = ''\n for (let i = 0; i < maxLength; i++) {\n const randomIndex = Math.floor(Math.random() * chars.length)\n randomID += chars[randomIndex]\n }\n return randomID\n}\n\nexport default {\n clone,\n escapeRegExp,\n replaceAll,\n pathToAttribute,\n hasOwn,\n sortObject,\n equal,\n different,\n isNull,\n isSet,\n notSet,\n isNumber,\n isInteger,\n isString,\n isBoolean,\n isArray,\n isObject,\n getType,\n mergeDeep,\n combineDeep,\n overwriteExistingProperties,\n getValueByJSONPath,\n compileTemplate,\n clamp,\n removeDuplicatesFromArray,\n generateRandomID\n}\n","import { isString, isArray, isNumber, isInteger, isBoolean, isObject, isSet, clone } from './utils.js'\n\nexport function getSchemaX (schema, keyword) {\n const key = 'x-' + keyword\n return schema[key]\n}\n\nexport function getSchemaSchema (schema) {\n return isString(schema.$schema) ? clone(schema.$schema) : undefined\n}\n\nexport function getSchemaAdditionalProperties (schema) {\n return isObject(schema.additionalProperties) || isBoolean(schema.additionalProperties) ? clone(schema.additionalProperties) : undefined\n}\n\nexport function getSchemaPropertyNames (schema) {\n return isObject(schema.propertyNames) || isBoolean(schema.propertyNames) ? clone(schema.propertyNames) : undefined\n}\n\nexport function getSchemaAllOf (schema) {\n return isArray(schema.allOf) ? clone(schema.allOf) : undefined\n}\n\nexport function getSchemaAnyOf (schema) {\n return isArray(schema.anyOf) ? clone(schema.anyOf) : undefined\n}\n\nexport function getSchemaConst (schema) {\n return clone(schema.const)\n}\n\nexport function getSchemaContains (schema) {\n return (isObject(schema.contains) || isBoolean(schema.contains)) ? clone(schema.contains) : undefined\n}\n\nexport function getSchemaDefault (schema) {\n return clone(schema.default)\n}\n\nexport function getSchemaDependentRequired (schema) {\n return isObject(schema.dependentRequired) ? clone(schema.dependentRequired) : undefined\n}\n\nexport function getSchemaDependentSchemas (schema) {\n return isObject(schema.dependentSchemas) ? clone(schema.dependentSchemas) : undefined\n}\n\nexport function getSchemaDescription (schema) {\n return isString(schema.description) ? clone(schema.description) : undefined\n}\n\nexport function getSchemaElse (schema) {\n return (isObject(schema.else) || isBoolean(schema.else)) ? clone(schema.else) : undefined\n}\n\nexport function getSchemaEnum (schema) {\n if (isArray(schema.enum) && schema.enum.length > 0) {\n return clone(schema.enum)\n }\n\n return undefined\n}\n\nexport function getSchemaExclusiveMaximum (schema) {\n return isNumber(schema.exclusiveMaximum) ? clone(schema.exclusiveMaximum) : undefined\n}\n\nexport function getSchemaExclusiveMinimum (schema) {\n return isNumber(schema.exclusiveMinimum) ? schema.exclusiveMinimum : undefined\n}\n\nexport function getSchemaFormat (schema) {\n return isString(schema.format) ? clone(schema.format) : undefined\n}\n\nexport function getSchemaIf (schema) {\n if (isObject(schema.if)) {\n return clone(schema.if)\n }\n\n if (isBoolean(schema.if)) {\n return clone(schema.if)\n }\n\n return undefined\n}\n\nexport function getSchemaItems (schema) {\n return isObject(schema.items) || isBoolean(schema.items) ? clone(schema.items) : undefined\n}\n\nexport function getSchemaMaximum (schema) {\n return isNumber(schema.maximum) ? clone(schema.maximum) : undefined\n}\n\nexport function getSchemaMaxContains (schema) {\n if (isInteger(schema.maxContains) && schema.maxContains >= 0) {\n return clone(schema.maxContains)\n }\n\n return undefined\n}\n\nexport function getSchemaMaxItems (schema) {\n if (isInteger(schema.maxItems) && schema.maxItems >= 0) {\n return clone(schema.maxItems)\n }\n\n return undefined\n}\n\nexport function getSchemaMaxLength (schema) {\n if (isInteger(schema.maxLength) && schema.maxLength >= 0) {\n return clone(schema.maxLength)\n }\n\n return undefined\n}\n\nexport function getSchemaMaxProperties (schema) {\n if (isInteger(schema.maxProperties)) {\n return clone(schema.maxProperties)\n }\n\n return undefined\n}\n\nexport function getSchemaMinimum (schema) {\n return isNumber(schema.minimum) ? clone(schema.minimum) : undefined\n}\n\nexport function getSchemaMinContains (schema) {\n if (isInteger(schema.minContains) && schema.minContains >= 0) {\n return clone(schema.minContains)\n }\n\n return undefined\n}\n\nexport function getSchemaMinItems (schema) {\n if (isInteger(schema.minItems) && schema.minItems >= 0) {\n return clone(schema.minItems)\n }\n\n return undefined\n}\n\nexport function getSchemaMinLength (schema) {\n if (isInteger(schema.minLength) && schema.minLength >= 0) {\n return clone(schema.minLength)\n }\n\n return undefined\n}\n\nexport function getSchemaMinProperties (schema) {\n if (isInteger(schema.minProperties) && schema.minProperties >= 0) {\n return clone(schema.minProperties)\n }\n\n return undefined\n}\n\nexport function getSchemaMultipleOf (schema) {\n if (isNumber(schema.multipleOf) && schema.multipleOf >= 0) {\n return clone(schema.multipleOf)\n }\n\n return undefined\n}\n\nexport function getSchemaNot (schema) {\n return (isObject(schema.not) || isBoolean(schema.not)) ? clone(schema.not) : undefined\n}\n\nexport function getSchemaXOption (schema, option) {\n const xOption = 'x-' + option\n\n if (isSet(schema[xOption])) {\n return schema[xOption]\n }\n\n return (schema['x-options'] && isSet(schema['x-options'][option])) ? schema['x-options'][option] : undefined\n}\n\nexport function getSchemaPattern (schema) {\n return isString(schema.pattern) ? clone(schema.pattern) : undefined\n}\n\nexport function getSchemaPatternProperties (schema) {\n return isObject(schema.patternProperties) ? clone(schema.patternProperties) : undefined\n}\n\nexport function getSchemaPrefixItems (schema) {\n return isArray(schema.prefixItems) ? clone(schema.prefixItems) : undefined\n}\n\nexport function getSchemaProperties (schema) {\n return isObject(schema.properties) ? clone(schema.properties) : undefined\n}\n\nexport function getSchemaReadOnly (schema) {\n return isBoolean(schema.readOnly) ? clone(schema.readOnly) : undefined\n}\n\nexport function getSchemaRequired (schema) {\n return isArray(schema.required) ? [...new Set(schema.required)] : undefined\n}\n\nexport function getSchemaThen (schema) {\n return (isObject(schema.then) || isBoolean(schema.then)) ? clone(schema.then) : undefined\n}\n\nexport function getSchemaTitle (schema) {\n return isString(schema.title) ? clone(schema.title) : undefined\n}\n\nexport function getSchemaType (schema) {\n if (isString(schema.type) || isArray(schema.type)) {\n return clone(schema.type)\n }\n\n return undefined\n}\n\nexport function getSchemaOneOf (schema) {\n return isArray(schema.oneOf) ? clone(schema.oneOf) : undefined\n}\n\nexport function getSchemaUnevaluatedProperties (schema) {\n return isBoolean(schema.unevaluatedProperties) ? clone(schema.unevaluatedProperties) : undefined\n}\n\nexport function getSchemaUniqueItems (schema) {\n return isBoolean(schema.uniqueItems) ? clone(schema.uniqueItems) : undefined\n}\n\nexport default {\n getSchemaX,\n getSchemaSchema,\n getSchemaAdditionalProperties,\n getSchemaPropertyNames,\n getSchemaAllOf,\n getSchemaAnyOf,\n getSchemaConst,\n getSchemaContains,\n getSchemaDefault,\n getSchemaDependentRequired,\n getSchemaDependentSchemas,\n getSchemaDescription,\n getSchemaElse,\n getSchemaEnum,\n getSchemaExclusiveMaximum,\n getSchemaExclusiveMinimum,\n getSchemaFormat,\n getSchemaIf,\n getSchemaItems,\n getSchemaMaximum,\n getSchemaMaxContains,\n getSchemaMaxItems,\n getSchemaMaxLength,\n getSchemaMaxProperties,\n getSchemaMinimum,\n getSchemaMinContains,\n getSchemaMinItems,\n getSchemaMinLength,\n getSchemaMinProperties,\n getSchemaMultipleOf,\n getSchemaNot,\n getSchemaXOption,\n getSchemaPattern,\n getSchemaPatternProperties,\n getSchemaPrefixItems,\n getSchemaProperties,\n getSchemaReadOnly,\n getSchemaRequired,\n getSchemaThen,\n getSchemaTitle,\n getSchemaType,\n getSchemaOneOf,\n getSchemaUnevaluatedProperties,\n getSchemaUniqueItems\n}\n","class SchemaGenerator {\n static inferType (value) {\n if (Array.isArray(value)) return 'array'\n if (value === null) return 'null'\n return typeof value\n }\n\n static generate (obj) {\n if (typeof obj !== 'object' || obj === null) {\n return { type: this.inferType(obj) }\n }\n\n if (Array.isArray(obj)) {\n const itemSchemas = obj.map(item => this.generate(item))\n return {\n type: 'array',\n items: itemSchemas.length ? itemSchemas[0] : {}\n }\n }\n\n const properties = {}\n for (const key in obj) {\n properties[key] = this.generate(obj[key])\n }\n\n return {\n type: 'object',\n properties: properties\n }\n }\n}\n\nexport default SchemaGenerator\n","import { isSet, removeDuplicatesFromArray } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaAllOf } from '../../helpers/schema.js'\n\nexport function allOf (context) {\n// export function allOf (context) {\n let errors = []\n const allOf = getSchemaAllOf(context.schema)\n\n if (isSet(allOf)) {\n allOf.forEach((schema) => {\n const subSchemaEditor = new Jedison({ refParser: context.validator.refParser, schema, data: context.value, rootName: context.key })\n const subSchemaErrors = subSchemaEditor.getErrors()\n subSchemaEditor.destroy()\n\n subSchemaErrors.forEach((error) => {\n error.path = context.path\n })\n\n errors.push(...subSchemaErrors)\n })\n\n errors = removeDuplicatesFromArray(errors)\n }\n\n return errors\n}\n","import { compileTemplate, isSet, isString } from '../../helpers/utils.js'\nimport { getSchemaMinLength } from '../../helpers/schema.js'\n\nexport function minLength (context) {\n const errors = []\n const minLength = getSchemaMinLength(context.schema)\n\n if (isString(context.value) && isSet(minLength)) {\n context.value = context.value.replace(/[\\uDCA9]/g, '') // remove Unicode code points\n const invalid = (context.value.length < minLength)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minLength',\n messages: [\n compileTemplate(context.translator.translate('errorMinLength'), {\n minLength: minLength\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import Jedison from '../../jedison.js'\nimport { isSet } from '../../helpers/utils.js'\nimport { getSchemaAnyOf } from '../../helpers/schema.js'\n\nexport function anyOf (context) {\n const errors = []\n const anyOf = getSchemaAnyOf(context.schema)\n\n if (isSet(anyOf)) {\n let valid = false\n\n anyOf.forEach((schema) => {\n const anyOfEditor = new Jedison({ refParser: context.validator.refParser, schema: schema, data: context.value })\n const anyOfErrors = anyOfEditor.getErrors()\n anyOfEditor.destroy()\n\n if (anyOfErrors.length === 0) {\n valid = true\n }\n })\n\n if (!valid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'anyOf',\n messages: [\n context.translator.translate('errorAnyOf')\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet } from '../../helpers/utils.js'\nimport { getSchemaEnum } from '../../helpers/schema.js'\n\nexport function _enum (context) {\n const errors = []\n const schemaEnum = getSchemaEnum(context.schema)\n\n if (isSet(schemaEnum)) {\n const invalid = !schemaEnum.some(e => JSON.stringify(context.value) === JSON.stringify(e))\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'enum',\n messages: [\n compileTemplate(context.translator.translate('errorEnum'), {\n enum: JSON.stringify(schemaEnum)\n })\n ]\n })\n }\n }\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaExclusiveMaximum } from '../../helpers/schema.js'\n\nexport function exclusiveMaximum (context) {\n const errors = []\n const exclusiveMaximum = getSchemaExclusiveMaximum(context.schema)\n\n if (isNumber(context.value) && isSet(exclusiveMaximum)) {\n const invalid = (context.value >= exclusiveMaximum)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'exclusiveMaximum',\n messages: [\n compileTemplate(context.translator.translate('errorExclusiveMaximum'), {\n exclusiveMaximum: exclusiveMaximum\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaExclusiveMinimum } from '../../helpers/schema.js'\n\nexport function exclusiveMinimum (context) {\n const errors = []\n const exclusiveMinimum = getSchemaExclusiveMinimum(context.schema)\n\n if (isNumber(context.value) && isSet(exclusiveMinimum)) {\n const invalid = (context.value <= exclusiveMinimum)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'exclusiveMinimum',\n messages: [\n compileTemplate(context.translator.translate('errorExclusiveMinimum'), {\n exclusiveMinimum: exclusiveMinimum\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet, isString } from '../../helpers/utils.js'\nimport { getSchemaFormat, getSchemaXOption } from '../../helpers/schema.js'\n\nexport function format (context) {\n const errors = []\n const format = getSchemaFormat(context.schema)\n let assertFormat = context.validator.assertFormat\n\n if (getSchemaXOption(context.schema, 'assertFormat')) {\n assertFormat = context.schema.options.assertFormat\n }\n\n if (isSet(format) && isString(context.value) && assertFormat) {\n let regexp\n\n if (format === 'email') {\n regexp = new RegExp(/^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/i)\n }\n\n if (format === 'url') {\n regexp = new RegExp(/^(?:https?|ftp):\\/\\/(?:[^\\s:@]+(?::[^\\s:@]*)?@)?(?:(?:[^\\s:@]+(?::[^\\s:@]*)?@)?(?:[^\\s:@](?:[^\\s:@-]*[^\\s:@])?\\.?)+[a-zA-Z]{2,}|(?:\\d{1,3}\\.){3}\\d{1,3})(?::\\d{2,5})?(?:\\/[^\\s]*)?$/i)\n }\n\n if (format === 'uuid') {\n regexp = new RegExp(/^(?:urn:uuid:)?[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}$/i)\n }\n\n const invalid = isSet(regexp) && !regexp.test(context.value)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'format',\n messages: [\n compileTemplate(context.translator.translate('errorFormat'), { format: format })\n ]\n })\n }\n }\n\n return errors\n}\n","import { isArray, isSet } from '../../helpers/utils.js'\nimport { getSchemaItems, getSchemaPrefixItems } from '../../helpers/schema.js'\n\nexport function items (context) {\n const errors = []\n const items = getSchemaItems(context.schema)\n const prefixItems = getSchemaPrefixItems(context.schema)\n\n if (isArray(context.value) && isSet(items)) {\n const prefixItemsSchemasCount = isSet(prefixItems) ? prefixItems.length : 0\n\n if (items === false && context.value.length > 0 && context.value.length > prefixItemsSchemasCount) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'items',\n messages: [context.translator.translate('errorItems')]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isArray, isSet } from '../../helpers/utils.js'\nimport { getSchemaMaxItems } from '../../helpers/schema.js'\n\nexport function maxItems (context) {\n const errors = []\n const maxItems = getSchemaMaxItems(context.schema)\n\n if (isArray(context.value) && isSet(maxItems)) {\n const invalid = (context.value.length > maxItems)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maxItems',\n messages: [\n compileTemplate(context.translator.translate('errorMaxItems'), {\n maxItems: maxItems\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet, isString } from '../../helpers/utils.js'\nimport { getSchemaMaxLength } from '../../helpers/schema.js'\n\nexport function maxLength (context) {\n const errors = []\n const maxLength = getSchemaMaxLength(context.schema)\n\n if (isString(context.value) && isSet(maxLength)) {\n context.value = context.value.replace(/[\\uDCA9]/g, '') // remove Unicode code points\n const invalid = (context.value.length > maxLength)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maxLength',\n messages: [\n compileTemplate(context.translator.translate('errorMaxLength'), {\n maxLength: maxLength\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaMaxProperties } from '../../helpers/schema.js'\n\nexport function maxProperties (context) {\n const errors = []\n const maxProperties = getSchemaMaxProperties(context.schema)\n\n if (isObject(context.value) && isSet(maxProperties)) {\n const propertiesCount = Object.keys(context.value).length\n const invalid = (propertiesCount > maxProperties)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maxProperties',\n messages: [\n compileTemplate(context.translator.translate('errorMaxProperties'), {\n maxProperties: maxProperties\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaMinimum } from '../../helpers/schema.js'\n\nexport function minimum (context) {\n const errors = []\n const minimum = getSchemaMinimum(context.schema)\n\n if (isNumber(context.value) && isSet(minimum)) {\n const invalid = (context.value < minimum)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minimum',\n messages: [\n compileTemplate(context.translator.translate('errorMinimum'), {\n minimum: minimum\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isArray, isSet } from '../../helpers/utils.js'\nimport { getSchemaMinItems } from '../../helpers/schema.js'\n\nexport function minItems (context) {\n const errors = []\n const minItems = getSchemaMinItems(context.schema)\n\n if (isArray(context.value) && isSet(minItems)) {\n const invalid = (context.value.length < minItems)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minItems',\n messages: [\n compileTemplate(context.translator.translate('errorMinItems'), {\n minItems: minItems\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaMinProperties } from '../../helpers/schema.js'\n\nexport function minProperties (context) {\n const errors = []\n const minProperties = getSchemaMinProperties(context.schema)\n\n if (isObject(context.value) && isSet(minProperties)) {\n const propertiesCount = Object.keys(context.value).length\n const invalid = (propertiesCount < minProperties)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minProperties',\n messages: [\n compileTemplate(context.translator.translate('errorMinProperties'), {\n minProperties: minProperties\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaMultipleOf } from '../../helpers/schema.js'\n\nexport function multipleOf (context) {\n const errors = []\n const multipleOf = getSchemaMultipleOf(context.schema)\n\n if (isNumber(context.value) && isSet(multipleOf)) {\n if (context.value === 0) {\n return errors\n }\n\n const isMultipleOf = (context.value / multipleOf === Math.floor(context.value / multipleOf))\n const invalid = (!isMultipleOf || context.value.toString().includes('e'))\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'multipleOf',\n messages: [\n compileTemplate(context.translator.translate('errorMultipleOf'), {\n multipleOf: multipleOf\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet } from '../../helpers/utils.js'\nimport { getSchemaNot } from '../../helpers/schema.js'\n\nimport Jedison from '../../jedison.js'\n\nexport function not (context) {\n const errors = []\n const not = getSchemaNot(context.schema)\n\n if (isSet(not)) {\n const notEditor = new Jedison({ refParser: context.validator.refParser, schema: not, data: context.value })\n const notErrors = notEditor.getErrors()\n notEditor.destroy()\n\n const invalid = notErrors.length === 0\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'not',\n messages: [\n compileTemplate(context.translator.translate('errorNot'))\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaOneOf } from '../../helpers/schema.js'\n\nexport function oneOf (context) {\n const errors = []\n const oneOf = getSchemaOneOf(context.schema)\n\n if (isSet(oneOf)) {\n let counter = 0\n\n oneOf.forEach((schema) => {\n const oneOfEditor = new Jedison({ refParser: context.validator.refParser, schema: schema, data: context.value })\n const oneOfErrors = oneOfEditor.getErrors()\n oneOfEditor.destroy()\n\n if (oneOfErrors.length === 0) {\n counter++\n }\n })\n\n if (counter !== 1) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'oneOf',\n messages: [\n compileTemplate(context.translator.translate('errorOneOf'), {\n counter: counter\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isSet, isString } from '../../helpers/utils.js'\nimport { getSchemaPattern } from '../../helpers/schema.js'\n\nexport function pattern (context) {\n const errors = []\n const pattern = getSchemaPattern(context.schema)\n\n if (isString(context.value) && isSet(pattern)) {\n const regexp = new RegExp(pattern)\n const invalid = !regexp.test(context.value)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'pattern',\n messages: [\n compileTemplate(context.translator.translate('errorPattern'), {\n pattern: pattern\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaPatternProperties } from '../../helpers/schema.js'\n\nexport function patternProperties (context) {\n let errors = []\n const patternProperties = getSchemaPatternProperties(context.schema)\n\n if (isObject(context.value) && isSet(patternProperties)) {\n Object.keys(context.value).forEach((propertyName) => {\n Object.keys(patternProperties).forEach((pattern) => {\n const regexp = new RegExp(pattern)\n if (regexp.test(propertyName)) {\n const schema = patternProperties[pattern]\n\n const editor = new Jedison({\n refParser: context.validator.refParser,\n schema: schema,\n data: context.value[propertyName]\n })\n\n const editorErrors = editor.getErrors().map((error) => {\n return {\n type: 'error',\n path: context.path + '/' + propertyName,\n constraint: 'patternProperties',\n messages: error.messages\n }\n })\n\n errors = [...errors, ...editorErrors]\n\n editor.destroy()\n }\n })\n })\n }\n\n return errors\n}\n","import { compileTemplate, hasOwn, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaProperties } from '../../helpers/schema.js'\n\nexport function properties (context) {\n const schemaProperties = getSchemaProperties(context.schema)\n const invalidProperties = []\n\n if (isObject(context.value) && isSet(schemaProperties)) {\n Object.keys(schemaProperties).forEach((propertyName) => {\n if (hasOwn(context.value, propertyName)) {\n const propertySchema = schemaProperties[propertyName]\n\n const propertyErrors = context.validator.getErrors(\n context.value[propertyName],\n propertySchema,\n propertyName,\n context.path + '/' + propertyName\n )\n\n if (propertyErrors.length > 0) {\n invalidProperties.push(propertyName)\n }\n }\n })\n }\n\n if (invalidProperties.length > 0) {\n return [{\n type: 'error',\n path: context.path,\n constraint: 'properties',\n messages: [\n compileTemplate(context.translator.translate('errorProperties'), { properties: invalidProperties.join(', ') })\n ]\n }]\n }\n\n return []\n}\n","import { compileTemplate, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaRequired } from '../../helpers/schema.js'\n\nexport function required (context) {\n const errors = []\n const required = getSchemaRequired(context.schema)\n\n if (isObject(context.value) && isSet(required)) {\n const missingProperties = []\n const keys = Object.keys(context.value)\n\n required.forEach((key) => {\n if (!keys.includes(key)) {\n missingProperties.push(key)\n }\n })\n\n const invalid = missingProperties.length > 0\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'required',\n messages: [\n compileTemplate(context.translator.translate('errorRequired'), {\n required: missingProperties.join(', ')\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import {\n compileTemplate, getType,\n isArray,\n isBoolean,\n isInteger,\n isNull,\n isNumber,\n isObject,\n isSet,\n isString\n} from '../../helpers/utils.js'\nimport { getSchemaType } from '../../helpers/schema.js'\n\nexport function type (context) {\n const errors = []\n const type = getSchemaType(context.schema)\n\n if (type === 'any') {\n return errors\n }\n\n if (isSet(type)) {\n const types = {\n string: value => isString(value),\n number: value => isNumber(value),\n integer: value => isInteger(value),\n boolean: value => isBoolean(value),\n array: value => isArray(value),\n object: value => isObject(value),\n null: value => isNull(value)\n }\n\n let valid = true\n\n if (isArray(type)) {\n valid = type.some((type) => {\n return types[type](context.value)\n })\n } else {\n valid = types[type](context.value)\n }\n\n if (!valid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'type',\n messages: [\n compileTemplate(context.translator.translate('errorType'), {\n type: type,\n valueType: getType(context.value)\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isNumber, isSet } from '../../helpers/utils.js'\nimport { getSchemaMaximum } from '../../helpers/schema.js'\n\nexport function maximum (context) {\n const errors = []\n const maximum = getSchemaMaximum(context.schema)\n\n if (isNumber(context.value) && isSet(maximum)) {\n const invalid = (context.value > maximum)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maximum',\n messages: [\n compileTemplate(context.translator.translate('errorMaximum'), {\n maximum: maximum\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { isArray, isObject, isSet, sortObject } from '../../helpers/utils.js'\nimport { getSchemaUniqueItems } from '../../helpers/schema.js'\n\nexport function uniqueItems (context) {\n const errors = []\n const uniqueItems = getSchemaUniqueItems(context.schema)\n\n if (isArray(context.value) && isSet(uniqueItems) && uniqueItems === true) {\n const seen = []\n let hasDuplicatedItems = false\n\n for (let i = 0; i < context.value.length; i++) {\n let item = context.value[i]\n\n if (isObject(item)) {\n item = sortObject(item)\n }\n\n const itemStringified = JSON.stringify(item)\n hasDuplicatedItems = seen.some((seen) => seen === itemStringified)\n\n if (hasDuplicatedItems) {\n break\n } else {\n seen.push(itemStringified)\n }\n }\n\n const invalid = (hasDuplicatedItems)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'uniqueItems',\n messages: [\n context.translator.translate('errorUniqueItems')\n ]\n })\n }\n }\n\n return errors\n}\n","/**\n * Constrains additionalProperties\n */\n\nimport { compileTemplate, hasOwn, isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaAdditionalProperties, getSchemaPatternProperties, getSchemaProperties } from '../../helpers/schema.js'\n\nexport function additionalProperties (context) {\n const errors = []\n const schemaAdditionalProperties = getSchemaAdditionalProperties(context.schema)\n const schemaPatternProperties = getSchemaPatternProperties(context.schema)\n const schemaProperties = getSchemaProperties(context.schema)\n\n if (isObject(context.value) && isSet(schemaAdditionalProperties)) {\n const properties = schemaProperties || {}\n const additionalProperties = schemaAdditionalProperties\n const patternProperties = schemaPatternProperties || {}\n\n Object.keys(context.value).forEach((property) => {\n const definedInPatternProperty = Object.keys(patternProperties).some((pattern) => {\n const regexp = new RegExp(pattern)\n return regexp.test(property)\n })\n\n const isDefinedInProperties = hasOwn(properties, property)\n\n if (!definedInPatternProperty && !isDefinedInProperties) {\n if (additionalProperties === false) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'additionalProperties',\n messages: [\n compileTemplate(context.translator.translate('errorAdditionalProperties'), { property })\n ]\n })\n } else if (isObject(additionalProperties)) {\n const editor = new Jedison({\n refParser: context.validator.refParser,\n schema: additionalProperties,\n data: context.value[property]\n })\n\n const additionalPropertyErrors = editor.getErrors().map((error) => ({\n type: 'error',\n path: `${context.path}.${property}`,\n constraint: 'additionalProperties',\n messages: error.messages\n }))\n\n errors.push(...additionalPropertyErrors)\n editor.destroy()\n }\n }\n })\n }\n\n return errors\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { properties } from '../constrains/properties.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n properties: properties,\n required: required,\n type: type,\n uniqueItems: uniqueItems\n}\n","import { isSet, different, compileTemplate } from '../../helpers/utils.js'\nimport { getSchemaConst } from '../../helpers/schema.js'\n\nexport function _const (context) {\n const errors = []\n const schemaConst = getSchemaConst(context.schema)\n\n if (isSet(schemaConst)) {\n const valueIsNotEqualConst = different(context.value, schemaConst)\n const invalid = (valueIsNotEqualConst)\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'const',\n messages: [\n compileTemplate(context.translator.translate('errorConst'), {\n const: JSON.stringify(schemaConst)\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { compileTemplate, isArray, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaContains, getSchemaMaxContains, getSchemaMinContains } from '../../helpers/schema.js'\n\nexport function contains (context) {\n const errors = []\n const contains = getSchemaContains(context.schema)\n const minContains = getSchemaMinContains(context.schema)\n const maxContains = getSchemaMaxContains(context.schema)\n\n if (isArray(context.value) && isSet(contains)) {\n let counter = 0\n\n context.value.forEach((item) => {\n const containsEditor = new Jedison({ refParser: context.validator.refParser, schema: contains, data: item })\n const containsErrors = containsEditor.getErrors()\n\n if (containsErrors.length === 0) {\n counter++\n }\n\n containsEditor.destroy()\n })\n\n const containsInvalid = (counter === 0)\n\n if (isSet(minContains)) {\n const minContainsInvalid = (counter < minContains)\n\n if (minContainsInvalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'minContains',\n messages: [\n compileTemplate(context.translator.translate('errorMinContains'), {\n counter: counter,\n minContains: minContains\n })\n ]\n })\n }\n } else {\n if (containsInvalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'contains',\n messages: [context.translator.translate('errorContains')]\n })\n }\n }\n\n if (isSet(maxContains)) {\n const maxContainsInvalid = (counter > maxContains)\n\n if (maxContainsInvalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'maxContains',\n messages: [\n compileTemplate(context.translator.translate('errorMaxContains'), {\n counter: counter,\n maxContains: maxContains\n })\n ]\n })\n }\n }\n }\n\n return errors\n}\n","import { compileTemplate, hasOwn, isObject, isSet } from '../../helpers/utils.js'\nimport { getSchemaDependentRequired } from '../../helpers/schema.js'\n\nexport function dependentRequired (context) {\n const errors = []\n const dependentRequired = getSchemaDependentRequired(context.schema)\n\n if (isObject(context.value) && isSet(dependentRequired)) {\n let missingProperties = []\n\n Object.keys(dependentRequired).forEach((key) => {\n if (isSet(context.value[key])) {\n const requiredProperties = dependentRequired[key]\n\n missingProperties = requiredProperties.filter((property) => {\n return !hasOwn(context.value, property)\n })\n }\n })\n\n const invalid = missingProperties.length > 0\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'dependentRequired',\n messages: [\n compileTemplate(context.translator.translate('errorDependentRequired'), {\n dependentRequired: missingProperties.join(', ')\n })\n ]\n })\n }\n }\n\n return errors\n}\n","import { isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaDependentSchemas } from '../../helpers/schema.js'\n\nexport function dependentSchemas (context) {\n let errors = []\n const dependentSchemas = getSchemaDependentSchemas(context.schema)\n\n if (isObject(context.value) && isSet(dependentSchemas)) {\n Object.keys(dependentSchemas).forEach((key) => {\n if (isSet(context.value[key])) {\n const dependentSchema = dependentSchemas[key]\n const tmpEditor = new Jedison({ refParser: context.validator.refParser, schema: dependentSchema, data: context.value })\n const tmpErrors = tmpEditor.getErrors()\n tmpEditor.destroy()\n errors = [...errors, ...tmpErrors]\n }\n })\n }\n\n return errors\n}\n","import Jedison from '../../jedison.js'\nimport { isSet, notSet } from '../../helpers/utils.js'\nimport { getSchemaElse, getSchemaIf, getSchemaThen } from '../../helpers/schema.js'\n\nexport function ifThenElse (context) {\n const errors = []\n const schemaIf = getSchemaIf(context.schema)\n const schemaThen = getSchemaThen(context.schema)\n const schemaElse = getSchemaElse(context.schema)\n\n if (isSet(schemaIf)) {\n if (notSet(schemaThen) && notSet(schemaElse)) {\n return errors\n }\n\n const ifEditor = new Jedison({ refParser: context.validator.refParser, schema: schemaIf, data: context.value })\n const ifErrors = ifEditor.getErrors()\n ifEditor.destroy()\n\n let thenErrors = []\n let elseErrors = []\n\n if (isSet(schemaThen)) {\n const thenEditor = new Jedison({ refParser: context.validator.refParser, schema: schemaThen, data: context.value })\n thenErrors = thenEditor.getErrors()\n thenEditor.destroy()\n }\n\n if (isSet(schemaElse)) {\n const elseEditor = new Jedison({ refParser: context.validator.refParser, schema: schemaElse, data: context.value })\n elseErrors = elseEditor.getErrors()\n elseEditor.destroy()\n }\n\n if (schemaIf === true) {\n return thenErrors\n }\n\n if (schemaIf === false) {\n return elseErrors\n }\n\n if (ifErrors.length === 0) {\n return thenErrors\n }\n\n if (ifErrors.length > 0) {\n return elseErrors\n }\n }\n\n return errors\n}\n","import { compileTemplate, isArray, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport { getSchemaPrefixItems } from '../../helpers/schema.js'\n\nexport function prefixItems (context) {\n const errors = []\n const prefixItems = getSchemaPrefixItems(context.schema)\n\n if (isArray(context.value) && isSet(prefixItems)) {\n prefixItems.forEach((itemSchema, index) => {\n const itemValue = context.value[index]\n\n if (isSet(itemValue)) {\n const tmpEditor = new Jedison({ refParser: context.validator.refParser, schema: itemSchema, data: itemValue })\n const tmpErrors = tmpEditor.getErrors()\n tmpEditor.destroy()\n\n if (tmpErrors.length > 0) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'prefixItems',\n messages: [\n compileTemplate(context.translator.translate('errorPrefixItems'), {\n index: index\n })\n ]\n })\n }\n }\n })\n }\n\n return errors\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { _const } from '../constrains/const.js'\nimport { contains } from '../constrains/contains.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { dependentRequired } from '../constrains/dependentRequired.js'\nimport { dependentSchemas } from '../constrains/dependentSchemas.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { ifThenElse } from '../constrains/if-then-else.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { properties } from '../constrains/properties.js'\nimport { prefixItems } from '../constrains/prefixItems.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n const: _const,\n contains: contains,\n dependentRequired: dependentRequired,\n dependentSchemas: dependentSchemas,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n if: ifThenElse,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n properties: properties,\n prefixItems: prefixItems,\n required: required,\n type: type,\n uniqueItems: uniqueItems\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { _const } from '../constrains/const.js'\nimport { contains } from '../constrains/contains.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { dependentRequired } from '../constrains/dependentRequired.js'\nimport { dependentSchemas } from '../constrains/dependentSchemas.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { ifThenElse } from '../constrains/if-then-else.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { properties } from '../constrains/properties.js'\nimport { prefixItems } from '../constrains/prefixItems.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n const: _const,\n contains: contains,\n dependentRequired: dependentRequired,\n dependentSchemas: dependentSchemas,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n if: ifThenElse,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n properties: properties,\n prefixItems: prefixItems,\n required: required,\n type: type,\n uniqueItems: uniqueItems\n}\n","/**\n * constrains unevaluatedProperties\n */\n\nimport { compileTemplate, hasOwn, isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport {\n getSchemaUnevaluatedProperties,\n getSchemaPatternProperties,\n getSchemaProperties,\n getSchemaAnyOf, getSchemaAllOf, getSchemaOneOf\n} from '../../helpers/schema.js'\n\nexport function unevaluatedProperties (context) {\n let errors = []\n const schemaUnevaluatedProperties = getSchemaUnevaluatedProperties(context.schema)\n const schemaPatternProperties = getSchemaPatternProperties(context.schema)\n const schemaProperties = getSchemaProperties(context.schema)\n const schemaAllOf = getSchemaAllOf(context.schema)\n const schemaAnyOf = getSchemaAnyOf(context.schema)\n const schemaOneOf = getSchemaOneOf(context.schema)\n\n if (isObject(context.value) && isSet(schemaUnevaluatedProperties)) {\n let properties = isSet(schemaProperties) ? schemaProperties : {}\n const unevaluatedProperties = schemaUnevaluatedProperties\n const patternProperties = schemaPatternProperties\n\n // see through allOf, anyOf and oneOf\n const ofSchemas = [\n schemaAllOf,\n schemaAnyOf,\n schemaOneOf\n ]\n\n ofSchemas.forEach((subSchema) => {\n if (isSet(subSchema)) {\n subSchema.forEach((subschema) => {\n if (isSet(subschema['properties'])) {\n properties = { ...properties, ...subschema['properties'] }\n }\n })\n }\n })\n\n if (properties) {\n Object.keys(context.value).forEach((property) => {\n let definedInPatternProperty = false\n\n if (isSet(patternProperties)) {\n Object.keys(patternProperties).forEach((pattern) => {\n const regexp = new RegExp(pattern)\n definedInPatternProperty = regexp.test(property)\n })\n }\n\n if (!definedInPatternProperty && unevaluatedProperties === false && !hasOwn(properties, property)) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'unevaluatedProperties',\n messages: [\n compileTemplate(context.translator.translate('errorUnevaluatedProperties'), {\n property: property\n })\n ]\n })\n }\n\n if (!definedInPatternProperty && isObject(unevaluatedProperties) && !hasOwn(properties, property)) {\n const editor = new Jedison({\n refParser: context.validator.refParser,\n schema: unevaluatedProperties,\n data: context.value[property]\n })\n\n const unevaluatedPropertiesErrors = editor.getErrors().map((error) => {\n return {\n type: 'error',\n path: property,\n constraint: 'unevaluatedProperties',\n messages: error.messages\n }\n })\n\n errors = [...errors, ...unevaluatedPropertiesErrors]\n\n editor.destroy()\n }\n })\n }\n }\n\n return errors\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { _const } from '../constrains/const.js'\nimport { contains } from '../constrains/contains.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { dependentRequired } from '../constrains/dependentRequired.js'\nimport { dependentSchemas } from '../constrains/dependentSchemas.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { ifThenElse } from '../constrains/if-then-else.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { properties } from '../constrains/properties.js'\nimport { prefixItems } from '../constrains/prefixItems.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\nimport { unevaluatedProperties } from '../constrains/unevaluatedProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n const: _const,\n contains: contains,\n dependentRequired: dependentRequired,\n dependentSchemas: dependentSchemas,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n if: ifThenElse,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n propertie: properties,\n prefixItems: prefixItems,\n required: required,\n type: type,\n unevaluatedProperties: unevaluatedProperties,\n uniqueItems: uniqueItems\n}\n","/**\n * constrains propertyNames\n */\n\nimport { compileTemplate, isObject, isSet } from '../../helpers/utils.js'\nimport Jedison from '../../jedison.js'\nimport {\n getSchemaPropertyNames\n} from '../../helpers/schema.js'\n\nexport function propertyNames (context) {\n const errors = []\n const schemaPropertyNames = getSchemaPropertyNames(context.schema)\n\n if (isObject(context.value) && isSet(schemaPropertyNames)) {\n Object.keys(context.value).forEach((propertyName) => {\n const editor = new Jedison({\n refParser: context.validator.refParser,\n schema: schemaPropertyNames,\n data: propertyName\n })\n\n const invalid = editor.getErrors().length > 0\n\n if (invalid) {\n errors.push({\n type: 'error',\n path: context.path,\n constraint: 'propertyNames',\n messages: [\n compileTemplate(context.translator.translate('errorPropertyNames'), { propertyName: propertyName })\n ]\n })\n }\n })\n }\n\n return errors\n}\n","import { allOf } from '../constrains/allOf.js'\nimport { minLength } from '../constrains/minLength.js'\nimport { _const } from '../constrains/const.js'\nimport { contains } from '../constrains/contains.js'\nimport { anyOf } from '../constrains/anyOf.js'\nimport { dependentRequired } from '../constrains/dependentRequired.js'\nimport { dependentSchemas } from '../constrains/dependentSchemas.js'\nimport { _enum } from '../constrains/enum.js'\nimport { exclusiveMaximum } from '../constrains/exclusiveMaximum.js'\nimport { exclusiveMinimum } from '../constrains/exclusiveMinimum.js'\nimport { format } from '../constrains/format.js'\nimport { ifThenElse } from '../constrains/if-then-else.js'\nimport { items } from '../constrains/items.js'\nimport { maxItems } from '../constrains/maxItems.js'\nimport { maxLength } from '../constrains/maxLength.js'\nimport { maxProperties } from '../constrains/maxProperties.js'\nimport { minimum } from '../constrains/minimum.js'\nimport { minItems } from '../constrains/minItems.js'\nimport { minProperties } from '../constrains/minProperties.js'\nimport { multipleOf } from '../constrains/multipleOf.js'\nimport { not } from '../constrains/not.js'\nimport { oneOf } from '../constrains/oneOf.js'\nimport { pattern } from '../constrains/pattern.js'\nimport { patternProperties } from '../constrains/patternProperties.js'\nimport { prefixItems } from '../constrains/prefixItems.js'\nimport { propertyNames } from '../constrains/propertyNames.js'\nimport { properties } from '../constrains/properties.js'\nimport { required } from '../constrains/required.js'\nimport { type } from '../constrains/type.js'\nimport { maximum } from '../constrains/maximum.js'\nimport { uniqueItems } from '../constrains/uniqueItems.js'\nimport { additionalProperties } from '../constrains/additionalProperties.js'\nimport { unevaluatedProperties } from '../constrains/unevaluatedProperties.js'\n\nexport default {\n additionalProperties: additionalProperties,\n allOf: allOf,\n anyOf: anyOf,\n const: _const,\n contains: contains,\n dependentRequired: dependentRequired,\n dependentSchemas: dependentSchemas,\n enum: _enum,\n exclusiveMaximum: exclusiveMaximum,\n exclusiveMinimum: exclusiveMinimum,\n format: format,\n if: ifThenElse,\n items: items,\n maximum: maximum,\n maxItems: maxItems,\n maxLength: maxLength,\n maxProperties: maxProperties,\n minimum: minimum,\n minItems: minItems,\n minLength: minLength,\n minProperties: minProperties,\n multipleOf: multipleOf,\n not: not,\n oneOf: oneOf,\n pattern: pattern,\n patternProperties: patternProperties,\n prefixItems: prefixItems,\n propertyNames: propertyNames,\n properties: properties,\n required: required,\n type: type,\n unevaluatedProperties: unevaluatedProperties,\n uniqueItems: uniqueItems\n}\n","import draft04 from './drafts/draft-04.js'\nimport draft06 from './drafts/draft-06.js'\nimport draft07 from './drafts/draft-07.js'\nimport draft201909 from './drafts/draft-2019-09.js'\nimport draft202012 from './drafts/draft-2020-12.js'\nimport { hasOwn, isBoolean, clone, isSet, isObject, isArray } from '../helpers/utils.js'\nimport { getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a Validator instance.\n */\nclass Validator {\n constructor (config = {}) {\n this.refParser = config.refParser\n this.constraints = config.constraints ?? {}\n this.assertFormat = config.assertFormat ? config.assertFormat : false\n this.translator = config.translator ? config.translator : false\n this.draft = draft202012\n\n this.jsonSchemaDrafts = {\n 'http://json-schema.org/draft-04/schema#': draft04,\n 'http://json-schema.org/draft-06/schema#': draft06,\n 'http://json-schema.org/draft-07/schema#': draft07,\n 'https://json-schema.org/draft/2019-09/schema': draft201909,\n 'https://json-schema.org/draft/2020-12/schema': draft202012\n }\n }\n\n /**\n * Validates a value against it's schema\n */\n getErrors (value, schema, key, path) {\n let schemaErrors = []\n\n const schemaClone = clone(schema)\n\n if (isBoolean(schemaClone) && schemaClone === true) {\n return schemaErrors\n }\n\n if (isBoolean(schemaClone) && schemaClone === false) {\n return [{\n type: 'error',\n messages: ['invalid'],\n path: path\n }]\n }\n\n const allConstraints = { ...this.draft, ...this.constraints }\n\n for (const [constraintName, constraint] of Object.entries(allConstraints)) {\n if (hasOwn(schemaClone, constraintName)) {\n const context = {\n validator: this,\n value,\n schema: schemaClone,\n key,\n path,\n translator: this.translator\n }\n\n const validatorErrors = constraint(context)\n\n if (validatorErrors) {\n schemaErrors = [...schemaErrors, ...validatorErrors]\n }\n }\n }\n\n const schemaOptionsMessages = getSchemaXOption(schema, 'messages')\n\n if (isSet(schemaOptionsMessages)) {\n if (isObject(schemaOptionsMessages)) {\n schemaErrors.forEach((schemaError) => {\n const schemaMessageListedByLanguage = schemaOptionsMessages?.[this.translator?.language]?.[schemaError?.constraint]\n const schemaMessageListedByConstraint = schemaOptionsMessages?.[schemaError?.constraint]\n const schemaMessage = schemaMessageListedByLanguage ?? schemaMessageListedByConstraint\n\n if (isSet(schemaMessage)) {\n schemaError.messages = [\n schemaMessage\n ]\n }\n return schemaError\n })\n }\n\n if (isArray(schemaOptionsMessages) && schemaErrors.length > 0) {\n schemaErrors.forEach((schemaError) => {\n schemaError.messages = schemaOptionsMessages\n return schemaError\n })\n }\n }\n\n return schemaErrors\n }\n}\n\nexport default Validator\n","/**\n * Represents an EventEmitter instance.\n */\nclass EventEmitter {\n constructor () {\n this.listeners = []\n }\n\n /**\n * Adds a named event listener\n * @public\n * @param {string} name - The name of the event\n * @param {function} callback - A callback functions that will be executed when this event is emitted\n */\n on (name, callback) {\n this.listeners.push({ name, callback })\n }\n\n off (name) {\n this.listeners = this.listeners.filter(listener => listener.name !== name)\n }\n\n /**\n * Triggers the callback function of a named event listener\n * @public\n * @param {string} name - The name of the event to be emitted\n * @param {...*} args - Arguments to be passed to the callback function\n */\n emit (name, ...args) {\n const listeners = this.listeners.filter(listener => listener.name === name)\n\n listeners.forEach(listener => {\n try {\n listener.callback(...args)\n } catch (error) {\n console.error(`Error in listener callback for event \"${name}\":`, error)\n }\n })\n }\n\n /**\n * Deletes all properties of the class\n */\n destroy () {\n Object.keys(this).forEach((key) => {\n delete this[key]\n })\n }\n}\n\nexport default EventEmitter\n","import EventEmitter from '../event-emitter.js'\n\nimport {\n clone, compileTemplate, different,\n equal,\n isSet,\n notSet,\n removeDuplicatesFromArray\n} from '../helpers/utils.js'\n\nimport {\n getSchemaConst,\n getSchemaDefault, getSchemaEnum,\n getSchemaReadOnly,\n getSchemaType, getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents a JSON instance.\n */\nclass Instance extends EventEmitter {\n constructor (config) {\n super()\n\n /**\n * A reference to the Jedison instance to which this instance belongs.\n * @type {Jedison}\n */\n this.jedison = config.jedison\n\n /**\n * The schema path of this instance.\n * @type {string}\n */\n this.path = config.path || this.jedison.rootName\n\n /**\n * A JSON schema.\n * @type {boolean|object}\n */\n this.schema = config.schema\n\n /**\n * The json value of this instance.\n * @type {*}\n */\n this.value = isSet(config.value) ? config.value : undefined\n\n /**\n * The active state of this instance. If false the editor is not participating\n * in the value.\n * @type {boolean}\n */\n this.isActive = true\n\n /**\n * The Parent instance of this instance.\n * @type {Instance|null}\n */\n this.parent = config.parent || null\n\n /**\n * Child instances of this instance.\n * @type {Instance[]}\n */\n this.children = []\n\n /**\n * The editor controlling this Instance if any\n * @type {Editor|null}\n */\n this.ui = null\n\n /**\n * Indicates whether the instance value changed.\n * @type {boolean}\n */\n this.isDirty = false\n\n this.watched = {}\n\n this.key = this.path.split(this.jedison.pathSeparator).pop()\n\n /**\n * This property is set by it parent if it happens to be an array instance.\n * @type {object}\n */\n this.arrayTemplateData = config.arrayTemplateData || {}\n\n this.init()\n }\n\n /**\n * Initializes and register the instance\n */\n init () {\n this.register()\n this.setInitialValue()\n this.prepare()\n this.setDefaultValue()\n\n this.registerWatcher()\n this.setValueFormTemplate()\n\n if (this.jedison.options.container) {\n this.setUI()\n }\n\n this.on('notifyParent', (initiator) => {\n if (this.parent) {\n this.parent.isDirty = true\n this.parent.onChildChange(initiator)\n }\n })\n }\n\n /**\n * Sets the instance ui property. UI can be an editor instance or similar\n */\n setUI () {\n if (this.jedison.isEditor) {\n const EditorClass = this.jedison.uiResolver.getClass(this.schema)\n this.ui = new EditorClass(this)\n }\n }\n\n /**\n * Return the last part of the instance path\n */\n getKey () {\n return this.key\n }\n\n /**\n * Return the instance schema\n */\n getSchema () {\n return this.schema\n }\n\n /**\n * Adds a child instance pointer to the instance list\n */\n register () {\n this.jedison.register(this)\n\n if (this.children.length === 0) return\n\n const registerChildRecursive = (child) => {\n this.jedison.register(child)\n if (child.children.length > 0) {\n child.children.forEach(registerChildRecursive)\n }\n }\n\n this.children.forEach(registerChildRecursive)\n }\n\n /**\n * Deletes a child instance pointer from the instance list\n */\n unregister () {\n this.jedison.unregister(this)\n\n if (this.children.length === 0) return\n\n const unregisterChildRecursive = (child) => {\n this.jedison.unregister(child)\n if (child.children.length > 0) {\n child.children.forEach(unregisterChildRecursive)\n }\n }\n\n this.children.forEach(unregisterChildRecursive)\n }\n\n /**\n * Sets the default value of the instance based on it's type\n */\n setInitialValue () {\n const schemaEnforceEnumDefault = getSchemaXOption(this.schema, 'enforceEnumDefault') // todo: deprecated\n const schemaEnforceEnum = getSchemaXOption(this.schema, 'enforceEnum')\n const enforceEnumDefault = schemaEnforceEnumDefault ?? this.jedison.options.enforceEnumDefault // todo: deprecated\n const enforceEnum = schemaEnforceEnum ?? this.jedison.options.enforceEnum\n const finalEnforceEnum = isSet(schemaEnforceEnum) ? enforceEnum : enforceEnumDefault // todo: remove this after deprecation\n const schemaEnum = getSchemaEnum(this.schema)\n\n if (isSet(schemaEnum) && !schemaEnum.includes(this.getValue()) && isSet(schemaEnum[0]) && finalEnforceEnum) {\n this.setValue(schemaEnum[0], false)\n }\n\n if (notSet(this.value)) {\n let value\n const schemaType = getSchemaType(this.schema)\n\n if (schemaType === 'boolean') value = false\n if (schemaType === 'number') value = 0.0\n if (schemaType === 'integer') value = 0\n if (schemaType === 'string') value = ''\n if (schemaType === 'array') value = []\n if (schemaType === 'object') value = {}\n if (schemaType === 'null') value = null\n\n this.value = value\n }\n }\n\n setDefaultValue () {\n const schemaDefault = getSchemaDefault(this.schema)\n\n if (isSet(schemaDefault)) {\n this.setValue(schemaDefault, false)\n }\n\n const enforceConst = getSchemaXOption(this.schema, 'enforceConst') ?? this.jedison.options.enforceConst\n\n if (isSet(enforceConst) && equal(enforceConst, true)) {\n const schemaConst = getSchemaConst(this.schema)\n\n if (isSet(schemaConst)) {\n this.setValue(schemaConst, false)\n }\n }\n }\n\n registerWatcher () {\n const watch = getSchemaXOption(this.schema, 'watch')\n\n if (!isSet(watch)) return\n\n Object.entries(watch).forEach(([name, path]) => {\n this.jedison.watch(path, () => {\n this.updateWatchedData(name, path)\n })\n })\n }\n\n updateWatchedData (name, path) {\n const instance = this.jedison.getInstance(path)\n\n if (!isSet(instance)) {\n return\n }\n\n if (instance) {\n this.watched[name] = {\n value: instance.getValue(),\n schema: instance.getSchema(),\n properties: instance.schema.properties ? Object.keys(instance.schema.properties) : []\n }\n }\n\n this.setValueFormTemplate()\n }\n\n setValueFormTemplate () {\n const template = getSchemaXOption(this.schema, 'template')\n\n if (!isSet(template)) return\n\n if (template) {\n this.setValue(compileTemplate(template, this.watched))\n }\n }\n\n /**\n * Returns the value of the instance\n */\n getValue () {\n return clone(this.value)\n }\n\n /**\n * Returns the data that will replace placeholders in titles, descriptions (e.g. \"{{ i1 }} {{ value.title }}\")\n */\n getTemplateData () {\n const templateData = {\n ...this.arrayTemplateData,\n value: this.getValue(),\n settings: this.jedison.options.settings\n }\n\n // Add parent data if parent exists\n if (this.parent) {\n templateData.parent = this.parent.getTemplateData()\n }\n\n return templateData\n }\n\n /**\n * Sets the instance value\n * @returns {*} The final value after constraint enforcement\n */\n setValue (newValue, notifyParent = true, initiator = 'api') {\n // EARLY RETURN: Skip if value is identical (70% of cases)\n if (this.value === newValue) {\n return this.value\n }\n\n // EARLY RETURN: Skip if both values are primitives and equal\n if (typeof this.value !== 'object' && typeof newValue !== 'object' && this.value === newValue) {\n return this.value\n }\n\n // Only check const enforcement if necessary\n const enforceConst = getSchemaXOption(this.schema, 'enforceConst') ?? this.jedison.options.enforceConst\n if (isSet(enforceConst) && equal(enforceConst, true)) {\n const schemaConst = getSchemaConst(this.schema)\n if (isSet(schemaConst)) {\n newValue = schemaConst\n }\n }\n\n // Only do expensive comparison if values might be different\n const valueChanged = different(this.value, newValue)\n\n if (!valueChanged) {\n return this.value // EARLY RETURN: No change needed\n }\n\n this.value = newValue\n this.isDirty = true\n\n // Only emit events if value actually changed\n this.emit('set-value', newValue, initiator)\n this.emit('change', initiator)\n this.jedison.emit('instance-change', this, initiator)\n\n if (notifyParent) {\n this.emit('notifyParent', initiator)\n }\n\n return this.value\n }\n\n /**\n * Fires when a child's instance state changes\n */\n onChildChange (initiator) {\n }\n\n /**\n * Returns an array of validation error messages\n */\n getErrors () {\n if (!this.isActive) {\n return []\n }\n\n const errors = this.jedison.validator.getErrors(this.getValue(), this.schema, this.getKey(), this.path)\n return removeDuplicatesFromArray(errors)\n }\n\n /**\n * Prepare data before building the editor\n */\n prepare () {\n }\n\n /**\n * Activates the instance\n */\n activate () {\n if (this.isActive === false) {\n this.isActive = true\n this.emit('notifyParent')\n }\n }\n\n /**\n * Deactivates the instance\n */\n deactivate () {\n if (this.isActive === true) {\n this.isActive = false\n this.emit('notifyParent')\n }\n }\n\n /**\n * Returns true if this instance is read only\n */\n isReadOnly () {\n if (getSchemaReadOnly(this.schema) === true) {\n return true\n }\n\n return this.parent ? this.parent.isReadOnly() : false\n }\n\n /**\n * Destroy the instance and it's children\n */\n destroy () {\n this.unregister()\n\n this.listeners = null\n\n if (this.children.length > 0) {\n this.children.forEach((child) => child.destroy())\n this.children = []\n }\n\n if (this.ui) {\n this.ui.destroy()\n this.ui = null\n }\n\n Object.keys(this).forEach((key) => {\n this[key] = null\n })\n\n super.destroy()\n }\n}\n\nexport default Instance\n","import { combineDeep, compileTemplate, isObject, isSet, pathToAttribute } from '../helpers/utils.js'\nimport { getSchemaDescription, getSchemaTitle, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an Editor instance.\n * @extends EventEmitter\n */\nclass Editor {\n constructor (instance) {\n /**\n * A reference to the Instance being controlled by this editor.\n * @type {Jedison}\n */\n this.instance = instance\n\n /**\n * Theme instance used to build the Editor user interface.\n * @type {Theme}\n */\n this.theme = null\n\n /**\n * The user interface html for this editor\n * @type {HTMLElement}\n */\n this.control = null\n\n /**\n * Disabled status for this editor user interface\n * @type {boolean}\n */\n this.disabled = false\n\n /**\n * Read only status for this editor user interface\n * @type {boolean}\n */\n this.readOnly = this.instance.isReadOnly()\n\n this.showingValidationErrors = false\n\n this.markdownEnabled = false\n this.purifyEnabled = false\n\n this.title = null\n this.description = null\n\n /**\n * Array to store event listeners for cleanup\n * @type {Array}\n */\n this.storedEventListeners = []\n\n this.init()\n this.build()\n this.setAttributes()\n this.setReadOnlyAttribute()\n this.addEventListeners()\n this.setVisibility()\n this.setContainerAttributes()\n this.refreshUI()\n\n const alwaysShowErrors = this.instance.jedison.options.showErrors === 'always' || getSchemaXOption(this.instance.schema, 'showErrors') === 'always'\n\n if (alwaysShowErrors) {\n this.showValidationErrors(this.instance.getErrors())\n }\n\n const valueChangeHandler = () => {\n this.refreshUI()\n this.showValidationErrors(this.instance.getErrors())\n }\n\n this.instance.on('change', valueChangeHandler)\n }\n\n static resolves (schema) {}\n\n /**\n * Initializes the editor\n */\n init () {\n this.theme = this.instance.jedison.theme\n this.markdownEnabled = getSchemaXOption(this.instance.schema, 'parseMarkdown') ?? this.instance.jedison.options.parseMarkdown\n this.purifyEnabled = getSchemaXOption(this.instance.schema, 'purifyHtml') ?? this.instance.jedison.options.purifyHtml\n }\n\n /**\n * Gets the json path level by counting how many \"/\" it has\n */\n getLevel () {\n return (this.instance.path.match(/\\//g) || []).length\n }\n\n setVisibility () {\n const schemaOptionHidden = getSchemaXOption(this.instance.schema, 'hidden')\n\n if (isSet(schemaOptionHidden) && schemaOptionHidden === true) {\n this.control.container.style.display = 'none'\n this.control.container.setAttribute('aria-hidden', 'true')\n }\n }\n\n /**\n * Sets container attributes like data-path and data-type\n */\n setContainerAttributes () {\n this.control.container.setAttribute('data-level', this.getLevel())\n this.control.container.setAttribute('data-path', this.instance.path)\n this.control.container.setAttribute('data-type', getSchemaType(this.instance.schema))\n\n const schemaContainerAttributes = getSchemaXOption(this.instance.schema, 'containerAttributes')\n\n if (isSet(schemaContainerAttributes) && isObject(schemaContainerAttributes)) {\n for (const [key, value] of Object.entries(schemaContainerAttributes)) {\n if (key === 'class') {\n const classes = value.split(' ')\n classes.forEach((cls) => {\n this.control.container.classList.add(cls)\n })\n } else {\n this.control.container.setAttribute(key, value)\n }\n }\n }\n }\n\n /**\n * Builds the editor control and appends it to the editor container\n */\n build () {\n }\n\n adaptForTable () {}\n\n /**\n * Adds attributes to generated html elements if specified in schema x-options\n */\n setAttributes () {\n const input = this.control.input\n\n if (isSet(input)) {\n const inputAttributes = getSchemaXOption(this.instance.schema, 'inputAttributes')\n\n if (isObject(inputAttributes)) {\n for (const [key, value] of Object.entries(inputAttributes)) {\n input.setAttribute(key, value)\n }\n }\n }\n }\n\n setReadOnlyAttribute () {\n if (this.readOnly) {\n const inputElements = this.control.container.querySelectorAll('input, textarea, select')\n inputElements.forEach((element) => {\n element.setAttribute('always-disabled', '')\n })\n }\n }\n\n getIdFromPath (path) {\n const optionId = this.instance.jedison.options.id\n return optionId ? optionId + '-' + pathToAttribute(path) : pathToAttribute(path)\n }\n\n /**\n * Determines the event type to use for validation trigger based on showErrors option\n * @returns {string} - 'input' or 'change'\n */\n getValidationEventType () {\n const showErrors = getSchemaXOption(this.instance.schema, 'showErrors') ?? this.instance.jedison.options.showErrors\n return showErrors === 'input' ? 'input' : 'change'\n }\n\n /**\n * Add event listeners to ui elements\n */\n addEventListeners () {\n }\n\n /**\n * Clears any stored event listeners that might persist\n * This method can be overridden by subclasses to provide custom cleanup logic\n */\n clearStoredEventListeners () {\n if (this.storedEventListeners) {\n this.storedEventListeners.forEach(listener => {\n if (listener.element && listener.handler) {\n listener.element.removeEventListener(listener.eventType || 'click', listener.handler)\n }\n })\n }\n this.storedEventListeners = []\n }\n\n /**\n * Shows validation error messages in the editor container.\n */\n showValidationErrors (errors, force = false) {\n errors = errors.filter((error) => {\n return error.path === this.instance.path\n })\n\n this.control.messages.innerHTML = ''\n this.showingValidationErrors = false\n\n const neverShowErrors = this.instance.jedison.options.showErrors === 'never' || getSchemaXOption(this.instance.schema, 'showErrors') === 'never'\n\n if ((neverShowErrors && !force) || errors.length === 0) {\n return\n }\n\n errors.forEach((error) => {\n if (error.constraint === 'properties') {\n return\n }\n\n error.messages.forEach((message) => {\n let invalidFeedback\n\n if (error.type === 'error') {\n invalidFeedback = this.getErrorFeedback({\n message: message\n })\n } else {\n invalidFeedback = this.getWarningFeedback({\n message: message\n })\n }\n\n this.control.messages.appendChild(invalidFeedback)\n })\n })\n\n this.showingValidationErrors = true\n }\n\n /**\n * Get an error message container\n */\n getErrorFeedback (config) {\n return this.theme.getErrorFeedback(config)\n }\n\n /**\n * Get an error message container\n */\n getWarningFeedback (config) {\n return this.theme.getWarningFeedback(config)\n }\n\n /**\n * Disables the editor\n */\n disable () {\n this.disabled = true\n this.refreshUI()\n }\n\n /**\n * Enables the editor\n */\n enable () {\n this.disabled = false\n this.refreshUI()\n }\n\n /**\n * Clean out HTML tags from txt\n */\n purifyContent (content, domPurifyOptions) {\n if (this.instance.jedison.options.purifyHtml && window.DOMPurify) {\n return window.DOMPurify.sanitize(content, domPurifyOptions)\n } else {\n const tmp = document.createElement('div')\n tmp.innerHTML = content\n return (tmp.textContent || tmp.innerText)\n }\n }\n\n getHtmlFromMarkdown (content) {\n return window.marked.parse(content)\n }\n\n getTitle () {\n let titleFromSchema = false\n this.title = this.instance.getKey()\n\n const schemaTitle = getSchemaTitle(this.instance.schema)\n\n if (isSet(schemaTitle)) {\n this.title = schemaTitle\n titleFromSchema = true\n }\n\n if (titleFromSchema) {\n this.title = compileTemplate(this.title, this.instance.getTemplateData())\n this.title = this.markdownEnabled ? this.getHtmlFromMarkdown(this.title) : this.title\n\n const domPurifyOptions = combineDeep({}, this.instance.jedison.options.domPurifyOptions, {\n FORBID_TAGS: ['p']\n })\n\n this.title = this.purifyEnabled ? this.purifyContent(this.title, domPurifyOptions) : this.title\n }\n\n return this.title\n }\n\n getDescription () {\n const schemaDescription = getSchemaDescription(this.instance.schema)\n\n if (isSet(schemaDescription)) {\n this.description = compileTemplate(schemaDescription, this.instance.getTemplateData())\n this.description = this.markdownEnabled ? this.getHtmlFromMarkdown(this.description) : this.description\n\n const domPurifyOptions = this.instance.jedison.options.domPurifyOptions\n\n this.description = this.purifyEnabled ? this.purifyContent(this.description, domPurifyOptions) : this.description\n }\n\n return this.description\n }\n\n getInfo (schema = null) {\n const _schema = schema ?? this.instance.schema\n const schemaInfo = getSchemaXOption(_schema, 'info')\n\n if (!isSet(schemaInfo)) {\n return schemaInfo\n }\n\n const domPurifyOptions = this.instance.jedison.options.domPurifyOptions\n\n if (isSet(schemaInfo.title)) {\n schemaInfo.title = this.markdownEnabled ? this.getHtmlFromMarkdown(schemaInfo.title) : schemaInfo.title\n schemaInfo.title = this.purifyEnabled ? this.purifyContent(schemaInfo.title, domPurifyOptions) : schemaInfo.title\n }\n\n if (isSet(schemaInfo.content)) {\n schemaInfo.content = this.markdownEnabled ? this.getHtmlFromMarkdown(schemaInfo.content) : schemaInfo.content\n schemaInfo.content = this.purifyEnabled ? this.purifyContent(schemaInfo.content, domPurifyOptions) : schemaInfo.content\n }\n\n return schemaInfo\n }\n\n /**\n * Updates control UI when its state changes\n */\n refreshUI () {\n this.refreshDisabledState()\n this.refreshTemplates()\n }\n\n refreshDisabledState () {\n const interactiveElements = this.control.container.querySelectorAll('button, input, select, textarea')\n\n interactiveElements.forEach((element) => {\n if (this.disabled || this.readOnly || element.hasAttribute('always-disabled')) {\n element.setAttribute('disabled', '')\n } else {\n element.removeAttribute('disabled', '')\n }\n\n if (element.hasAttribute('always-enabled')) {\n element.removeAttribute('disabled', '')\n }\n })\n }\n\n refreshTemplates () {\n if (this.control.legendText && this.getTitle()) {\n this.control.legendText.innerHTML = this.getTitle()\n }\n\n if (this.control.labelText && this.getTitle()) {\n this.control.labelText.innerHTML = this.getTitle()\n }\n\n if (this.control.description && this.getDescription()) {\n this.control.description.innerHTML = this.getDescription()\n }\n }\n\n /**\n * Transforms the input value if necessary before value set\n */\n sanitize (value) {\n return value\n }\n\n /**\n * Refreshes the JSON data input size to match content\n */\n refreshJsonDataInputSize () {\n if (this.control && this.control.jsonData && this.control.jsonData.input) {\n const input = this.control.jsonData.input\n input.style.height = 'auto'\n input.style.height = input.scrollHeight + 'px'\n\n setTimeout(() => {\n if (input) {\n input.scrollTop = 0\n }\n })\n }\n }\n\n /**\n * Refreshes the JSON data input with current instance value\n */\n refreshJsonData () {\n if (this.control && this.control.jsonData && this.control.jsonData.input) {\n this.control.jsonData.input.value = JSON.stringify(this.instance.getValue(), null, 2)\n }\n }\n\n /**\n * Destroys the editor\n */\n destroy () {\n if (this.control.container && this.control.container.parentNode) {\n this.control.container.parentNode.removeChild(this.control.container)\n }\n\n Object.keys(this).forEach((key) => {\n delete this[key]\n })\n }\n}\n\nexport default Editor\n","import Editor from './editor.js'\nimport {\n isSet\n} from '../helpers/utils.js'\nimport {\n getSchemaDescription,\n getSchemaIf,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an EditorIfThenElse instance.\n * @extends Editor\n */\nclass EditorIfThenElse extends Editor {\n static resolves (schema) {\n const schemaIf = getSchemaIf(schema)\n return isSet(schemaIf)\n }\n\n build () {\n this.control = this.theme.getIfThenElseControl({\n title: 'Options',\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n id: this.getIdFromPath(this.instance.path),\n description: getSchemaDescription(this.instance.schema)\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.childrenSlot.innerHTML = ''\n this.control.childrenSlot.appendChild(this.instance.activeInstance.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n this.instance.activeInstance.ui.disable()\n } else {\n this.instance.activeInstance.ui.enable()\n }\n }\n\n getErrorFeedback (config) {\n return this.theme.getAlert(config)\n }\n}\n\nexport default EditorIfThenElse\n","import Instance from './instance.js'\nimport EditorIfThenElse from '../editors/if-then-else.js'\nimport Jedison from '../jedison.js'\n\nimport {\n isSet,\n mergeDeep,\n clone,\n isObject,\n overwriteExistingProperties,\n hasOwn\n} from '../helpers/utils.js'\n\nimport {\n getSchemaElse,\n getSchemaIf,\n getSchemaThen\n} from '../helpers/schema.js'\n\n/**\n * Represents a InstanceIfThenElse instance.\n * @extends Instance\n */\nclass InstanceIfThenElse extends Instance {\n setUI () {\n this.ui = new EditorIfThenElse(this)\n }\n\n prepare () {\n this.instances = []\n this.instanceStartingValues = []\n this.instanceWithoutIf = null\n this.activeInstance = null\n this.index = 0\n this.schemas = []\n this.ifThenElseShemas = []\n\n this.traverseSchema(this.schema)\n\n delete this.schema.if\n delete this.schema.then\n delete this.schema.else\n\n this.ifThenElseShemas.forEach((item) => {\n if (isSet(item.then)) {\n this.schemas.push(mergeDeep({}, clone(this.schema), item.then))\n }\n\n if (isSet(item.else)) {\n this.schemas.push(mergeDeep({}, clone(this.schema), item.else))\n }\n })\n\n const schemaClone = clone(this.schema)\n delete schemaClone.if\n delete schemaClone.then\n delete schemaClone.else\n\n this.instanceWithoutIf = this.jedison.createInstance({\n jedison: this.jedison,\n schema: schemaClone,\n path: this.path,\n parent: this.parent\n })\n\n this.schemas.forEach((schema) => {\n const instance = this.jedison.createInstance({\n jedison: this.jedison,\n schema: schema,\n path: this.path,\n parent: this.parent\n })\n\n this.instanceStartingValues.push(instance.getValue())\n\n // instance.off('notifyParent')\n\n this.instances.push(instance)\n })\n\n this.on('set-value', (value, initiator) => {\n this.changeValue(value, initiator)\n })\n\n const ifValue = this.instanceWithoutIf.getValue()\n this.changeValue(ifValue)\n }\n\n changeValue (value, initiator = 'api') {\n const withoutIf = this.getWithoutIfValueFromValue(value)\n const fittestIndex = this.getFittestIndex(withoutIf)\n const indexChanged = fittestIndex !== this.index\n this.index = fittestIndex\n this.activeInstance = this.instances[fittestIndex]\n this.activeInstance.register()\n\n this.instances.forEach((instance, index) => {\n instance.off('notifyParent')\n\n if (instance.children && isObject(value)) {\n instance.children.forEach((child) => {\n const shouldUpdateValue = child.isMultiple && hasOwn(value, child.getKey())\n\n if (shouldUpdateValue) {\n child.setValue(value[child.getKey()], true, 'api')\n }\n })\n }\n\n const startingValue = this.instanceStartingValues[index]\n const currentValue = instance.getValue()\n let instanceValue = value\n\n if (isObject(startingValue) && isObject(value)) {\n if (indexChanged) {\n instanceValue = overwriteExistingProperties(startingValue, withoutIf)\n this.jedison.updateInstancesWatchedData()\n } else {\n instanceValue = overwriteExistingProperties(currentValue, value)\n }\n\n if (initiator === 'api') {\n instanceValue = overwriteExistingProperties(currentValue, value)\n }\n }\n\n instance.setValue(instanceValue, false, initiator)\n\n instance.on('notifyParent', (initiator) => {\n const value = instance.getValue()\n this.changeValue(value, initiator)\n this.emit('notifyParent', initiator)\n this.emit('change', initiator)\n })\n })\n\n // Ensure active instance processes the value again for nullable editors\n // Only apply secondary setValue if we have nullable fields that might need it\n if (initiator === 'api' && this.hasNullableFields(this.activeInstance)) {\n this.activeInstance.setValue(value, false, 'secondary')\n }\n\n this.value = this.activeInstance.getValue()\n }\n\n getWithoutIfValueFromValue (value) {\n let withoutIf = this.instanceWithoutIf.getValue()\n\n if (isObject(withoutIf) && isObject(value)) {\n withoutIf = overwriteExistingProperties(withoutIf, value)\n return withoutIf\n }\n\n return value\n }\n\n switchInstance (index) {\n this.index = index\n this.activeInstance = this.instances[this.index]\n }\n\n traverseSchema (schema) {\n const schemaIf = getSchemaIf(schema)\n\n if (isSet(schemaIf)) {\n const schemaThen = getSchemaThen(schema)\n const schemaElse = getSchemaElse(schema)\n\n this.ifThenElseShemas.push({\n if: schemaIf,\n then: isSet(schemaThen) ? schemaThen : {}\n })\n\n this.ifThenElseShemas.push({\n if: schemaIf,\n else: isSet(schemaElse) ? schemaElse : {}\n })\n }\n }\n\n /**\n * Check if an instance has nullable fields in its schema or children\n */\n hasNullableFields (instance) {\n if (!instance) return false\n\n // Check if the instance itself has a nullable schema\n if (this.isNullableSchema(instance.schema)) {\n return true\n }\n\n // Check if any child instances have nullable schemas\n if (instance.children) {\n return instance.children.some(child => this.hasNullableFields(child))\n }\n\n return false\n }\n\n /**\n * Check if a schema is nullable (has x-format: 'number-nullable' or similar nullable formats)\n */\n isNullableSchema (schema) {\n if (!schema) return false\n\n // Check for x-format nullable indicators\n if (schema['x-format'] && schema['x-format'].includes('nullable')) {\n return true\n }\n\n // Check for type array containing null\n if (Array.isArray(schema.type) && schema.type.includes('null')) {\n return true\n }\n\n // Recursively check properties\n if (schema.properties) {\n return Object.values(schema.properties).some(prop => this.isNullableSchema(prop))\n }\n\n return false\n }\n\n /**\n * Returns the index of the instance that has less validation errors\n */\n getFittestIndex (value) {\n let fittestIndex = this.index\n\n this.ifThenElseShemas.forEach((schema, index) => {\n if (schema.if === true) {\n fittestIndex = 0\n } else if (schema.if === false) {\n fittestIndex = 1\n } else {\n const testSchema = clone(schema.if)\n\n if (isSet(this.schema.type)) {\n testSchema.type = this.schema.type\n }\n\n const ifValidator = new Jedison({\n schema: testSchema,\n data: value,\n refParser: this.jedison.refParser\n })\n\n const ifErrors = ifValidator.getErrors()\n ifValidator.destroy()\n\n if (ifErrors.length === 0 && schema.then) {\n fittestIndex = index\n }\n\n if (ifErrors.length > 0 && schema.else) {\n fittestIndex = index\n }\n }\n })\n\n return fittestIndex\n }\n\n destroy () {\n this.instances.forEach((instance) => {\n instance.destroy()\n })\n\n super.destroy()\n }\n}\n\nexport default InstanceIfThenElse\n","import Instance from './instance.js'\nimport {\n isSet,\n isArray,\n different,\n clone,\n mergeDeep\n} from '../helpers/utils.js'\nimport {\n getSchemaAnyOf, getSchemaDescription,\n getSchemaOneOf,\n getSchemaTitle,\n getSchemaType,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents a InstanceMultiple instance.\n * @extends Instance\n */\nclass InstanceMultiple extends Instance {\n prepare () {\n this.instances = []\n this.activeInstance = null\n this.index = 0\n this.schemas = []\n this.switcherOptionValues = []\n this.switcherOptionsLabels = []\n this.isMultiple = true\n\n this.on('set-value', () => {\n this.onSetValue()\n })\n\n const schemaType = getSchemaType(this.schema)\n\n if (isSet(getSchemaAnyOf(this.schema)) || isSet(getSchemaOneOf(this.schema))) {\n const schemasOf = isSet(getSchemaAnyOf(this.schema)) ? getSchemaAnyOf(this.schema) : getSchemaOneOf(this.schema)\n const schemaCopy = clone(this.schema)\n delete schemaCopy['anyOf']\n delete schemaCopy['oneOf']\n delete schemaCopy['options']\n\n schemasOf.forEach((schema, index) => {\n schema = { ...schemaCopy, ...schema }\n\n let switcherOptionsLabel = 'Option-' + (index + 1)\n const switcherTitle = getSchemaXOption(schema, 'switcherTitle')\n const schemaTitle = getSchemaTitle(schema)\n const schemaDescription = getSchemaDescription(schema)\n\n if (isSet(schemaDescription)) {\n switcherOptionsLabel = schemaDescription\n }\n\n if (isSet(schemaTitle)) {\n switcherOptionsLabel = schemaTitle\n }\n\n if (isSet(switcherTitle)) {\n switcherOptionsLabel = switcherTitle\n }\n\n this.switcherOptionValues.push(index)\n this.switcherOptionsLabels.push(switcherOptionsLabel)\n this.schemas.push(schema)\n })\n } else if (isArray(schemaType)) {\n schemaType.forEach((type, index) => {\n const schemaClone = mergeDeep(this.schema)\n\n const schema = {\n ...schemaClone,\n ...{ type: type, title: type[0].toUpperCase() + type.slice(1) }\n }\n\n if (isSet(schemaClone.title)) {\n schema.title = schemaClone.title\n }\n\n this.switcherOptionValues.push(index)\n this.switcherOptionsLabels.push(type.charAt(0).toUpperCase() + type.slice(1))\n\n this.schemas.push(schema)\n })\n } else if (schemaType === 'any' || !schemaType) {\n const schemaClone = clone(this.schema)\n\n this.schemas = [\n { ...schemaClone, ...{ type: 'string' } },\n { ...schemaClone, ...{ type: 'boolean' } },\n { ...schemaClone, ...{ type: 'integer' } },\n { ...schemaClone, ...{ type: 'number' } },\n { ...schemaClone, ...{ type: 'array' } },\n { ...schemaClone, ...{ type: 'object' } },\n { ...schemaClone, ...{ type: 'null' } }\n ]\n\n this.schemas.forEach((schema, index) => {\n this.switcherOptionValues.push(index)\n })\n\n this.switcherOptionsLabels = [\n 'String', 'Boolean', 'Integer', 'Number', 'Array', 'Object', 'Null'\n ]\n }\n\n this.schemas.forEach((schema) => {\n const instance = this.jedison.createInstance({\n jedison: this.jedison,\n schema: schema,\n path: this.path,\n parent: this.parent,\n value: clone(this.value)\n })\n\n if (isSet(this.value)) {\n instance.setValue(this.value, false)\n }\n\n instance.unregister()\n\n instance.off('notifyParent')\n\n instance.on('notifyParent', (initiator) => {\n this.value = this.activeInstance.getValue()\n this.emit('notifyParent', initiator)\n this.emit('change', initiator)\n })\n\n this.instances.push(instance)\n\n this.register()\n })\n\n const fittestIndex = this.getFittestIndex(this.value)\n this.switchInstance(fittestIndex, this.value)\n }\n\n switchInstance (index, value, initiator = 'api') {\n this.index = index\n this.activeInstance = this.instances[index]\n\n if (isSet(value)) {\n this.activeInstance.setValue(value, false, initiator)\n }\n\n this.setValue(this.activeInstance.getValue(), true, initiator)\n }\n\n onSetValue () {\n if (different(this.activeInstance.getValue(), this.value)) {\n const fittestIndex = this.getFittestIndex(this.value)\n this.switchInstance(fittestIndex, this.value)\n }\n }\n\n /**\n * Returns the index of the instance that has less validation errors\n */\n getFittestIndex (value) {\n let fittestIndex\n let championErrors\n\n for (let index = 0; index < this.instances.length; index++) {\n const instance = this.instances[index]\n const instanceErrors = this.jedison.validator.getErrors(value, instance.schema, instance.getKey(), instance.path)\n\n // If an instance has no errors, return its index immediately\n if (instanceErrors.length === 0) {\n fittestIndex = index\n break\n }\n\n if (fittestIndex === undefined || championErrors === undefined || instanceErrors.length < championErrors.length) {\n fittestIndex = index\n championErrors = instanceErrors\n }\n }\n\n return fittestIndex\n }\n\n destroy () {\n this.instances.forEach((instance) => {\n instance.destroy()\n })\n\n super.destroy()\n }\n}\n\nexport default InstanceMultiple\n","import Instance from './instance.js'\n\n/**\n * Represents a InstanceBoolean instance.\n * @extends Instance\n */\nclass InstanceBoolean extends Instance {}\n\nexport default InstanceBoolean\n","import Instance from './instance.js'\nimport { different, isSet, notSet, isObject, hasOwn, clone, isNumber } from '../helpers/utils.js'\nimport {\n getSchemaAdditionalProperties,\n getSchemaDependentRequired,\n getSchemaPatternProperties,\n getSchemaProperties,\n getSchemaRequired,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an InstanceObject instance.\n * @extends Instance\n */\nclass InstanceObject extends Instance {\n prepare () {\n this.properties = {}\n this.requiredProperties = new Set()\n\n const schemaProperties = getSchemaProperties(this.schema)\n const schemaRequired = getSchemaRequired(this.schema)\n\n if (isSet(schemaProperties)) {\n Object.keys(schemaProperties).forEach((key) => {\n const schema = schemaProperties[key]\n this.properties[key] = { schema }\n\n let musstCreateChild = true\n\n const optionsDeactivateNonRequired = this.jedison.options.deactivateNonRequired\n const deactivateNonRequired = getSchemaXOption(this.schema, 'deactivateNonRequired')\n const schemaDeactivateNonRequired = getSchemaXOption(schema, 'deactivateNonRequired')\n\n if (!this.isRequired(key) && isSet(optionsDeactivateNonRequired) && optionsDeactivateNonRequired === true) {\n musstCreateChild = false\n }\n\n if (!this.isRequired(key) && isSet(deactivateNonRequired) && deactivateNonRequired === true) {\n musstCreateChild = false\n }\n\n if (!this.isRequired(key) && isSet(schemaDeactivateNonRequired) && schemaDeactivateNonRequired === true) {\n musstCreateChild = false\n }\n\n if (musstCreateChild) {\n this.createChild(schema, key)\n }\n })\n }\n\n // Add properties listed in schema required too if not present in schema properties\n if (isSet(schemaRequired) && this.jedison.isEditor && this.jedison.options.enforceRequired === true) {\n schemaRequired.forEach((requiredProperty) => {\n this.requiredProperties.add(requiredProperty)\n\n if (!hasOwn(this.properties, requiredProperty)) {\n this.properties[requiredProperty] = {}\n this.createChild({}, requiredProperty)\n }\n })\n }\n\n this.refreshInstances()\n\n this.on('set-value', (value, initiator) => {\n this.addMissingRequiredPropertiesToValue(value)\n this.removeNotListedPropertiesFromValue(value)\n this.refreshInstances(initiator)\n })\n }\n\n removeNotListedPropertiesFromValue (value) {\n const schemaEnforceAdditionalProperties = getSchemaXOption(this.schema, 'enforceAdditionalProperties')\n const enforceAdditionalProperties = isSet(schemaEnforceAdditionalProperties) ? schemaEnforceAdditionalProperties : this.jedison.options.enforceAdditionalProperties\n const schemaAdditionalProperties = getSchemaAdditionalProperties(this.schema)\n const schemaPatternProperties = getSchemaPatternProperties(this.schema) || {}\n\n if (this.jedison.isEditor && enforceAdditionalProperties && isSet(schemaAdditionalProperties) && schemaAdditionalProperties === false) {\n Object.keys(value).forEach((propertyName) => {\n const matchesPattern = Object.keys(schemaPatternProperties).some(pattern => new RegExp(pattern).test(propertyName))\n\n if (!hasOwn(this.properties, propertyName) && !matchesPattern) {\n console.warn('deleting', propertyName)\n delete value[propertyName]\n }\n })\n }\n }\n\n addMissingRequiredPropertiesToValue (value) {\n const enforceRequired = getSchemaXOption(this.schema, 'enforceRequired') ?? this.jedison.options.enforceRequired\n\n if (this.jedison.isEditor && enforceRequired) {\n this.requiredProperties.forEach((propertyName) => {\n if (!hasOwn(value, propertyName)) {\n value[propertyName] = this.getChild(propertyName).getValue()\n }\n })\n }\n }\n\n /**\n * Returns true if the property is required\n */\n isRequired (property) {\n const schemaRequired = getSchemaRequired(this.schema)\n const inSchemaRequired = isSet(schemaRequired) && schemaRequired.includes(property)\n const inSchemaDependentRequired = this.isDependentRequired(property)\n\n return inSchemaRequired || inSchemaDependentRequired\n }\n\n /**\n * Returns true if the property is dependent required\n */\n isDependentRequired (property) {\n const dependentRequired = getSchemaDependentRequired(this.schema)\n\n if (isSet(dependentRequired)) {\n let missingProperties = []\n\n Object.keys(dependentRequired).forEach((key) => {\n if (isSet(this.value[key])) {\n const requiredProperties = dependentRequired[key]\n\n missingProperties = requiredProperties.filter((property) => {\n return !hasOwn(this.value, property)\n })\n }\n })\n\n return missingProperties.includes(property)\n }\n\n return false\n }\n\n createChild (schema, key, value, activate = false) {\n const instance = this.jedison.createInstance({\n jedison: this.jedison,\n schema: schema,\n path: this.path + this.jedison.pathSeparator + key,\n parent: this,\n value: clone(value)\n })\n\n this.children.push(instance)\n this.value[key] = instance.getValue()\n\n const deactivateNonRequired = getSchemaXOption(this.schema, 'deactivateNonRequired') ?? this.jedison.options.deactivateNonRequired\n\n if (!this.isRequired(key) && isSet(deactivateNonRequired) && deactivateNonRequired === true && !activate) {\n instance.deactivate()\n }\n\n this.onChildChange()\n\n return instance\n }\n\n deleteChild (key) {\n for (let i = this.children.length - 1; i >= 0; i--) {\n const instance = this.children[i]\n if (instance.getKey() === key) {\n instance.destroy()\n this.children.splice(i, 1)\n this.onChildChange()\n }\n }\n }\n\n getChild (key) {\n return this.children.find((instance) => {\n return key === instance.getKey().split(this.jedison.pathSeparator).pop()\n })\n }\n\n getPropertySchema (propertyName) {\n let schema\n const schemaAdditionalProperties = getSchemaAdditionalProperties(this.schema)\n const schemaProperties = getSchemaProperties(this.schema)\n const schemaPatternProperties = getSchemaPatternProperties(this.schema)\n\n // Determine the appropriate schema\n if (isSet(schemaProperties) && hasOwn(schemaProperties, propertyName)) {\n // If the propertyName is explicitly defined in `properties`, use it\n schema = schemaProperties[propertyName]\n } else if (isSet(schemaPatternProperties)) {\n // If no exact match in `properties`, check if it matches any pattern in `patternProperties`\n Object.keys(schemaPatternProperties).forEach((pattern) => {\n const regexp = new RegExp(pattern)\n if (regexp.test(propertyName)) {\n schema = schemaPatternProperties[pattern]\n }\n })\n }\n\n if (notSet(schema) && isSet(schemaAdditionalProperties)) {\n // If no match was found in `properties` or `patternProperties`, use `additionalProperties`\n schema = schemaAdditionalProperties\n }\n\n if (notSet(schema)) {\n schema = {}\n }\n\n return schema\n }\n\n onChildChange (initiator) {\n const value = {}\n\n this.children.forEach((child) => {\n if (child.isActive) {\n const propertyName = child.getKey()\n\n if (propertyName === '__proto__') {\n Object.defineProperty(value, propertyName, {\n value: child.getValue(),\n enumerable: true\n })\n } else {\n value[propertyName] = child.getValue()\n }\n }\n })\n\n this.value = value\n this.jedison.emit('instance-change', this, initiator)\n this.emit('notifyParent', initiator)\n this.emit('change', initiator)\n }\n\n /**\n * Sorts the children of the current instance based on their `propertyOrder` value in ascending order.\n * The sorting is done using the `propertyOrder` obtained from each child's schema, which should be a number.\n * If a child does not have a valid `propertyOrder` (i.e., the value is not a number), it will be placed after the child with a valid `propertyOrder`.\n * @returns {void} This function modifies the `children` array of the instance in place.\n */\n sortChildrenByPropertyOrder () {\n this.children = this.children.sort((a, b) => {\n const propertyOrderA = getSchemaXOption(a.schema, 'propertyOrder')\n const propertyOrderB = getSchemaXOption(b.schema, 'propertyOrder')\n\n const isValidNumberA = isNumber(propertyOrderA)\n const isValidNumberB = isNumber(propertyOrderB)\n\n if (!isValidNumberA && isValidNumberB) {\n return 1\n }\n\n if (isValidNumberA && !isValidNumberB) {\n return -1\n }\n\n if (propertyOrderA < propertyOrderB) {\n return -1\n }\n\n if (propertyOrderA > propertyOrderB) {\n return 1\n }\n\n return 0\n })\n }\n\n refreshInstances (initiator) {\n const value = this.getValue()\n\n if (!isObject(value)) {\n return\n }\n\n Object.keys(value).forEach((propertyName) => {\n const child = this.getChild(propertyName)\n\n // If a value has already a child instance\n if (child) {\n child.activate()\n const oldValue = child.getValue()\n const newValue = value[child.getKey()]\n\n // update child value if the old value and the new value are different\n if (different(oldValue, newValue)) {\n const finalValue = child.setValue(newValue, false, initiator)\n // Update the value with the final value after constraint enforcement\n value[child.getKey()] = finalValue\n }\n } else {\n // create new child instance for the new value entry having the value as default\n const schema = this.getPropertySchema(propertyName)\n\n this.createChild(schema, propertyName, value[propertyName], true)\n }\n })\n\n // remove any children that are not included in the value\n for (let i = this.children.length - 1; i >= 0; i--) {\n const instance = this.children[i]\n const propertyName = instance.getKey()\n if (notSet(value[propertyName])) {\n if (this.getChild(propertyName)) {\n instance.deactivate()\n } else {\n this.deleteChild(propertyName)\n }\n }\n }\n\n this.sortChildrenByPropertyOrder()\n\n // Update the object's value with the corrected values after constraint enforcement\n this.value = value\n }\n}\n\nexport default InstanceObject\n","import Instance from './instance.js'\nimport { isSet, clone, isArray } from '../helpers/utils.js'\nimport {\n getSchemaDefault,\n getSchemaItems,\n getSchemaMinItems,\n getSchemaPrefixItems,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an InstanceArray instance.\n * @extends Instance\n */\nclass InstanceArray extends Instance {\n prepare () {\n const schemaMinItems = getSchemaMinItems(this.schema, 'minItems')\n const schemaEnforceMinItems = getSchemaXOption(this.schema, 'enforceMinItems')\n const enforceMinItems = isSet(schemaEnforceMinItems) ? schemaEnforceMinItems : this.jedison.options.enforceMinItems\n const isEditor = this.jedison.isEditor\n const hasEnforceMinItems = isSet(enforceMinItems) && enforceMinItems === true\n const hasMinItems = isSet(schemaMinItems)\n\n if (isEditor && hasEnforceMinItems && hasMinItems) {\n for (let i = 0; i < schemaMinItems; i++) {\n this.addItem()\n }\n }\n\n this.refreshChildren()\n\n this.on('set-value', () => {\n this.refreshChildren()\n })\n }\n\n createItemInstance (index) {\n let schema\n const itemsCount = this.children.length\n const schemaItems = getSchemaItems(this.schema)\n const schemaPrefixItems = getSchemaPrefixItems(this.schema)\n schema = isSet(schemaItems) ? schemaItems : {}\n\n const hasPrefixItemsSchema = isSet(schemaPrefixItems) && isSet(schemaPrefixItems[itemsCount])\n\n if (hasPrefixItemsSchema) {\n schema = schemaPrefixItems[itemsCount]\n }\n\n return this.jedison.createInstance({\n jedison: this.jedison,\n schema: schema,\n path: this.path + this.jedison.pathSeparator + itemsCount,\n parent: this,\n arrayTemplateData: {\n i0: index,\n i1: (index + 1)\n }\n })\n }\n\n setDefaultValue () {\n const schemaDefault = getSchemaDefault(this.schema)\n\n if (isSet(schemaDefault)) {\n this.setValue(schemaDefault)\n }\n }\n\n move (fromIndex, toIndex, initiator) {\n const value = clone(this.getValue())\n const item = value[fromIndex]\n value.splice(fromIndex, 1)\n value.splice(toIndex, 0, item)\n this.setValue(value, true, initiator)\n this.emit('item-move', initiator)\n this.jedison.emit('item-move', initiator)\n }\n\n addItem (initiator) {\n const tempEditor = this.createItemInstance()\n const value = clone(this.getValue())\n value.push(tempEditor.getValue())\n tempEditor.destroy()\n this.setValue(value, true, initiator)\n const instance = this.children[this.children.length - 1]\n this.emit('item-add', initiator, instance)\n this.jedison.emit('item-add', initiator, instance)\n }\n\n deleteItem (itemIndex, initiator) {\n const currentValue = clone(this.getValue())\n const newValue = currentValue.filter((item, index) => index !== itemIndex)\n this.setValue(newValue, true, initiator)\n this.emit('item-delete', initiator)\n this.jedison.emit('item-delete', initiator)\n }\n\n onChildChange (initiator) {\n const value = []\n\n this.children.forEach((child) => {\n value.push(child.getValue())\n })\n\n this.value = value\n this.jedison.emit('instance-change', this, initiator)\n this.emit('notifyParent', initiator)\n this.emit('change', initiator)\n }\n\n refreshChildren () {\n this.children = []\n\n const value = this.getValue()\n\n if (!isArray(value)) {\n return\n }\n\n const correctedValues = []\n value.forEach((itemValue, index) => {\n const child = this.createItemInstance(index)\n this.children.push(child)\n const finalValue = child.setValue(itemValue, false)\n correctedValues.push(finalValue)\n })\n\n // Update the array's value with constraint-enforced values\n this.value = correctedValues\n }\n}\n\nexport default InstanceArray\n","import Instance from './instance.js'\n\n/**\n * Represents a InstanceString instance.\n * @extends Instance\n */\nclass InstanceString extends Instance {}\n\nexport default InstanceString\n","import Instance from './instance.js'\n\n/**\n * Represents a InstanceNumber instance.\n * @extends Instance\n */\nclass InstanceNumber extends Instance {\n}\n\nexport default InstanceNumber\n","import Instance from './instance.js'\n\n/**\n * Represents a InstanceNull instance.\n * @extends Instance\n */\nclass InstanceNull extends Instance {\n}\n\nexport default InstanceNull\n","export const glyphicons = {\n properties: 'glyphicon glyphicon-list',\n delete: 'glyphicon glyphicon-trash',\n add: 'glyphicon glyphicon-plus',\n moveUp: 'glyphicon glyphicon-arrow-up',\n moveDown: 'glyphicon glyphicon-arrow-down',\n collapse: 'glyphicon glyphicon-chevron-down',\n expand: 'glyphicon glyphicon-plus', // Expand set to plus\n drag: 'glyphicon glyphicon-th',\n info: 'glyphicon glyphicon-question-sign',\n close: 'glyphicon glyphicon-remove',\n edit: 'glyphicon glyphicon-pencil',\n save: 'glyphicon glyphicon-floppy-disk'\n}\n\nexport const bootstrapIcons = {\n properties: 'bi bi-card-list',\n delete: 'bi bi-trash2',\n add: 'bi bi-plus',\n moveUp: 'bi bi-arrow-up',\n moveDown: 'bi bi-arrow-down',\n collapse: 'bi bi-chevron-down',\n expand: 'bi bi-plus',\n drag: 'bi bi-grip-vertical',\n info: 'bi bi-question-circle',\n close: 'bi bi-x',\n edit: 'bi bi-pencil',\n save: 'bi bi-floppy'\n}\n\nexport const fontAwesome3 = {\n properties: 'icon-list',\n delete: 'icon-trash',\n add: 'icon-plus',\n moveUp: 'icon-arrow-up',\n moveDown: 'icon-arrow-down',\n collapse: 'icon-chevron-down',\n expand: 'icon-plus',\n drag: 'icon-th',\n info: 'icon-question-sign',\n close: 'icon-remove',\n edit: 'icon-pencil',\n save: 'icon-save'\n}\n\nexport const fontAwesome4 = {\n properties: 'fa fa-list',\n delete: 'fa fa-trash-o',\n add: 'fa fa-plus',\n moveUp: 'fa fa-arrow-up',\n moveDown: 'fa fa-arrow-down',\n collapse: 'fa fa-chevron-down',\n expand: 'fa fa-plus',\n drag: 'fa fa-th',\n info: 'fa fa-question-circle',\n close: 'fa fa-times',\n edit: 'fa fa-pencil',\n save: 'fa fa-floppy-o'\n}\n\nexport const fontAwesome5 = {\n properties: 'fas fa-list',\n delete: 'fas fa-trash',\n add: 'fas fa-plus',\n moveUp: 'fas fa-arrow-up',\n moveDown: 'fas fa-arrow-down',\n collapse: 'fas fa-chevron-down',\n expand: 'fas fa-plus',\n drag: 'fas fa-grip-vertical',\n info: 'fas fa-question-circle',\n close: 'fas fa-times',\n edit: 'fas fa-pencil-alt',\n save: 'fas fa-save'\n}\n\nexport const fontAwesome6 = {\n properties: 'fa-solid fa-list',\n delete: 'fa-solid fa-trash',\n add: 'fa-solid fa-plus',\n moveUp: 'fa-solid fa-arrow-up',\n moveDown: 'fa-solid fa-arrow-down',\n collapse: 'fa-solid fa-chevron-down',\n expand: 'fa-solid fa-plus',\n drag: 'fa-solid fa-grip-vertical',\n info: 'fa-solid fa-circle-question',\n close: 'fa-solid fa-xmark',\n edit: 'fa-solid fa-pencil',\n save: 'fa-solid fa-floppy-disk'\n}\n","import Editor from './editor.js'\n\n/**\n * Represents a EditorBoolean instance.\n * @extends Editor\n */\nclass EditorBoolean extends Editor {\n sanitize (value) {\n return Boolean(value)\n }\n}\n\nexport default EditorBoolean\n","import EditorBoolean from './boolean.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorRadios instance.\n * @extends EditorBooleanCheckbox\n */\nclass EditorRadios extends EditorBoolean {\n static resolves (schema) {\n return getSchemaType(schema) === 'boolean' && (getSchemaXOption(schema, 'format') === 'radios' || getSchemaXOption(schema, 'format') === 'radios-inline')\n }\n\n build () {\n this.control = this.theme.getRadiosControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: ['false', 'true'],\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || ['false', 'true'],\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n inline: getSchemaXOption(this.instance.schema, 'format') === 'radios-inline',\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableRadiosControl(this.control)\n }\n\n addEventListeners () {\n this.control.radios.forEach((radio) => {\n radio.addEventListener('change', () => {\n const radioValue = radio.value === 'true'\n this.instance.setValue(radioValue, true, 'user')\n })\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.radios.forEach((radio) => {\n const radioValue = radio.value === 'true'\n radio.checked = radioValue === this.instance.getValue()\n })\n }\n}\n\nexport default EditorRadios\n","import EditorBoolean from './boolean.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorBooleanSelect instance.\n * @extends EditorBooleanCheckbox\n */\nclass EditorBooleanSelect extends EditorBoolean {\n static resolves (schema) {\n return getSchemaType(schema) === 'boolean'\n }\n\n build () {\n this.control = this.theme.getSelectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: ['false', 'true'],\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || ['false', 'true'],\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableSelectControl(this.control)\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n const value = this.control.input.value === 'true'\n this.instance.setValue(value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue() === true ? 'true' : 'false'\n }\n}\n\nexport default EditorBooleanSelect\n","import EditorBoolean from './boolean.js'\nimport { getSchemaXOption, getSchemaType } from '../helpers/schema.js'\n\n/**\n * Represents a EditorBooleanCheckbox instance.\n * @extends Editor\n */\nclass EditorBooleanCheckbox extends EditorBoolean {\n static resolves (schema) {\n return getSchemaType(schema) === 'boolean' && getSchemaXOption(schema, 'format') === 'checkbox'\n }\n\n build () {\n this.control = this.theme.getCheckboxControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable (td) {\n this.theme.adaptForTableCheckboxControl(this.control, td)\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n this.instance.setValue(this.control.input.checked, true, 'user')\n })\n }\n\n sanitize (value) {\n return Boolean(value)\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.checked = this.instance.getValue()\n }\n}\n\nexport default EditorBooleanCheckbox\n","import Editor from './editor.js'\n\n/**\n * Represents a EditorString instance.\n * @extends Editor\n */\nclass EditorString extends Editor {\n sanitize (value) {\n return String(value)\n }\n}\n\nexport default EditorString\n","import EditorString from './string.js'\nimport { getSchemaEnum, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringRadios instance.\n * @extends EditorString\n */\nclass EditorStringRadios extends EditorString {\n static resolves (schema) {\n return getSchemaType(schema) === 'string' && (getSchemaXOption(schema, 'format') === 'radios' || getSchemaXOption(schema, 'format') === 'radios-inline')\n }\n\n build () {\n this.control = this.theme.getRadiosControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema),\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || getSchemaEnum(this.instance.schema),\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n inline: getSchemaXOption(this.instance.schema, 'format') === 'radios-inline',\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableRadiosControl(this.control)\n }\n\n addEventListeners () {\n this.control.radios.forEach((radio) => {\n radio.addEventListener('change', () => {\n this.instance.setValue(radio.value, true, 'user')\n })\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.radios.forEach((radio) => {\n radio.checked = (radio.value === this.instance.getValue())\n })\n }\n}\n\nexport default EditorStringRadios\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaEnum, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringSelect instance.\n * @extends EditorString\n */\nclass EditorStringSelect extends EditorString {\n static resolves (schema) {\n return getSchemaType(schema) === 'string' && isSet(getSchemaEnum(schema))\n }\n\n build () {\n this.control = this.theme.getSelectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema),\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || getSchemaEnum(this.instance.schema),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableSelectControl(this.control)\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue()\n }\n}\n\nexport default EditorStringSelect\n","import EditorString from './string.js'\nimport { getSchemaXOption, getSchemaType } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringTextarea instance.\n * @extends EditorString\n */\nclass EditorStringTextarea extends EditorString {\n static resolves (schema) {\n return getSchemaType(schema) === 'string' && getSchemaXOption(schema, 'format') === 'textarea'\n }\n\n build () {\n this.control = this.theme.getTextareaControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableTextareaControl(this.control)\n }\n\n addEventListeners () {\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue()\n }\n}\n\nexport default EditorStringTextarea\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringAwesomplete instance.\n * @extends EditorString\n */\nclass EditorStringAwesomplete extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'awesomplete' &&\n window.Awesomplete &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const awesompleteOptions = getSchemaXOption(this.instance.schema, 'awesomplete') ?? {}\n this.awesomplete = new window.Awesomplete(this.control.input, awesompleteOptions)\n this.control.container.querySelector('.awesomplete').style.display = 'block'\n } catch (e) {\n console.error('Awesomplete is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.control.input.addEventListener('awesomplete-selectcomplete', () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue()\n }\n\n destroy () {\n this.awesomplete.destroy()\n super.destroy()\n }\n}\n\nexport default EditorStringAwesomplete\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Emoji picker editor using Emoji Button library.\n * @extends EditorString\n */\nclass EditorStringEmojiButton extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'emojiButton' &&\n window.EmojiButton &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getInputControl({\n type: 'button',\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n this.control.input.classList.add('jedi-emoji-button')\n this.control.input.value = '😀'\n\n const emojiButtonOptions = getSchemaXOption(this.instance.schema, 'emojiButton') ?? {}\n\n const options = Object.assign({\n theme: 'auto',\n autoHide: true,\n showPreview: false,\n showSearch: true,\n zIndex: 10000,\n position: 'auto'\n }, emojiButtonOptions)\n\n this.emojiButton = new window.EmojiButton(options)\n }\n\n addEventListeners () {\n this.emojiButton.on('emoji', emoji => {\n this.control.input.value = emoji\n let value = emoji\n\n if (typeof emoji === 'object') {\n value = emoji.emoji\n }\n\n this.instance.setValue(value, true, 'user')\n })\n\n this.control.input.addEventListener('click', () => {\n this.emojiButton.togglePicker(this.control.input)\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.input.value = this.instance.getValue()\n }\n\n destroy () {\n if (this.emojiButton) {\n this.emojiButton = null\n }\n\n super.destroy()\n }\n}\n\nexport default EditorStringEmojiButton\n","import EditorString from './string.js'\nimport { getSchemaXOption, getSchemaType } from '../helpers/schema.js'\n\n/**\n * Represents a EditorString instance.\n * @extends Editor\n */\nclass EditorStringInput extends EditorString {\n static resolves (schema) {\n return getSchemaType(schema) === 'string'\n }\n\n static getTypes () {\n return ['hidden', 'color', 'date', 'datetime-local', 'email', 'number', 'month', 'password', 'search', 'time', 'tel', 'text', 'url', 'week']\n }\n\n build () {\n const optionFormat = getSchemaXOption(this.instance.schema, 'format')\n\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: EditorStringInput.getTypes().includes(optionFormat) ? optionFormat : 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden') || optionFormat === 'hidden',\n info: this.getInfo()\n })\n\n // fix color picker bug\n if (optionFormat === 'color' && this.instance.value.length === 0) {\n this.instance.setValue('#000000', false, 'user')\n }\n }\n\n adaptForTable () {\n this.theme.adaptForTableInputControl(this.control)\n }\n\n addEventListeners () {\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n sanitize (value) {\n return String(value)\n }\n\n refreshUI () {\n super.refreshUI()\n this.control.input.value = this.instance.getValue()\n }\n}\n\nexport default EditorStringInput\n","import Editor from './editor.js'\nimport { getSchemaType } from '../helpers/schema.js'\n\n/**\n * Represents a EditorNumber instance.\n * @extends Editor\n */\nclass EditorNumber extends Editor {\n sanitize (value) {\n if (getSchemaType(this.instance.schema) === 'integer') {\n return Math.floor(Number(value))\n } else {\n return Number(value)\n }\n }\n}\n\nexport default EditorNumber\n","import EditorNumber from './number.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaEnum, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorNumberRadios instance.\n * @extends EditorNumber\n */\nclass EditorNumberRadios extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const schemaEnum = getSchemaEnum(schema)\n const optionFormat = getSchemaXOption(schema, 'format')\n const typeIsNumeric = schemaType === 'number' || schemaType === 'integer'\n return typeIsNumeric && isSet(schemaEnum) && (optionFormat === 'radios' || optionFormat === 'radios-inline')\n }\n\n build () {\n this.control = this.theme.getRadiosControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema),\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || getSchemaEnum(this.instance.schema),\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n inline: getSchemaXOption(this.instance.schema, 'format') === 'radios-inline',\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableRadiosControl(this.control)\n }\n\n addEventListeners () {\n this.control.radios.forEach((radio) => {\n radio.addEventListener('change', () => {\n const value = this.sanitize(radio.value)\n this.instance.setValue(value, true, 'user')\n })\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.radios.forEach((radio) => {\n radio.checked = (Number(radio.value) === Number(this.instance.getValue()))\n })\n }\n}\n\nexport default EditorNumberRadios\n","import EditorNumber from './number.js'\nimport { isNumber, isSet } from '../helpers/utils.js'\nimport { getSchemaEnum, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorNumberSelect instance.\n * @extends EditorNumber\n */\nclass EditorNumberSelect extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const typeIsNumeric = schemaType === 'number' || schemaType === 'integer'\n return typeIsNumeric && isSet(getSchemaEnum(schema))\n }\n\n build () {\n this.control = this.theme.getSelectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema),\n titles: getSchemaXOption(this.instance.schema, 'enumTitles') || getSchemaEnum(this.instance.schema),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n }\n\n adaptForTable () {\n this.theme.adaptForTableSelectControl(this.control)\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n const value = this.sanitize(this.control.input.value)\n this.instance.setValue(value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n const value = this.instance.getValue()\n\n if (isNumber(value)) {\n this.control.input.value = this.instance.getValue()\n }\n }\n}\n\nexport default EditorNumberSelect\n","import EditorNumber from './number.js'\nimport { isNumber, isSet } from '../helpers/utils.js'\nimport {\n getSchemaXOption,\n getSchemaType, getSchemaMinimum, getSchemaMaximum\n} from '../helpers/schema.js'\n\n/**\n * Represents a EditorNumber instance.\n * @extends EditorNumber\n */\nclass EditorNumberInput extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n return schemaType === 'number' || schemaType === 'integer'\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'number',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden') || getSchemaXOption(this.instance.schema, 'format') === 'hidden',\n info: this.getInfo()\n })\n\n this.control.input.setAttribute('step', 'any')\n\n const useConstraintAttributes = getSchemaXOption(this.instance.schema, 'useConstraintAttributes') ?? this.instance.jedison.options.useConstraintAttributes\n\n if (useConstraintAttributes === true) {\n const schemaMinimum = getSchemaMinimum(this.instance.schema)\n const schemaMaximum = getSchemaMaximum(this.instance.schema)\n\n if (isSet(schemaMinimum)) {\n this.control.input.setAttribute('min', schemaMinimum)\n }\n\n if (isSet(schemaMaximum)) {\n this.control.input.setAttribute('max', schemaMaximum)\n }\n }\n }\n\n adaptForTable () {\n this.theme.adaptForTableInputControl(this.control)\n }\n\n addEventListeners () {\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n const value = this.sanitize(this.control.input.value)\n this.instance.setValue(value, true, 'user')\n })\n\n this.control.input.addEventListener('focus', () => {\n if (this.control.input.value === '0') {\n this.control.input.value = this.instance.getValue().toString()\n }\n })\n\n this.control.input.addEventListener('blur', () => {\n this.refreshUI()\n })\n }\n\n refreshUI () {\n super.refreshUI()\n const value = this.instance.getValue()\n\n if (isNumber(value)) {\n this.control.input.value = value\n }\n }\n}\n\nexport default EditorNumberInput\n","import EditorNumberInput from './number-input.js'\nimport {\n isArray,\n isNumber,\n isSet\n} from '../helpers/utils.js'\nimport {\n getSchemaXOption,\n getSchemaType\n} from '../helpers/schema.js'\n\n/**\n * Represents a EditorNumberInputNullable instance.\n * @extends Editor\n */\nclass EditorNumberInputNullable extends EditorNumberInput {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const format = getSchemaXOption(schema, 'format')\n return isSet(format) &&\n format === 'number-nullable' &&\n isSet(schemaType) &&\n isArray(schemaType) &&\n schemaType.length === 2 &&\n schemaType.includes('null') &&\n (schemaType.includes('number') || schemaType.includes('integer'))\n }\n\n addEventListeners () {\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n const value = this.sanitize(this.control.input.value)\n this.instance.setValue(value, true, 'user')\n })\n }\n\n sanitize (value) {\n if (value === '') {\n return null\n }\n\n const schemaType = getSchemaType(this.instance.schema)\n\n if (schemaType.includes('integer')) {\n return Math.floor(Number(value))\n } else {\n return Number(value)\n }\n }\n\n refreshUI () {\n super.refreshUI()\n const value = this.instance.getValue()\n\n if (value === null) {\n this.control.input.value = ''\n }\n\n if (isNumber(value)) {\n const schemaType = getSchemaType(this.instance.schema)\n\n if (schemaType.includes('integer')) {\n this.control.input.value = Math.floor(Number(value))\n } else {\n this.control.input.value = value\n }\n }\n }\n}\n\nexport default EditorNumberInputNullable\n","import Editor from './editor.js'\nimport {\n equal,\n hasOwn,\n isObject,\n isSet, isString,\n pathToAttribute\n} from '../helpers/utils.js'\nimport {\n getSchemaAdditionalProperties,\n getSchemaTitle, getSchemaType,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an EditorObject instance.\n * @extends Editor\n */\nclass EditorObject extends Editor {\n static resolves (schema) {\n return getSchemaType(schema) === 'object'\n }\n\n build () {\n this.propertyActivators = {}\n let addProperty = true\n const additionalProperties = getSchemaAdditionalProperties(this.instance.schema)\n\n if (isSet(additionalProperties) && additionalProperties === false) {\n addProperty = false\n }\n\n let enablePropertiesToggle = false\n\n if (isSet(this.instance.jedison.options.enablePropertiesToggle)) {\n enablePropertiesToggle = this.instance.jedison.options.enablePropertiesToggle\n }\n\n const schemaEnablePropertiesToggle = getSchemaXOption(this.instance.schema, 'enablePropertiesToggle')\n\n if (isSet(schemaEnablePropertiesToggle)) {\n enablePropertiesToggle = schemaEnablePropertiesToggle\n }\n\n this.control = this.theme.getObjectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n id: this.getIdFromPath(this.instance.path),\n enablePropertiesToggle: enablePropertiesToggle,\n addProperty: addProperty,\n enableCollapseToggle: getSchemaXOption(this.instance.schema, 'enableCollapseToggle') ?? this.instance.jedison.options.enableCollapseToggle,\n startCollapsed: getSchemaXOption(this.instance.schema, 'startCollapsed') ?? this.instance.jedison.options.startCollapsed,\n readOnly: this.instance.isReadOnly(),\n info: this.getInfo(),\n editJsonData: getSchemaXOption(this.instance.schema, 'editJsonData') ?? this.instance.jedison.options.editJsonData,\n propertiesToggleContent: getSchemaXOption(this.instance.schema, 'propertiesToggleContent') ?? this.instance.jedison.translator.translate('propertiesToggle'),\n collapseToggleContent: getSchemaXOption(this.instance.schema, 'collapseToggleContent') ?? this.instance.jedison.translator.translate('collapseToggle'),\n addPropertyContent: getSchemaXOption(this.instance.schema, 'addPropertyContent') ?? this.instance.jedison.translator.translate('objectAddProperty')\n })\n\n this.control.jsonData.input.value = JSON.stringify(this.instance.getValue(), null, 2)\n }\n\n addEventListeners () {\n this.control.addPropertyBtn.addEventListener('click', () => {\n const propertyName = this.control.addPropertyControl.input.value.split(' ').join('')\n\n const propertyNameEmpty = propertyName.length === 0\n\n if (propertyNameEmpty) {\n return\n }\n\n const propertyExist = isSet(this.instance.value[propertyName])\n\n if (propertyExist) {\n return\n }\n\n const schema = this.instance.getPropertySchema(propertyName)\n\n const child = this.instance.createChild(schema, propertyName)\n child.activate()\n this.instance.setValue(this.instance.value, true, 'user')\n this.control.addPropertyControl.input.value = ''\n\n const ariaLive = this.control.ariaLive\n const schemaTitle = getSchemaTitle(child.schema)\n const label = isSet(schemaTitle) ? schemaTitle : propertyName\n const ariaLiveMessage = this.theme.getAriaLiveMessage()\n ariaLiveMessage.textContent = label + ' ' + this.instance.jedison.translator.translate('objectPropertyAdded')\n ariaLive.appendChild(ariaLiveMessage)\n\n // keeps dialog open\n this.control.propertiesContainer.close()\n this.control.propertiesContainer.showModal()\n })\n\n this.control.jsonData.saveBtn.addEventListener('click', () => {\n try {\n const inputValue = JSON.parse(this.control.jsonData.input.value)\n this.instance.setValue(inputValue, true, 'user')\n this.control.jsonData.dialog.close()\n } catch (error) {\n // eslint-disable-next-line no-undef\n alert('Invalid JSON')\n }\n })\n\n this.control.jsonData.toggle.addEventListener('click', () => {\n this.refreshJsonDataInputSize()\n })\n }\n\n sanitize (value) {\n if (isObject(value)) {\n return value\n }\n\n return {}\n }\n\n getErrorFeedback (config) {\n return this.theme.getAlert(config)\n }\n\n refreshPropertiesSlot () {\n const schemaOptionEnablePropertiesToggle = getSchemaXOption(this.instance.schema, 'enablePropertiesToggle') ?? this.instance.jedison.options.enablePropertiesToggle\n\n if (equal(schemaOptionEnablePropertiesToggle, true)) {\n const declaredProperties = Object.keys(this.instance.properties)\n const instanceProperties = this.instance.children.map((child) => child.getKey())\n const properties = [...new Set([...declaredProperties, ...instanceProperties])]\n\n while (this.control.propertiesActivators.firstChild) {\n this.control.propertiesActivators.removeChild(this.control.propertiesActivators.firstChild)\n }\n\n const {\n container: defaultGroupContainer,\n group: defaultGroup\n } = this.theme.getPropertiesGroup()\n\n this.control.propertiesActivators.appendChild(defaultGroupContainer)\n\n const propertiesGroups = {}\n\n properties.forEach((property) => {\n const isRequired = this.instance.isRequired(property)\n const ariaLive = this.control.ariaLive\n const schema = this.instance.getPropertySchema(property)\n const schemaTitle = getSchemaTitle(schema)\n const path = this.instance.path + this.instance.jedison.pathSeparator + property\n const id = pathToAttribute(path) + '-activator'\n const title = isSet(schemaTitle) ? schemaTitle : property\n\n const checkboxControl = this.theme.getCheckboxControl({\n id: id,\n title: title,\n titleHidden: false\n })\n\n const checkbox = checkboxControl.input\n this.propertyActivators[property] = checkbox\n\n checkbox.addEventListener('change', () => {\n ariaLive.innerHTML = ''\n const ariaLiveMessage = this.theme.getAriaLiveMessage()\n\n if (checkbox.checked) {\n const child = this.instance.getChild(property)\n\n if (!child) {\n this.instance.createChild(schema, property)\n }\n\n this.instance.getChild(property).activate()\n ariaLiveMessage.textContent = title + ' ' + this.instance.jedison.translator.translate('objectPropertyAdded')\n ariaLive.appendChild(ariaLiveMessage)\n } else {\n this.instance.getChild(property).deactivate()\n ariaLiveMessage.textContent = title + ' ' + this.instance.jedison.translator.translate('objectPropertyRemoved')\n ariaLive.appendChild(ariaLiveMessage)\n }\n\n // keeps dialog open\n this.control.propertiesContainer.close()\n this.control.propertiesContainer.showModal()\n })\n\n const propGroup = getSchemaXOption(schema, 'propGroup')\n\n if (isSet(propGroup) && isString(propGroup)) {\n let propertiesGroup = propertiesGroups[propGroup]\n\n if (!isSet(propertiesGroup)) {\n propertiesGroup = this.theme.getPropertiesGroup({ name: propGroup })\n propertiesGroups[propGroup] = propertiesGroup\n }\n\n propertiesGroup.group.appendChild(checkboxControl.container)\n this.control.propertiesActivators.appendChild(propertiesGroup.container)\n } else {\n defaultGroup.appendChild(checkboxControl.container)\n }\n\n checkbox.disabled = this.disabled || isRequired\n checkbox.checked = hasOwn(this.instance.getValue(), property)\n })\n }\n }\n\n refreshEditors () {\n while (this.control.childrenSlot.firstChild) {\n this.control.childrenSlot.removeChild(this.control.childrenSlot.firstChild)\n }\n\n this.instance.children.forEach((child) => {\n const showOptIn = true\n\n const optIn = this.theme.getCheckboxControl({\n id: child.path + '-opt-in',\n title: child.path + '-opt-in',\n titleHidden: true\n })\n\n optIn.input.checked = child.isActive\n\n optIn.input.addEventListener('change', () => {\n if (child.isActive) {\n child.deactivate()\n } else {\n child.activate()\n }\n })\n\n if (child.isActive) {\n if (child.ui.control.container.parentNode === null) {\n this.control.childrenSlot.appendChild(child.ui.control.container)\n\n // append optIn toggle\n if (showOptIn && child.ui.control.optInContainer) {\n child.ui.control.optInContainer.appendChild(optIn.container)\n }\n }\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n } else {\n if (child.ui.control.container.parentNode) {\n child.ui.control.container.parentNode.removeChild(child.ui.control.container)\n }\n }\n })\n }\n\n refreshUI () {\n super.refreshUI()\n this.refreshPropertiesSlot()\n this.refreshEditors()\n this.refreshJsonData()\n }\n}\n\nexport default EditorObject\n","import EditorObject from './object.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorObjectGrid instance.\n * @extends EditorObject\n */\nclass EditorObjectGrid extends EditorObject {\n static resolves (schema) {\n return getSchemaType(schema) === 'object' && getSchemaXOption(schema, 'format') === 'grid'\n }\n\n refreshEditors () {\n while (this.control.childrenSlot.firstChild) {\n this.control.childrenSlot.removeChild(this.control.childrenSlot.lastChild)\n }\n\n let row = this.theme.getRow()\n this.control.childrenSlot.appendChild(row)\n\n this.instance.children.forEach((child) => {\n if (child.isActive) {\n const childGridOptions = getSchemaXOption(child.schema, 'grid') || {}\n const gridColumns = getSchemaXOption(child.schema, 'gridColumns') ?? undefined\n const gridOffset = getSchemaXOption(child.schema, 'gridOffset') ?? 0\n\n // Retro base: in the last release \"columns\" was columnsMd\n const columnsMdRetro = childGridOptions.columns ?? undefined\n\n // Breakpoints with cascade fallback\n const columnsXs = childGridOptions.columnsXs ?? gridColumns ?? 12\n const columnsSm = childGridOptions.columnsSm ?? gridColumns ?? columnsXs\n const columnsMd = childGridOptions.columnsMd ?? columnsMdRetro ?? gridColumns ?? columnsSm\n const columnsLg = childGridOptions.columnsLg ?? gridColumns ?? columnsMd\n\n const offset = childGridOptions.offset ?? gridOffset\n const col = this.theme.getCol(columnsXs, columnsSm, columnsMd, columnsLg, offset)\n const newRow = childGridOptions.newRow || false\n\n if (newRow) {\n row = this.theme.getRow()\n this.control.childrenSlot.appendChild(row)\n }\n\n row.appendChild(col)\n col.appendChild(child.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n }\n })\n }\n}\n\nexport default EditorObjectGrid\n","import EditorObject from './object.js'\nimport { isSet, pathToAttribute } from '../helpers/utils.js'\nimport { getSchemaTitle, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorObjectNav instance.\n * @extends EditorObject\n */\nclass EditorObjectNav extends EditorObject {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n const regex = /^nav-(horizontal|vertical(?:-\\d+)?)$/\n const hasNavFormat = regex.test(format)\n return getSchemaType(schema) === 'object' && hasNavFormat\n }\n\n init () {\n super.init()\n this.activeTabIndex = 0\n }\n\n refreshEditors () {\n while (this.control.childrenSlot.firstChild) {\n this.control.childrenSlot.removeChild(this.control.childrenSlot.lastChild)\n }\n\n const format = getSchemaXOption(this.instance.schema, 'format')\n const formatParts = format.split('-')\n const variant = formatParts[1]\n const columns = formatParts[2]\n const navColumns = variant === 'horizontal' ? 12 : columns ?? 4\n const row = this.theme.getRow()\n const tabListCol = this.theme.getCol(12, 12, navColumns, navColumns)\n const tabContentCol = this.theme.getCol(12, 12, (12 - navColumns), (12 - navColumns))\n const tabContent = this.theme.getTabContent()\n const tabList = this.theme.getTabList({\n variant: variant\n })\n\n this.control.childrenSlot.appendChild(row)\n row.appendChild(tabListCol)\n row.appendChild(tabContentCol)\n tabListCol.appendChild(tabList)\n tabContentCol.appendChild(tabContent)\n\n this.instance.children.forEach((child, index) => {\n if (child.isActive) {\n const active = index === this.activeTabIndex\n const id = pathToAttribute(child.path)\n const schemaTitle = getSchemaTitle(child.schema)\n\n const tab = this.theme.getTab({\n hasErrors: child.children.some((grandChild) => grandChild.ui.showingValidationErrors),\n title: isSet(schemaTitle) ? schemaTitle : child.getKey(),\n id: id,\n active: active\n })\n\n tab.list.addEventListener('click', () => {\n this.activeTabIndex = index\n })\n\n this.theme.setTabPaneAttributes(child.ui.control.container, active, id)\n\n tabList.appendChild(tab.list)\n tabContent.appendChild(child.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n }\n })\n }\n}\n\nexport default EditorObjectNav\n","import Editor from './editor.js'\nimport { clamp, isArray, isSet } from '../helpers/utils.js'\nimport {\n getSchemaMaxItems,\n getSchemaMinItems,\n getSchemaType,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents an EditorArray instance.\n * @extends Editor\n */\nclass EditorArray extends Editor {\n static resolves (schema) {\n return getSchemaType(schema) === 'array'\n }\n\n init () {\n super.init()\n this.activeItemIndex = 0\n }\n\n build () {\n this.control = this.theme.getArrayControl({\n title: this.getTitle(),\n description: this.getDescription(),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n id: this.getIdFromPath(this.instance.path),\n enableCollapseToggle: getSchemaXOption(this.instance.schema, 'enableCollapseToggle') ?? this.instance.jedison.options.enableCollapseToggle,\n startCollapsed: getSchemaXOption(this.instance.schema, 'startCollapsed') ?? this.instance.jedison.options.startCollapsed,\n readOnly: this.instance.isReadOnly(),\n info: this.getInfo(),\n editJsonData: getSchemaXOption(this.instance.schema, 'editJsonData') ?? this.instance.jedison.options.editJsonData,\n arrayAdd: getSchemaXOption(this.instance.schema, 'arrayAdd') ?? this.instance.jedison.options.arrayAdd,\n arrayAddContent: getSchemaXOption(this.instance.schema, 'arrayAddContent') ?? this.instance.jedison.translator.translate('arrayAdd'),\n collapseToggleContent: getSchemaXOption(this.instance.schema, 'collapseToggleContent') ?? this.instance.jedison.translator.translate('collapseToggle')\n })\n\n this.control.jsonData.input.value = JSON.stringify(this.instance.getValue(), null, 2)\n }\n\n addEventListeners () {\n this.control.addBtn.addEventListener('click', () => {\n this.instance.addItem('user')\n })\n\n this.addJsonDataEventListeners()\n }\n\n addJsonDataEventListeners () {\n this.control.jsonData.saveBtn.addEventListener('click', () => {\n try {\n const inputValue = JSON.parse(this.control.jsonData.input.value)\n this.instance.setValue(inputValue, true, 'user')\n this.control.jsonData.dialog.close()\n } catch (error) {\n // eslint-disable-next-line no-undef\n alert('Invalid JSON')\n }\n })\n\n this.control.jsonData.toggle.addEventListener('click', () => {\n this.refreshJsonDataInputSize()\n })\n }\n\n getErrorFeedback (config) {\n return this.theme.getAlert(config)\n }\n\n sanitize (value) {\n if (isArray(value)) {\n return value\n }\n\n return []\n }\n\n getButtons (index) {\n const schemaDeleteContent = getSchemaXOption(this.instance.schema, 'arrayDeleteContent')\n const schemaMoveUpContent = getSchemaXOption(this.instance.schema, 'arrayMoveUpContent')\n const schemaMoveDownContent = getSchemaXOption(this.instance.schema, 'arrayMoveDownContent')\n const schemaDragContent = getSchemaXOption(this.instance.schema, 'arrayDragContent')\n\n const deleteBtn = this.theme.getDeleteItemBtn({\n content: schemaDeleteContent ?? this.instance.jedison.translator.translate('arrayDelete')\n })\n\n const moveUpBtn = this.theme.getMoveUpItemBtn({\n content: schemaMoveUpContent ?? this.instance.jedison.translator.translate('arrayMoveUp')\n })\n\n const moveDownBtn = this.theme.getMoveDownItemBtn({\n content: schemaMoveDownContent ?? this.instance.jedison.translator.translate('arrayMoveDown')\n })\n\n const dragBtn = this.theme.getDragItemBtn({\n content: schemaDragContent ?? this.instance.jedison.translator.translate('arrayDrag')\n })\n\n const btnGroup = this.theme.getBtnGroup()\n\n deleteBtn.addEventListener('click', () => {\n const confirmDeletion = window.confirm(this.instance.jedison.translator.translate('arrayConfirmDelete'))\n\n if (confirmDeletion) {\n this.activeItemIndex = clamp((index - 1), 0, (this.instance.value.length - 1))\n this.instance.deleteItem(index, 'user')\n }\n })\n\n moveUpBtn.addEventListener('click', () => {\n const toIndex = index - 1\n this.activeItemIndex = toIndex\n this.instance.move(index, toIndex, 'user')\n })\n\n moveDownBtn.addEventListener('click', () => {\n const toIndex = index + 1\n this.activeItemIndex = toIndex\n this.instance.move(index, toIndex, 'user')\n })\n\n if (index === 0) {\n moveUpBtn.setAttribute('always-disabled', true)\n }\n\n if (index === this.instance.children.length - 1) {\n moveDownBtn.setAttribute('always-disabled', true)\n }\n\n return { deleteBtn, moveUpBtn, moveDownBtn, btnGroup, dragBtn }\n }\n\n isSortable () {\n return window.Sortable && isSet(getSchemaXOption(this.instance.schema, 'sortable'))\n }\n\n refreshSortable (container) {\n if (this.isSortable()) {\n if (this.sortable) {\n this.sortable.destroy()\n }\n\n this.sortable = window.Sortable.create(container, {\n animation: 150,\n handle: '.jedi-array-drag',\n disabled: this.disabled || this.readOnly,\n onEnd: (evt) => {\n this.instance.move(evt.oldIndex, evt.newIndex)\n }\n })\n }\n }\n\n refreshAddBtn () {\n const maxItems = getSchemaMaxItems(this.instance.schema)\n const enforceMaxItems = getSchemaXOption(this.instance.schema, 'enforceMaxItems') ?? this.instance.jedison.options.enforceMaxItems\n\n if (isSet(maxItems) && enforceMaxItems && maxItems <= this.instance.value.length) {\n this.control.addBtn.setAttribute('disabled', '')\n this.control.addBtn.setAttribute('always-disabled', true)\n } else {\n if (!this.disabled && !this.readOnly) {\n this.control.addBtn.removeAttribute('disabled')\n this.control.addBtn.removeAttribute('always-disabled')\n }\n }\n }\n\n refreshUI () {\n super.refreshUI()\n const minItems = getSchemaMinItems(this.instance.schema)\n const arrayDelete = getSchemaXOption(this.instance.schema, 'arrayDelete') ?? this.instance.jedison.options.arrayDelete\n const arrayMove = getSchemaXOption(this.instance.schema, 'arrayMove') ?? this.instance.jedison.options.arrayMove\n\n this.control.childrenSlot.innerHTML = ''\n\n this.instance.children.forEach((child, index) => {\n const { deleteBtn, moveUpBtn, moveDownBtn, dragBtn, btnGroup } = this.getButtons(index)\n const { container, arrayActions, body } = this.theme.getArrayItem({\n readOnly: this.instance.isReadOnly(),\n index: index\n })\n\n arrayActions.appendChild(btnGroup)\n\n if (isSet(arrayDelete) && arrayDelete === true) {\n btnGroup.appendChild(deleteBtn)\n }\n\n if (isSet(arrayMove) && arrayMove === true) {\n btnGroup.appendChild(moveUpBtn)\n btnGroup.appendChild(moveDownBtn)\n }\n\n if (this.isSortable()) {\n btnGroup.appendChild(dragBtn)\n }\n\n this.control.childrenSlot.appendChild(container)\n body.appendChild(child.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n\n if (isSet(minItems) && this.instance.value.length <= minItems) {\n deleteBtn.setAttribute('disabled', '')\n }\n })\n\n this.refreshDisabledState()\n this.refreshSortable(this.control.childrenSlot)\n\n this.instance.children.forEach((child) => {\n child.ui.refreshUI()\n })\n\n this.refreshAddBtn()\n this.refreshJsonData()\n }\n}\n\nexport default EditorArray\n","import EditorArray from './array.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaItems, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorArrayTable instance.\n * @extends EditorArray\n */\nclass EditorArrayTable extends EditorArray {\n static resolves (schema, refParser) {\n return getSchemaType(schema) === 'array' && getSchemaXOption(schema, 'format') === 'table'\n }\n\n addEventListeners () {\n this.control.addBtn.addEventListener('click', () => {\n this.activeItemIndex = this.instance.value.length\n this.instance.addItem('user')\n })\n\n this.addJsonDataEventListeners()\n }\n\n isSortable () {\n return window.Sortable && isSet(getSchemaXOption(this.instance.schema, 'sortable'))\n }\n\n refreshUI () {\n this.control.childrenSlot.innerHTML = ''\n\n const table = this.theme.getTable()\n\n this.control.childrenSlot.appendChild(table.container)\n\n // thead labels\n const th = this.theme.getTableHeader()\n const { label } = this.theme.getFakeLabel({\n content: 'Controls',\n visuallyHidden: true\n })\n\n th.appendChild(label)\n\n table.thead.appendChild(th)\n\n // table header\n\n if (this.instance.children.length) {\n const schemaItems = getSchemaItems(this.instance.schema)\n\n const thTitle = this.theme.getTableHeader()\n\n if (schemaItems.title) {\n const fakeLabel = this.theme.getFakeLabel({\n content: schemaItems.title\n })\n\n thTitle.appendChild(fakeLabel.label)\n }\n\n const schemaXInfo = getSchemaXOption(schemaItems, 'info')\n\n if (isSet(schemaXInfo)) {\n const infoContent = this.getInfo(schemaItems)\n const info = this.theme.getInfo(infoContent)\n\n if (schemaXInfo.variant === 'modal') {\n this.theme.infoAsModal(info, this.getIdFromPath(this.instance.path), infoContent)\n }\n\n thTitle.appendChild(info.container)\n }\n\n table.thead.appendChild(thTitle)\n }\n\n const arrayDelete = getSchemaXOption(this.instance.schema, 'arrayDelete') ?? this.instance.jedison.options.arrayDelete\n const arrayMove = getSchemaXOption(this.instance.schema, 'arrayMove') ?? this.instance.jedison.options.arrayMove\n\n // tbody rows\n this.instance.children.forEach((child, index) => {\n const tbodyRow = document.createElement('tr')\n\n // buttons\n const buttonsTd = this.theme.getTableDefinition()\n const { deleteBtn, moveUpBtn, moveDownBtn, dragBtn, btnGroup } = this.getButtons(index)\n\n if (this.isSortable()) {\n btnGroup.appendChild(dragBtn)\n }\n\n if (isSet(arrayDelete) && arrayDelete === true) {\n btnGroup.appendChild(deleteBtn)\n }\n\n if (isSet(arrayMove) && arrayMove === true) {\n btnGroup.appendChild(moveUpBtn)\n btnGroup.appendChild(moveDownBtn)\n }\n\n buttonsTd.appendChild(btnGroup)\n tbodyRow.appendChild(buttonsTd)\n\n // child\n const td = this.theme.getTableDefinition()\n child.ui.adaptForTable(child, td)\n td.appendChild(child.ui.control.container)\n tbodyRow.appendChild(td)\n\n table.tbody.appendChild(tbodyRow)\n })\n\n this.refreshSortable(table.tbody)\n this.refreshAddBtn()\n this.refreshJsonData()\n this.refreshDisabledState()\n this.refreshScrollPosition(table.container)\n\n table.container.addEventListener('scroll', () => {\n this.lastScrollTop = table.container.scrollTop\n this.lastScrollLeft = table.container.scrollLeft\n })\n }\n\n refreshScrollPosition (element) {\n element.scroll({\n top: this.lastScrollTop,\n left: this.lastScrollLeft\n })\n }\n\n refreshSortable (container) {\n if (this.isSortable()) {\n if (this.sortable) {\n this.sortable.destroy()\n }\n\n this.sortable = window.Sortable.create(container, {\n animation: 150,\n handle: '.jedi-array-drag',\n disabled: this.disabled || this.readOnly,\n onEnd: (evt) => {\n this.instance.move(evt.oldIndex, evt.newIndex)\n }\n })\n }\n }\n}\n\nexport default EditorArrayTable\n","import EditorArray from './array.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaItems, getSchemaProperties, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorArrayTableObject instance.\n * @extends EditorArray\n */\nclass EditorArrayTableObject extends EditorArray {\n static resolves (schema, refParser) {\n let schemaItems = getSchemaItems(schema)\n\n if (!schemaItems) {\n return false\n }\n\n if (refParser) {\n schemaItems = refParser.expand(schemaItems)\n }\n\n const itemType = getSchemaType(schemaItems)\n\n if (!itemType) {\n return false\n }\n\n return getSchemaType(schema) === 'array' && itemType === 'object' && getSchemaXOption(schema, 'format') === 'table-object'\n }\n\n addEventListeners () {\n this.control.addBtn.addEventListener('click', () => {\n this.activeItemIndex = this.instance.value.length\n this.instance.addItem('user')\n })\n\n this.addJsonDataEventListeners()\n }\n\n isSortable () {\n return window.Sortable && isSet(getSchemaXOption(this.instance.schema, 'sortable'))\n }\n\n refreshUI () {\n this.control.childrenSlot.innerHTML = ''\n\n const table = this.theme.getTable()\n\n this.control.childrenSlot.appendChild(table.container)\n\n // thead labels\n const th = this.theme.getTableHeader()\n const { label } = this.theme.getFakeLabel({\n content: 'Controls',\n visuallyHidden: true\n })\n\n th.appendChild(label)\n\n table.thead.appendChild(th)\n\n if (this.instance.getValue().length === 0) {\n table.table.removeChild(table.thead)\n }\n\n let schemaItems = getSchemaItems(this.instance.schema)\n\n if (this.instance.jedison.refParser) {\n schemaItems = this.instance.jedison.refParser.expand(schemaItems)\n }\n const itemProperties = getSchemaProperties(schemaItems)\n\n Object.values(itemProperties).forEach((propertySchema) => {\n const th = this.theme.getTableHeader()\n\n if (propertySchema.title) {\n const fakeLabel = this.theme.getFakeLabel({\n content: propertySchema.title\n })\n\n th.appendChild(fakeLabel.label)\n }\n\n const schemaXInfo = getSchemaXOption(propertySchema, 'info')\n\n if (isSet(schemaXInfo)) {\n const infoContent = this.getInfo(propertySchema)\n const info = this.theme.getInfo(infoContent)\n\n if (schemaXInfo.variant === 'modal') {\n this.theme.infoAsModal(info, this.getIdFromPath(this.instance.path), infoContent)\n }\n\n th.appendChild(info.container)\n }\n\n table.thead.appendChild(th)\n })\n\n const arrayDelete = getSchemaXOption(this.instance.schema, 'arrayDelete') ?? this.instance.jedison.options.arrayDelete\n const arrayMove = getSchemaXOption(this.instance.schema, 'arrayMove') ?? this.instance.jedison.options.arrayMove\n\n // tbody rows\n this.instance.children.forEach((child, index) => {\n const tbodyRow = document.createElement('tr')\n\n // buttons\n const buttonsTd = this.theme.getTableDefinition()\n const { deleteBtn, moveUpBtn, moveDownBtn, dragBtn, btnGroup } = this.getButtons(index)\n\n if (this.isSortable()) {\n btnGroup.appendChild(dragBtn)\n }\n\n if (isSet(arrayDelete) && arrayDelete === true) {\n btnGroup.appendChild(deleteBtn)\n }\n\n if (isSet(arrayMove) && arrayMove === true) {\n btnGroup.appendChild(moveUpBtn)\n btnGroup.appendChild(moveDownBtn)\n }\n\n buttonsTd.appendChild(btnGroup)\n tbodyRow.appendChild(buttonsTd)\n\n // editors\n if (child.children.length) {\n child.children.forEach((grandchild) => {\n const td = this.theme.getTableDefinition()\n grandchild.ui.adaptForTable(td)\n td.appendChild(grandchild.ui.control.container)\n tbodyRow.appendChild(td)\n })\n } else {\n const td = this.theme.getTableDefinition()\n child.ui.adaptForTable(td)\n td.appendChild(child.ui.control.container)\n tbodyRow.appendChild(td)\n }\n\n table.tbody.appendChild(tbodyRow)\n })\n\n this.refreshSortable(table.tbody)\n this.refreshAddBtn()\n this.refreshJsonData()\n this.refreshDisabledState()\n this.refreshScrollPosition(table.container)\n\n table.container.addEventListener('scroll', () => {\n this.lastScrollTop = table.container.scrollTop\n this.lastScrollLeft = table.container.scrollLeft\n })\n }\n\n refreshScrollPosition (element) {\n element.scroll({\n top: this.lastScrollTop,\n left: this.lastScrollLeft\n })\n }\n\n refreshSortable (container) {\n if (this.isSortable()) {\n if (this.sortable) {\n this.sortable.destroy()\n }\n\n this.sortable = window.Sortable.create(container, {\n animation: 150,\n handle: '.jedi-array-drag',\n disabled: this.disabled || this.readOnly,\n onEnd: (evt) => {\n this.instance.move(evt.oldIndex, evt.newIndex)\n }\n })\n }\n }\n}\n\nexport default EditorArrayTableObject\n","import Editor from './editor.js'\nimport { isArray, isSet } from '../helpers/utils.js'\nimport { getSchemaItems, getSchemaType, getSchemaUniqueItems, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorArrayChoices instance.\n * @extends EditorString\n */\nclass EditorArrayChoices extends Editor {\n static resolves (schema) {\n const hasChoicesFormat = getSchemaXOption(schema, 'format') === 'choices'\n const choicesInstalled = window.Choices\n const schemaType = getSchemaType(schema)\n const schemaItems = getSchemaItems(schema)\n const schemaItemsType = isSet(schemaItems) && getSchemaType(schemaItems)\n const isArrayType = isSet(schemaType) && schemaType === 'array'\n const isUniqueItems = getSchemaUniqueItems(schema) === true\n const hasTypes = isSet(schemaItems) && isSet(schemaItemsType)\n\n const validTypes = ['string', 'number', 'integer']\n\n const hasValidItemType = isSet(schemaItems) &&\n isSet(schemaItemsType) &&\n (validTypes.includes(schemaItemsType) ||\n (isArray(schemaItemsType) && schemaItemsType.some(type => validTypes.includes(type))))\n\n return hasChoicesFormat && choicesInstalled && isArrayType && isUniqueItems && hasTypes && hasValidItemType\n }\n\n build () {\n this.control = this.theme.getSelectControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: [],\n titles: [],\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n this.control.input.setAttribute('multiple', '')\n\n try {\n const value = this.instance.getValue()\n const itemEnum = this.instance.schema.items.enum ?? []\n const itemEnumTitles = getSchemaXOption(this.instance.schema.items, 'enumTitles') ?? this.instance.getValue()\n const choicesOptions = getSchemaXOption(this.instance.schema, 'choicesOptions') ?? {}\n\n if (this.choicesInstance) {\n this.choicesInstance.destroy()\n }\n\n this.choices = itemEnum.map((item, index) => ({\n value: item,\n label: itemEnumTitles[index] || item,\n selected: value.includes(item)\n }))\n\n this.choicesInstance = new window.Choices(this.control.input, {\n duplicateItemsAllowed: false,\n removeItemButton: true,\n choices: this.choices,\n ...choicesOptions\n })\n } catch (e) {\n console.error('Choices is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n const value = this.choicesInstance.getValue(true)\n\n if (value !== this.instance.getValue()) {\n this.instance.setValue(value, true, 'user')\n }\n })\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n this.choicesInstance.disable()\n } else {\n this.choicesInstance.enable()\n }\n }\n\n refreshUI () {\n super.refreshUI()\n\n const value = this.instance.getValue()\n\n this.choicesInstance.removeActiveItems()\n\n if (Array.isArray(value)) {\n value.forEach(val => {\n this.choicesInstance.setChoiceByValue(val)\n })\n }\n }\n\n destroy () {\n this.choicesInstance.destroy()\n super.destroy()\n }\n}\n\nexport default EditorArrayChoices\n","import EditorArray from './array.js'\nimport { compileTemplate, isSet, pathToAttribute } from '../helpers/utils.js'\nimport { getSchemaTitle, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorArrayNav instance.\n * @extends EditorArray\n */\nclass EditorArrayNav extends EditorArray {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n const regex = /^nav-(horizontal|vertical(?:-\\d+)?)$/\n const hasNavFormat = regex.test(format)\n return getSchemaType(schema) === 'array' && hasNavFormat\n }\n\n addEventListeners () {\n this.control.addBtn.addEventListener('click', () => {\n this.activeItemIndex = this.instance.value.length\n this.instance.addItem('user')\n })\n\n this.addJsonDataEventListeners()\n }\n\n refreshUI () {\n this.control.childrenSlot.innerHTML = ''\n\n this.clearStoredEventListeners()\n\n const format = getSchemaXOption(this.instance.schema, 'format')\n const formatParts = format.split('-')\n const variant = formatParts[1]\n const columns = formatParts[2]\n const navColumns = variant === 'horizontal' ? 12 : columns ?? 4\n const row = this.theme.getRow()\n const tabListCol = this.theme.getCol(12, 12, navColumns, navColumns)\n const tabContentCol = this.theme.getCol(12, 12, (12 - navColumns), (12 - navColumns))\n const tabContent = this.theme.getTabContent()\n const tabList = this.theme.getTabList({\n variant: variant\n })\n\n const arrayDelete = getSchemaXOption(this.instance.schema, 'arrayDelete') ?? this.instance.jedison.options.arrayDelete\n const arrayMove = getSchemaXOption(this.instance.schema, 'arrayMove') ?? this.instance.jedison.options.arrayMove\n\n this.control.childrenSlot.appendChild(row)\n row.appendChild(tabListCol)\n row.appendChild(tabContentCol)\n tabListCol.appendChild(tabList)\n tabContentCol.appendChild(tabContent)\n\n this.instance.children.forEach((child, index) => {\n const { deleteBtn, moveUpBtn, moveDownBtn, btnGroup } = this.getButtons(index)\n\n if (isSet(arrayDelete) && arrayDelete === true) {\n btnGroup.appendChild(deleteBtn)\n }\n\n if (isSet(arrayMove) && arrayMove === true) {\n btnGroup.appendChild(moveUpBtn)\n btnGroup.appendChild(moveDownBtn)\n }\n\n this.control.childrenSlot.appendChild(child.ui.control.container)\n const schemaTitle = getSchemaTitle(child.schema)\n\n const childTitle = isSet(schemaTitle) ? schemaTitle + ' ' + (index + 1) : child.getKey()\n let titleTemplate\n\n const schemaOptionTitleTemplate = getSchemaXOption(this.instance.schema, 'titleTemplate')\n\n if (schemaOptionTitleTemplate) {\n const template = schemaOptionTitleTemplate\n const data = child.getTemplateData()\n\n titleTemplate = compileTemplate(template, data) ?? childTitle\n }\n\n const active = index === this.activeItemIndex\n const id = pathToAttribute(child.path)\n\n const { list, arrayActions } = this.theme.getTab({\n hasErrors: child.children.some((grandChild) => grandChild.ui.showingValidationErrors),\n title: titleTemplate?.length ? titleTemplate : childTitle,\n id: id,\n active: active\n })\n\n arrayActions.appendChild(btnGroup)\n\n const clickHandler = () => {\n this.activeItemIndex = index\n }\n\n list.addEventListener('click', clickHandler)\n\n // Store listener for cleanup\n this.storedEventListeners.push({\n element: list,\n handler: clickHandler,\n eventType: 'click'\n })\n\n this.theme.setTabPaneAttributes(child.ui.control.container, active, id)\n tabList.appendChild(list)\n tabContent.appendChild(child.ui.control.container)\n\n if (this.disabled || this.instance.isReadOnly()) {\n child.ui.disable()\n } else {\n child.ui.enable()\n }\n\n if (index === 0) {\n moveUpBtn.setAttribute('disabled', '')\n }\n\n if ((this.instance.value.length - 1) === index) {\n moveDownBtn.setAttribute('disabled', '')\n }\n })\n\n this.refreshDisabledState()\n this.refreshAddBtn()\n this.refreshJsonData()\n }\n}\n\nexport default EditorArrayNav\n","import Editor from './editor.js'\nimport { isArray, isSet, notSet } from '../helpers/utils.js'\nimport { getSchemaAnyOf, getSchemaOneOf, getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents an EditorMultiple instance.\n * @extends Editor\n */\nclass EditorMultiple extends Editor {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const schemaOneOf = getSchemaOneOf(schema)\n const schemaAnyOf = getSchemaAnyOf(schema)\n return isSet(schemaAnyOf) || isSet(schemaOneOf) || schemaType === 'any' || isArray(schemaType) || notSet(schemaType)\n }\n\n build () {\n this.switcherInput = getSchemaXOption(this.instance.schema, 'switcherInput') ?? this.instance.jedison.options.switcherInput\n\n this.control = this.theme.getMultipleControl({\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n id: this.getIdFromPath(this.instance.path),\n switcherOptionValues: this.instance.switcherOptionValues,\n switcherOptionsLabels: this.instance.switcherOptionsLabels,\n switcher: this.switcherInput,\n readOnly: this.instance.isReadOnly()\n })\n }\n\n adaptForTable (td) {\n this.theme.adaptForTableMultipleControl(this.control, td)\n }\n\n addEventListeners () {\n if (this.switcherInput === 'select') {\n this.control.switcher.input.addEventListener('change', () => {\n const index = Number(this.control.switcher.input.value)\n this.instance.switchInstance(index, undefined, 'user')\n })\n }\n\n if (this.switcherInput === 'radios' || this.switcherInput === 'radios-inline') {\n this.control.switcher.radios.forEach((radio) => {\n radio.addEventListener('change', () => {\n const index = Number(radio.value)\n this.instance.switchInstance(index, undefined, 'user')\n })\n })\n }\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.control.childrenSlot.innerHTML = ''\n this.control.childrenSlot.appendChild(this.instance.activeInstance.ui.control.container)\n\n if (this.switcherInput === 'select') {\n this.control.switcher.input.value = this.instance.index\n }\n\n if (this.switcherInput === 'radios' || this.switcherInput === 'radios-inline') {\n this.control.switcher.radios.forEach((radio) => {\n const radioIndex = Number(radio.value)\n radio.checked = radioIndex === this.instance.index\n })\n }\n\n if (this.disabled || this.instance.isReadOnly()) {\n this.instance.activeInstance.ui.disable()\n } else {\n this.instance.activeInstance.ui.enable()\n }\n }\n\n getErrorFeedback (config) {\n return this.theme.getAlert(config)\n }\n}\n\nexport default EditorMultiple\n","import Editor from './editor.js'\nimport {\n getSchemaType,\n getSchemaXOption\n} from '../helpers/schema.js'\n\n/**\n * Represents a EditorNull instance.\n * @extends Editor\n */\nclass EditorNull extends Editor {\n static resolves (schema) {\n return getSchemaType(schema) === 'null'\n }\n\n build () {\n this.control = this.theme.getNullControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden') || getSchemaXOption(this.instance.schema, 'format') === 'hidden',\n info: this.getInfo()\n })\n }\n\n sanitize () {\n return null\n }\n}\n\nexport default EditorNull\n","import EditorString from './string.js'\nimport { clone, isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringSimpleMDE instance.\n * @extends EditorString\n */\nclass EditorStringSimpleMDE extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'simplemde' &&\n window.SimpleMDE &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getTextareaControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const simplemdeOptions = clone(getSchemaXOption(this.instance.schema, 'simplemde') ?? {})\n simplemdeOptions.element = this.control.input\n this.simplemde = new window.SimpleMDE(simplemdeOptions)\n } catch (e) {\n console.error('simpleMDE is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.simplemde.codemirror.on('blur', () => {\n const mdeText = this.simplemde.value()\n\n if (mdeText !== this.instance.getValue()) {\n this.instance.setValue(mdeText, true, 'user')\n }\n })\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n if (!this.simplemde.isPreviewActive()) {\n this.simplemde.togglePreview()\n this.control.container.querySelector('.editor-toolbar').style.display = 'none'\n }\n } else {\n if (this.simplemde.isPreviewActive()) {\n this.simplemde.togglePreview()\n this.control.container.querySelector('.editor-toolbar').style.display = 'block'\n }\n }\n }\n\n refreshUI () {\n super.refreshUI()\n this.simplemde.value(this.instance.getValue())\n }\n}\n\nexport default EditorStringSimpleMDE\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringQuill instance.\n * @extends EditorString\n */\nclass EditorStringQuill extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'quill' &&\n window.Quill &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getPlaceholderControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const quillOptions = getSchemaXOption(this.instance.schema, 'quill') ?? {}\n this.quill = new window.Quill(this.control.placeholder, quillOptions)\n } catch (e) {\n console.error('Quill is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.quill.root.addEventListener('blur', () => {\n const quillText = this.quill.getText()\n\n if (quillText !== this.instance.getValue()) {\n this.instance.setValue(quillText, true, 'user')\n }\n })\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n this.quill.disable()\n } else {\n this.quill.enable()\n }\n }\n\n refreshUI () {\n super.refreshUI()\n this.quill.setText(this.instance.getValue())\n }\n}\n\nexport default EditorStringQuill\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringQuill instance.\n * @extends EditorString\n */\nclass EditorStringJodit extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'jodit' &&\n window.Jodit &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getTextareaControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const joditDefaultOptions = {\n showCharsCounter: false,\n showWordsCounter: false,\n showXPathInStatusbar: false,\n toolbarAdaptive: false,\n buttons: [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n '|',\n 'ul',\n 'ol',\n '|',\n 'link',\n '|',\n 'source',\n 'preview'\n ]\n }\n\n const joditSchemaOptions = getSchemaXOption(this.instance.schema, 'jodit') ?? {}\n\n const joditOptions = Object.assign({}, joditDefaultOptions, joditSchemaOptions)\n\n console.log('joditOptions', joditOptions, getSchemaXOption(this.instance.schema, 'jodit'))\n this.jodit = window.Jodit.make(this.control.input, joditOptions)\n } catch (e) {\n console.error('Jodit is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.jodit.events.on('change', () => {\n const joditValue = this.jodit.value\n\n if (joditValue !== this.instance.getValue()) {\n this.instance.setValue(joditValue, true, 'user')\n }\n })\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n this.jodit.setReadOnly(true)\n } else {\n this.jodit.setReadOnly(false)\n }\n }\n\n refreshUI () {\n super.refreshUI()\n this.jodit.value = this.instance.getValue()\n }\n\n destroy () {\n this.jodit.destruct()\n super.destroy()\n }\n}\n\nexport default EditorStringJodit\n","import EditorString from './string.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorStringFlatpickr instance.\n * @extends EditorString\n */\nclass EditorStringFlatpickr extends EditorString {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n return isSet(format) &&\n format === 'flatpickr' &&\n window.flatpickr &&\n getSchemaType(schema) === 'string'\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const flatpickrOptions = getSchemaXOption(this.instance.schema, 'flatpickr') ?? {}\n this.flatpickr = window.flatpickr(this.control.input, flatpickrOptions)\n } catch (e) {\n console.error('Flatpickr is not available or not loaded correctly.', e)\n }\n }\n\n addEventListeners () {\n this.control.input.addEventListener('change', () => {\n this.instance.setValue(this.control.input.value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.flatpickr.setDate(this.instance.getValue())\n }\n\n destroy () {\n this.flatpickr.destroy()\n super.destroy()\n }\n}\n\nexport default EditorStringFlatpickr\n","import EditorString from './string.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\nimport { isSet } from '../helpers/utils.js'\n\n/**\n * Represents a EditorStringIMask instance.\n * @extends EditorString\n */\nclass EditorStringIMask extends EditorString {\n static resolves (schema) {\n const hasSchemaTypeString = getSchemaType(schema) === 'string'\n const imaskAvailable = window.IMask\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'imask' &&\n hasSchemaTypeString &&\n imaskAvailable\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const schemaImask = getSchemaXOption(this.instance.schema, 'imask') ?? {}\n const schemaImaskSettings = schemaImask['x-settings']\n const settings = schemaImaskSettings && this.instance.jedison.options.settings[schemaImaskSettings] ? this.instance.jedison.options.settings[schemaImaskSettings] : {}\n const imaskOptions = { ...schemaImask, ...settings }\n this.imask = window.IMask(this.control.input, imaskOptions)\n this.useMaskedValue = schemaImask['x-masked'] ?? false\n } catch (e) {\n console.error('IMask is not available or not loaded or configured correctly.', e)\n }\n }\n\n addEventListeners () {\n this.imask.on('accept', () => {\n const value = this.useMaskedValue ? this.imask.value : this.imask.unmaskedValue\n this.instance.setValue(value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n this.imask.value = this.instance.getValue()\n }\n\n destroy () {\n this.imask.destroy()\n super.destroy()\n }\n}\n\nexport default EditorStringIMask\n","import EditorNumber from './number.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\nimport { isSet } from '../helpers/utils.js'\n\n/**\n * Represents a EditorNumberIMask instance.\n * @extends EditorString\n */\nclass EditorNumberIMask extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const imaskAvailable = window.IMask\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'imask' &&\n schemaType === 'number' &&\n imaskAvailable\n }\n\n build () {\n this.control = this.theme.getInputControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'text',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const schemaImask = getSchemaXOption(this.instance.schema, 'imask') ?? {}\n const schemaImaskSettings = schemaImask['x-settings']\n const settings = schemaImaskSettings && this.instance.jedison.options.settings[schemaImaskSettings] ? this.instance.jedison.options.settings[schemaImaskSettings] : {}\n const imaskOptions = {\n mask: Number,\n ...schemaImask,\n ...settings\n }\n this.imask = window.IMask(this.control.input, imaskOptions)\n this.useMaskedValue = schemaImask['x-masked'] ?? false\n } catch (e) {\n console.error('IMask is not available or not loaded or configured correctly.', e)\n }\n }\n\n addEventListeners () {\n this.imask.on('accept', () => {\n const value = this.imask.typedValue\n this.instance.setValue(value, true, 'user')\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n const val = this.instance.getValue()\n this.imask.value = val != null ? String(val) : ''\n }\n\n destroy () {\n this.imask.destroy()\n super.destroy()\n }\n}\n\nexport default EditorNumberIMask\n","/* global Raty */\n\nimport EditorNumber from './number.js'\nimport { isSet } from '../helpers/utils.js'\nimport { getSchemaType, getSchemaXOption } from '../helpers/schema.js'\n\n/**\n * Represents a EditorNumberRaty instance.\n * @extends EditorString\n */\nclass EditorNumberRaty extends EditorNumber {\n static resolves (schema) {\n const format = getSchemaXOption(schema, 'format')\n\n return isSet(format) &&\n format === 'raty' &&\n typeof Raty !== 'undefined' &&\n getSchemaType(schema) === 'number'\n }\n\n build () {\n this.control = this.theme.getPlaceholderControl({\n title: this.getTitle(),\n description: this.getDescription(),\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n try {\n const ratyOptions = getSchemaXOption(this.instance.schema, 'raty') ?? {}\n\n this.raty = new Raty(this.control.placeholder, Object.assign({}, ratyOptions), {\n click: (score) => {\n this.instance.setValue(score, true, 'user')\n }\n })\n this.raty.init()\n } catch (e) {\n console.error('Raty is not available or not loaded correctly.', e)\n }\n }\n\n refreshDisabledState () {\n if (this.disabled || this.readOnly) {\n this.raty.readOnly(true)\n } else {\n this.raty.readOnly(false)\n }\n }\n\n refreshUI () {\n super.refreshUI()\n this.raty.score(this.instance.getValue())\n }\n}\n\nexport default EditorNumberRaty\n","import {\n isArray,\n isSet\n} from '../helpers/utils.js'\n\nimport {\n getSchemaEnum,\n getSchemaItems,\n getSchemaType,\n getSchemaUniqueItems,\n getSchemaXOption\n} from '../helpers/schema.js'\n\nimport Editor from './editor.js'\n\n/**\n * Represents an EditorArrayCheckboxes instance.\n * @extends Editor\n */\nclass EditorArrayCheckboxes extends Editor {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const schemaItems = getSchemaItems(schema)\n const schemaItemsType = isSet(schemaItems) && getSchemaType(schemaItems)\n const isArrayType = isSet(schemaType) && schemaType === 'array'\n const isUniqueItems = getSchemaUniqueItems(schema) === true\n const hasEnum = isSet(schemaItems) && isSet(getSchemaEnum(schema.items))\n const hasTypes = isSet(schemaItems) && isSet(schemaItemsType)\n\n const validTypes = ['string', 'number', 'integer']\n\n const hasValidItemType = isSet(schemaItems) &&\n isSet(schemaItemsType) &&\n (validTypes.includes(schemaItemsType) ||\n (isArray(schemaItemsType) && schemaItemsType.some(type => validTypes.includes(type))))\n\n return isArrayType && isUniqueItems && hasEnum && hasTypes && hasValidItemType\n }\n\n build () {\n this.control = this.theme.getCheckboxesControl({\n title: this.getTitle(),\n description: this.getDescription(),\n values: getSchemaEnum(this.instance.schema.items),\n titles: getSchemaXOption(this.instance.schema.items, 'enumTitles') || getSchemaEnum(this.instance.schema.items),\n id: this.getIdFromPath(this.instance.path),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n inline: getSchemaXOption(this.instance.schema, 'format') === 'checkboxes-inline',\n info: this.getInfo()\n })\n }\n\n adaptForTable (td) {\n this.theme.adaptForTableCheckboxesControl(this.control, td)\n }\n\n addEventListeners () {\n this.control.checkboxes.forEach((checkbox) => {\n checkbox.addEventListener('change', () => {\n const value = this.instance.getValue()\n if (checkbox.checked) {\n value.push(checkbox.value)\n } else {\n const index = value.indexOf(checkbox.value)\n if (index > -1) {\n value.splice(index, 1)\n }\n }\n\n this.instance.setValue(value, true, 'user')\n })\n })\n }\n\n refreshUI () {\n this.refreshDisabledState()\n\n const value = this.instance.getValue()\n\n this.control.checkboxes.forEach((checkbox) => {\n checkbox.checked = value.includes(checkbox.value)\n })\n }\n}\n\nexport default EditorArrayCheckboxes\n","import EditorNumber from './number.js'\nimport { getSchemaXOption, getSchemaType } from '../helpers/schema.js'\nimport { isSet } from '../helpers/utils.js'\n\n/**\n * Represents an EditorNumberRange instance.\n * @extends EditorNumber\n */\nclass EditorNumberRange extends EditorNumber {\n static resolves (schema) {\n const schemaType = getSchemaType(schema)\n const isNumericType = schemaType === 'number' || schemaType === 'integer'\n\n if (!isNumericType) {\n return false\n }\n\n // Check for explicit range format\n const hasFormatRange = getSchemaXOption(schema, 'format') === 'range'\n\n return isNumericType && hasFormatRange\n }\n\n build () {\n // Get min/max from schema constraints\n let optionMin = 0\n let optionMax = 100\n\n if (isSet(this.instance.schema.minimum)) {\n optionMin = this.instance.schema.minimum\n } else if (isSet(this.instance.schema.exclusiveMinimum)) {\n optionMin = this.instance.schema.exclusiveMinimum + 0.01\n }\n\n if (isSet(this.instance.schema.maximum)) {\n optionMax = this.instance.schema.maximum\n } else if (isSet(this.instance.schema.exclusiveMaximum)) {\n optionMax = this.instance.schema.exclusiveMaximum - 0.01\n }\n\n // Determine step based on type and multipleOf\n let optionStep\n const schemaType = getSchemaType(this.instance.schema)\n const multipleOf = this.instance.schema.multipleOf\n\n if (isSet(multipleOf)) {\n optionStep = multipleOf\n } else if (schemaType === 'integer') {\n optionStep = 1\n } else {\n optionStep = 0.01\n }\n\n this.control = this.theme.getInputRangeControl({\n title: this.getTitle(),\n description: this.getDescription(),\n type: 'range',\n id: this.getIdFromPath(this.instance.path),\n titleIconClass: getSchemaXOption(this.instance.schema, 'titleIconClass'),\n titleHidden: getSchemaXOption(this.instance.schema, 'titleHidden'),\n info: this.getInfo()\n })\n\n // Set range-specific attributes\n this.control.input.setAttribute('min', optionMin)\n this.control.input.setAttribute('max', optionMax)\n this.control.input.setAttribute('step', optionStep)\n\n // Apply x-inputAttributes if provided\n const inputAttributes = getSchemaXOption(this.instance.schema, 'inputAttributes')\n if (inputAttributes && typeof inputAttributes === 'object') {\n Object.keys(inputAttributes).forEach(attr => {\n this.control.input.setAttribute(attr, inputAttributes[attr])\n })\n }\n\n // Set initial value for output\n const currentValue = this.instance.getValue()\n this.control.output.textContent = currentValue !== undefined ? currentValue : optionMin\n }\n\n adaptForTable () {\n this.theme.adaptForTableInputControl(this.control)\n }\n\n addEventListeners () {\n // Update output on input\n this.control.input.addEventListener('input', () => {\n this.control.output.textContent = parseFloat(this.control.input.value)\n })\n\n // Update value based on validation trigger setting\n const eventType = this.getValidationEventType()\n this.control.input.addEventListener(eventType, () => {\n const value = parseFloat(this.control.input.value)\n this.control.output.textContent = value\n this.instance.setValue(value, true, 'user')\n })\n }\n\n sanitize (value) {\n const schemaType = getSchemaType(this.instance.schema)\n const numValue = Number(value)\n\n if (schemaType === 'integer') {\n return Math.round(numValue)\n }\n\n return numValue\n }\n\n refreshUI () {\n super.refreshUI()\n const currentValue = this.instance.getValue()\n this.control.input.value = currentValue !== undefined ? currentValue : 0\n if (this.control.output) {\n this.control.output.textContent = currentValue !== undefined ? currentValue : 0\n }\n }\n}\n\nexport default EditorNumberRange\n","import EditorBooleanRadios from './editors/boolean-radios.js'\nimport EditorBooleanSelect from './editors/boolean-select.js'\nimport EditorBooleanCheckbox from './editors/boolean-checkbox.js'\nimport EditorStringRadios from './editors/string-radios.js'\nimport EditorStringSelect from './editors/string-select.js'\nimport EditorStringTextarea from './editors/string-textarea.js'\nimport EditorStringAwesomplete from './editors/string-awesomplete.js'\nimport EditorStringEmojiButton from './editors/string-emoji-button.js'\nimport EditorStringInput from './editors/string-input.js'\nimport EditorNumberRadio from './editors/number-radios.js'\nimport EditorNumberSelect from './editors/number-select.js'\nimport EditorNumberInputNullable from './editors/number-input-nullable.js'\nimport EditorNumberInput from './editors/number-input.js'\nimport EditorObjectGrid from './editors/object-grid.js'\nimport EditorObjectNav from './editors/object-nav.js'\nimport EditorObject from './editors/object.js'\nimport EditorArrayTable from './editors/array-table.js'\nimport EditorArrayTableObject from './editors/array-table-object.js'\nimport EditorArrayChoices from './editors/array-choices.js'\nimport EditorArrayNav from './editors/array-nav.js'\nimport EditorArray from './editors/array.js'\nimport EditorMultiple from './editors/multiple.js'\nimport EditorNull from './editors/null.js'\nimport EditorStringSimpleMDE from './editors/string-simplemde.js'\nimport EditorStringQuill from './editors/string-quill.js'\nimport EditorStringJodit from './editors/string-jodit.js'\nimport EditorStringFlatpickr from './editors/string-flatpickr.js'\nimport EditorStringIMask from './editors/string-imask.js'\nimport EditorNumberImask from './editors/number-imask.js'\nimport EditorNumberRaty from './editors/number-raty.js'\nimport EditorIfThenElse from './editors/if-then-else.js'\nimport EditorArrayCheckboxes from './editors/array-checkboxes.js'\nimport EditorNumberRange from './editors/number-range.js'\n\nclass UiResolver {\n constructor (options) {\n this.customEditors = options.customEditors ?? []\n this.refParser = options.refParser ?? null\n\n this.editors = [\n EditorNumberInputNullable,\n EditorMultiple,\n EditorIfThenElse,\n EditorBooleanRadios,\n EditorBooleanCheckbox,\n EditorBooleanSelect,\n EditorStringRadios,\n EditorStringSelect,\n EditorStringTextarea,\n EditorStringAwesomplete,\n EditorStringEmojiButton,\n EditorStringSimpleMDE,\n EditorStringQuill,\n EditorStringJodit,\n EditorStringFlatpickr,\n EditorStringIMask,\n EditorStringInput,\n EditorNumberImask,\n EditorNumberRaty,\n EditorNumberRange,\n EditorNumberRadio,\n EditorNumberSelect,\n EditorNumberInput,\n EditorObjectGrid,\n EditorObjectNav,\n EditorObject,\n EditorArrayChoices,\n EditorArrayCheckboxes,\n EditorArrayTableObject,\n EditorArrayTable,\n EditorArrayNav,\n EditorArray,\n EditorNull\n ]\n }\n\n getClass (schema) {\n for (const editor of this.customEditors) {\n if (editor.resolves(schema, this.refParser)) {\n return editor\n }\n }\n\n for (const editor of this.editors) {\n if (editor.resolves(schema, this.refParser)) {\n return editor\n }\n }\n\n return null\n }\n}\n\nexport default UiResolver\n","export default {\n errorAdditionalProperties: 'Has additional property \"{{ property }}\" but no additional properties are allowed.',\n errorAnyOf: 'Must validate against at least one of the provided schemas.',\n errorConst: 'Must have value of: {{ const }}.',\n errorContains: 'Must contain at least one item matching the provided schema.',\n errorDependentRequired: 'Must have the required properties: {{ dependentRequired }}.',\n errorEnum: 'Must be one of the enumerated values: {{ enum }}.',\n errorExclusiveMaximum: 'Must be less than {{ exclusiveMaximum }}.',\n errorExclusiveMinimum: 'Must be greater than {{ exclusiveMinimum }}.',\n errorFormat: 'Must be a valid {{ format }}.',\n errorItems: 'Must have items that validate against the provided schema.',\n errorMaximum: 'Must be at most {{ maximum }}.',\n errorMaxItems: 'Must have at most {{ maxItems }} items.',\n errorMaxLength: 'Must be at most {{ maxLength }} characters long.',\n errorMaxProperties: 'Must have at most {{ maxProperties }} properties.',\n errorMaxContains: 'Must contain at most {{ maxContains }} items matching the provided schema. It currently contains {{ counter }}.',\n errorMinContains: 'Must contain at least {{ minContains }} items matching the provided schema. It currently contains {{ counter }}.',\n errorMinimum: 'Must be at least {{ minimum }}.',\n errorMinItems: 'Must have at least {{ minItems }} items.',\n errorMinLength: 'Must be at least {{ minLength }} characters long.',\n errorMinProperties: 'Must have at least {{ minProperties }} properties.',\n errorMultipleOf: 'Must be multiple of {{ multipleOf }}.',\n errorNot: 'Must not validate against the provided schema.',\n errorOneOf: 'Must validate against exactly one of the provided schemas. It currently validates against {{ counter }} of the schemas.',\n errorPattern: 'Must match the pattern: \"{{ pattern }}\".',\n errorPrefixItems: 'Item {{ index }} fails validation.',\n errorPropertyNames: 'Property name \"{{ propertyName }}\" fails validation.',\n errorProperties: 'The following properties do not comply with their schemas: {{ properties }}',\n errorRequired: 'Must have the required properties: {{ required }}.',\n errorType: 'Must be of type {{ type }}.',\n errorUnevaluatedProperties: 'Has invalid unevaluated property \"{{ property }}\"',\n errorUniqueItems: 'Must have unique items.',\n arrayDelete: 'Delete item',\n arrayMoveUp: 'Move up',\n arrayMoveDown: 'Move down',\n arrayDrag: 'Drag',\n arrayAdd: 'Add item',\n arrayConfirmDelete: 'Are you sure you want to delete this item?',\n objectAddProperty: 'Add property',\n objectPropertyAdded: 'field was added to the form',\n objectPropertyRemoved: 'field was removed from the form',\n propertiesToggle: 'Properties',\n collapseToggle: 'Collapse'\n}\n","export default {\n en: {\n errorAdditionalProperties: 'Has additional property \"{{ property }}\" but no additional properties are allowed.',\n errorAnyOf: 'Must validate against at least one of the provided schemas.',\n errorConst: 'Must have value of: {{ const }}.',\n errorContains: 'Must contain at least one item matching the provided schema.',\n errorDependentRequired: 'Must have the required properties: {{ dependentRequired }}.',\n errorEnum: 'Must be one of the enumerated values: {{ enum }}.',\n errorExclusiveMaximum: 'Must be less than {{ exclusiveMaximum }}.',\n errorExclusiveMinimum: 'Must be greater than {{ exclusiveMinimum }}.',\n errorFormat: 'Invalid format: {{ format }}.',\n errorItems: 'Must have items that validate against the provided schema.',\n errorMaximum: 'Must be at most {{ maximum }}.',\n errorMaxItems: 'Must have at most {{ maxItems }} items.',\n errorMaxLength: 'Must be at most {{ maxLength }} characters long.',\n errorMaxProperties: 'Must have at most {{ maxProperties }} properties.',\n errorMaxContains: 'Must contain at most {{ maxContains }} items matching the provided schema. It currently contains {{ counter }}.',\n errorMinContains: 'Must contain at least {{ minContains }} items matching the provided schema. It currently contains {{ counter }}.',\n errorMinimum: 'Must be at least {{ minimum }}.',\n errorMinItems: 'Must have at least {{ minItems }} items.',\n errorMinLength: 'Must be at least {{ minLength }} characters long.',\n errorMinProperties: 'Must have at least {{ minProperties }} properties.',\n errorMultipleOf: 'Must be multiple of {{ multipleOf }}.',\n errorNot: 'Must not validate against the provided schema.',\n errorOneOf: 'Must validate against exactly one of the provided schemas. It currently validates against {{ counter }} of the schemas.',\n errorPattern: 'Must match the pattern: \"{{ pattern }}\".',\n errorPrefixItems: 'Item {{ index }} fails validation.',\n errorPropertyNames: 'Property name \"{{ propertyName }}\" fails validation.',\n errorProperties: 'The following properties do not comply with their schemas: {{ properties }}',\n errorRequired: 'Must have the required properties: {{ required }}.',\n errorType: 'Must be of type {{ type }}.',\n errorUnevaluatedProperties: 'Has invalid unevaluated property \"{{ property }}\"',\n errorUniqueItems: 'Must have unique items.',\n arrayDelete: 'Delete item',\n arrayMoveUp: 'Move up',\n arrayMoveDown: 'Move down',\n arrayDrag: 'Drag',\n arrayAdd: 'Add item',\n arrayConfirmDelete: 'Are you sure you want to delete this item?',\n objectAddProperty: 'Add property',\n objectPropertyAdded: 'field was added to the form',\n objectPropertyRemoved: 'field was removed from the form',\n propertiesToggle: 'Properties',\n collapseToggle: 'Collapse'\n },\n de: {\n errorAdditionalProperties: 'Hat die zusätzliche Eigenschaft \"{{ property }}\", aber keine zusätzlichen Eigenschaften sind erlaubt.',\n errorAnyOf: 'Muss mindestens einem der bereitgestellten Schemata entsprechen.',\n errorConst: 'Muss den Wert {{ const }} haben.',\n errorContains: 'Muss mindestens ein Element enthalten, das dem bereitgestellten Schema entspricht.',\n errorDependentRequired: 'Muss die erforderlichen Eigenschaften haben: {{ dependentRequired }}.',\n errorEnum: 'Muss einer der aufgeführten Werte sein: {{ enum }}.',\n errorExclusiveMaximum: 'Muss kleiner als {{ exclusiveMaximum }} sein.',\n errorExclusiveMinimum: 'Muss größer als {{ exclusiveMinimum }} sein.',\n errorFormat: 'Ungültiges Format: {{ format }}.',\n errorItems: 'Muss Elemente enthalten, die dem bereitgestellten Schema entsprechen.',\n errorMaximum: 'Darf höchstens {{ maximum }} sein.',\n errorMaxItems: 'Darf höchstens {{ maxItems }} Elemente enthalten.',\n errorMaxLength: 'Darf höchstens {{ maxLength }} Zeichen lang sein.',\n errorMaxProperties: 'Darf höchstens {{ maxProperties }} Eigenschaften haben.',\n errorMaxContains: 'Darf höchstens {{ maxContains }} Elemente enthalten, die dem bereitgestellten Schema entsprechen. Aktuell enthält es {{ counter }}.',\n errorMinContains: 'Muss mindestens {{ minContains }} Elemente enthalten, die dem bereitgestellten Schema entsprechen. Aktuell enthält es {{ counter }}.',\n errorMinimum: 'Muss mindestens {{ minimum }} sein.',\n errorMinItems: 'Muss mindestens {{ minItems }} Elemente enthalten.',\n errorMinLength: 'Muss mindestens {{ minLength }} Zeichen lang sein.',\n errorMinProperties: 'Muss mindestens {{ minProperties }} Eigenschaften haben.',\n errorMultipleOf: 'Muss ein Vielfaches von {{ multipleOf }} sein.',\n errorNot: 'Darf nicht dem bereitgestellten Schema entsprechen.',\n errorOneOf: 'Muss genau einem der bereitgestellten Schemata entsprechen. Derzeit entspricht es {{ counter }} der Schemata.',\n errorPattern: 'Muss dem Muster \"{{ pattern }}\" entsprechen.',\n errorPrefixItems: 'Element {{ index }} entspricht nicht der Validierung.',\n errorPropertyNames: 'Der Eigenschaftsname \"{{ propertyName }}\" entspricht nicht der Validierung.',\n errorProperties: 'Die folgenden Eigenschaften entsprechen nicht ihren Schemata: {{ properties }}',\n errorRequired: 'Muss die erforderlichen Eigenschaften haben: {{ required }}.',\n errorType: 'Muss vom Typ {{ type }} sein.',\n errorUnevaluatedProperties: 'Hat eine ungültige nicht bewertete Eigenschaft \"{{ property }}\"',\n errorUniqueItems: 'Muss eindeutige Elemente haben.',\n arrayDelete: 'Element löschen',\n arrayMoveUp: 'Nach oben verschieben',\n arrayMoveDown: 'Nach unten verschieben',\n arrayDrag: 'Ziehen',\n arrayAdd: 'Element hinzufügen',\n arrayConfirmDelete: 'Möchten Sie dieses Element wirklich löschen?',\n objectAddProperty: 'Eigenschaft hinzufügen',\n objectPropertyAdded: 'Feld wurde dem Formular hinzugefügt',\n objectPropertyRemoved: 'Feld wurde aus dem Formular entfernt',\n propertiesToggle: 'Eigenschaften',\n collapseToggle: 'Einklappen'\n },\n it: {\n errorAdditionalProperties: 'Ha la proprietà aggiuntiva \"{{ property }}\" ma non sono consentite proprietà aggiuntive.',\n errorAnyOf: 'Deve rispettare almeno uno degli schemi forniti.',\n errorConst: 'Deve avere il valore: {{ const }}.',\n errorContains: 'Deve contenere almeno un elemento che rispetti lo schema fornito.',\n errorDependentRequired: 'Deve avere le proprietà richieste: {{ dependentRequired }}.',\n errorEnum: 'Deve essere uno dei valori elencati: {{ enum }}.',\n errorExclusiveMaximum: 'Deve essere inferiore a {{ exclusiveMaximum }}.',\n errorExclusiveMinimum: 'Deve essere maggiore di {{ exclusiveMinimum }}.',\n errorFormat: 'Formato non valido: {{ format }}.',\n errorItems: 'Deve avere elementi che rispettano lo schema fornito.',\n errorMaximum: 'Deve essere al massimo {{ maximum }}.',\n errorMaxItems: 'Deve avere al massimo {{ maxItems }} elementi.',\n errorMaxLength: 'Deve avere al massimo {{ maxLength }} caratteri.',\n errorMaxProperties: 'Deve avere al massimo {{ maxProperties }} proprietà.',\n errorMaxContains: 'Deve contenere al massimo {{ maxContains }} elementi che rispettano lo schema fornito. Attualmente ne contiene {{ counter }}.',\n errorMinContains: 'Deve contenere almeno {{ minContains }} elementi che rispettano lo schema fornito. Attualmente ne contiene {{ counter }}.',\n errorMinimum: 'Deve essere almeno {{ minimum }}.',\n errorMinItems: 'Deve avere almeno {{ minItems }} elementi.',\n errorMinLength: 'Deve avere almeno {{ minLength }} caratteri.',\n errorMinProperties: 'Deve avere almeno {{ minProperties }} proprietà.',\n errorMultipleOf: 'Deve essere un multiplo di {{ multipleOf }}.',\n errorNot: 'Non deve rispettare lo schema fornito.',\n errorOneOf: 'Deve rispettare esattamente uno degli schemi forniti. Attualmente rispetta {{ counter }} degli schemi.',\n errorPattern: 'Deve rispettare il modello: \"{{ pattern }}\".',\n errorPrefixItems: 'L\\'elemento {{ index }} non è valido.',\n errorPropertyNames: 'Il nome della proprietà \"{{ propertyName }}\" non è valido.',\n errorProperties: 'Le seguenti proprietà non rispettano i loro schemi: {{ properties }}',\n errorRequired: 'Deve avere le proprietà richieste: {{ required }}.',\n errorType: 'Deve essere di tipo {{ type }}.',\n errorUnevaluatedProperties: 'Ha una proprietà non valutata non valida \"{{ property }}\"',\n errorUniqueItems: 'Deve avere elementi univoci.',\n arrayDelete: 'Elimina elemento',\n arrayMoveUp: 'Sposta su',\n arrayMoveDown: 'Sposta giù',\n arrayDrag: 'Trascina',\n arrayAdd: 'Aggiungi elemento',\n arrayConfirmDelete: 'Sei sicuro di voler eliminare questo elemento?',\n objectAddProperty: 'Aggiungi proprietà',\n objectPropertyAdded: 'Campo aggiunto al modulo',\n objectPropertyRemoved: 'Campo rimosso dal modulo',\n propertiesToggle: 'Proprietà',\n collapseToggle: 'Comprimi'\n },\n es: {\n errorAdditionalProperties: 'Tiene la propiedad adicional \"{{ property }}\" pero no se permiten propiedades adicionales.',\n errorAnyOf: 'Debe cumplir con al menos uno de los esquemas proporcionados.',\n errorConst: 'Debe tener el valor: {{ const }}.',\n errorContains: 'Debe contener al menos un elemento que cumpla con el esquema proporcionado.',\n errorDependentRequired: 'Debe tener las propiedades requeridas: {{ dependentRequired }}.',\n errorEnum: 'Debe ser uno de los valores enumerados: {{ enum }}.',\n errorExclusiveMaximum: 'Debe ser menor que {{ exclusiveMaximum }}.',\n errorExclusiveMinimum: 'Debe ser mayor que {{ exclusiveMinimum }}.',\n errorFormat: 'Formato no válido: {{ format }}.',\n errorItems: 'Debe tener elementos que cumplan con el esquema proporcionado.',\n errorMaximum: 'Debe ser como máximo {{ maximum }}.',\n errorMaxItems: 'Debe tener como máximo {{ maxItems }} elementos.',\n errorMaxLength: 'Debe tener como máximo {{ maxLength }} caracteres.',\n errorMaxProperties: 'Debe tener como máximo {{ maxProperties }} propiedades.',\n errorMaxContains: 'Debe contener como máximo {{ maxContains }} elementos que cumplan con el esquema proporcionado. Actualmente contiene {{ counter }}.',\n errorMinContains: 'Debe contener al menos {{ minContains }} elementos que cumplan con el esquema proporcionado. Actualmente contiene {{ counter }}.',\n errorMinimum: 'Debe ser al menos {{ minimum }}.',\n errorMinItems: 'Debe tener al menos {{ minItems }} elementos.',\n errorMinLength: 'Debe tener al menos {{ minLength }} caracteres.',\n errorMinProperties: 'Debe tener al menos {{ minProperties }} propiedades.',\n errorMultipleOf: 'Debe ser múltiplo de {{ multipleOf }}.',\n errorNot: 'No debe cumplir con el esquema proporcionado.',\n errorOneOf: 'Debe cumplir con exactamente uno de los esquemas proporcionados. Actualmente cumple con {{ counter }} de los esquemas.',\n errorPattern: 'Debe coincidir con el patrón: \"{{ pattern }}\".',\n errorPrefixItems: 'El elemento {{ index }} no es válido.',\n errorPropertyNames: 'El nombre de la propiedad \"{{ propertyName }}\" no es válido.',\n errorProperties: 'Las siguientes propiedades no cumplen con sus esquemas: {{ properties }}',\n errorRequired: 'Debe tener las propiedades requeridas: {{ required }}.',\n errorType: 'Debe ser del tipo {{ type }}.',\n errorUnevaluatedProperties: 'Tiene una propiedad no evaluada no válida \"{{ property }}\"',\n errorUniqueItems: 'Debe tener elementos únicos.',\n arrayDelete: 'Eliminar elemento',\n arrayMoveUp: 'Mover hacia arriba',\n arrayMoveDown: 'Mover hacia abajo',\n arrayDrag: 'Arrastrar',\n arrayAdd: 'Agregar elemento',\n arrayConfirmDelete: '¿Estás seguro de que deseas eliminar este elemento?',\n objectAddProperty: 'Agregar propiedad',\n objectPropertyAdded: 'campo fue añadido al formulario',\n objectPropertyRemoved: 'campo fue eliminado del formulario',\n propertiesToggle: 'Propiedades',\n collapseToggle: 'Colapsar'\n }\n}\n","import defaultTranslations from './default-translations.js'\nimport translations from './translations.js'\nimport { mergeDeep, notSet } from '../helpers/utils.js'\n\nclass Translator {\n constructor (config) {\n this.language = config.language || 'en'\n this.translations = mergeDeep({}, translations, config.translations)\n this.defaultTranslations = defaultTranslations\n }\n\n translate (message) {\n let translation = this.translations[this.language][message]\n\n if (notSet(translation)) {\n translation = this.defaultTranslations[message]\n }\n\n return translation\n }\n\n /**\n * Deletes all properties of the class\n */\n destroy () {\n Object.keys(this).forEach((key) => {\n delete this[key]\n })\n }\n}\n\nexport default Translator\n","class JsonWalker {\n constructor (maxDepth = 200) {\n this.maxDepth = maxDepth\n }\n\n traverse (data, callback, node = data, path = '#', depth = 0, parent = null, key = null, customData = {}) {\n if (!node || typeof node !== 'object' || depth > this.maxDepth) {\n return\n }\n\n // Pass customData to the callback as an additional argument\n const newNode = callback(node, path, parent, key, depth, customData)\n\n if (newNode !== undefined) {\n if (parent && key !== null) {\n parent[key] = newNode\n } else if (path === '#') {\n Object.keys(data).forEach(k => delete data[k]) // Clear root\n Object.assign(data, newNode) // Replace root object\n }\n node = newNode\n }\n\n if (typeof node === 'object' && node !== null) {\n Object.entries(node).forEach(([k, v]) =>\n this.traverse(data, callback, v, `${path}/${k}`, depth + 1, node, k, customData)\n )\n }\n }\n}\n\nexport default JsonWalker\n","import Validator from './validation/validator.js'\nimport EventEmitter from './event-emitter.js'\nimport InstanceIfThenElse from './instances/if-then-else.js'\nimport InstanceMultiple from './instances/multiple.js'\nimport InstanceBoolean from './instances/boolean.js'\nimport InstanceObject from './instances/object.js'\nimport InstanceArray from './instances/array.js'\nimport InstanceString from './instances/string.js'\nimport InstanceNumber from './instances/number.js'\nimport InstanceNull from './instances/null.js'\nimport {\n clone, combineDeep,\n isArray, isObject,\n isSet,\n notSet\n} from './helpers/utils.js'\nimport {\n getSchemaAnyOf,\n getSchemaIf,\n getSchemaOneOf,\n getSchemaType, getSchemaXOption\n} from './helpers/schema.js'\nimport { bootstrapIcons, fontAwesome3, fontAwesome4, fontAwesome5, fontAwesome6, glyphicons } from './themes/icons/icons.js'\nimport UiResolver from './ui-resolver.js'\nimport Translator from './i18n/translator.js'\nimport JsonWalker from './json-walker.js'\n\n/**\n * Represents a Jedison instance.\n */\nclass Jedison extends EventEmitter {\n /**\n * Creates a Jedison instance.\n * @param {object} options - Options object\n * @param {object|boolean} options.schema - A JSON schema\n * @param {boolean} options.container - Where the UI controls will be rendered\n */\n constructor (options) {\n super()\n\n this.options = Object.assign({\n container: null,\n iconLib: null,\n theme: null,\n refParser: null,\n editJsonData: false,\n enablePropertiesToggle: false,\n enableCollapseToggle: false,\n btnContents: true,\n btnIcons: true,\n arrayDelete: true,\n arrayMove: true,\n arrayAdd: true,\n startCollapsed: false,\n deactivateNonRequired: false,\n schema: {},\n showErrors: 'change',\n switcherInput: 'select',\n data: undefined,\n assertFormat: false,\n customEditors: [],\n constraints: [],\n hiddenInputAttributes: {},\n id: '',\n radiosInline: false,\n language: 'en',\n translations: {},\n settings: {},\n useConstraintAttributes: true,\n parseMarkdown: false,\n purifyHtml: true,\n domPurifyOptions: {},\n mergeAllOf: false,\n enforceConst: false,\n enforceRequired: true,\n enforceEnumDefault: true, // todo: deprecated\n enforceAdditionalProperties: true,\n enforceMinItems: true,\n enforceMaxItems: true,\n enforceEnum: true,\n debug: false\n }, options)\n\n /**\n * Roots symbol used in paths\n * @type {string}\n */\n this.rootName = '#'\n\n /**\n * Separator symbol used in paths\n * @type {string}\n */\n this.pathSeparator = '/'\n\n /**\n * List of registered instances\n * @type {object}\n */\n this.instances = new Map()\n\n /**\n * The root editor\n * @type {Jedison}\n */\n this.root = null\n\n /**\n * The Validator instance used to translate UI texts and error messages\n * @type {Translator}\n */\n this.translator = new Translator({\n language: this.options.language,\n translations: this.options.translations\n })\n\n /**\n * The Validator instance used to validate instance values\n * @type {Validator}\n */\n this.validator = null\n\n /**\n * A json schema used\n * @type {*}\n */\n this.schema = {}\n\n /**\n * A list of watched instances and their callbacks\n * @type {*}\n */\n this.watched = {}\n\n this.theme = null\n\n this.uiResolver = null\n\n /**\n * A RefParser instance\n * @type {RefParser}\n */\n this.refParser = this.options.refParser ? this.options.refParser : null\n\n this.walker = new JsonWalker()\n\n /**\n * The id of the last focused element.\n * Used to reapply focus to the element that was removed and re-appended to the DOM\n * @type String\n */\n this.lastFocusedId = null\n\n this.isEditor = false\n\n this.debug = false\n\n this.init()\n this.bindEventListeners()\n this.updateInstancesWatchedData()\n }\n\n /**\n * Initializes instance properties\n */\n init () {\n if (this.options.container) {\n this.isEditor = true\n }\n\n this.uiResolver = new UiResolver({\n customEditors: this.options.customEditors,\n refParser: this.refParser\n })\n\n this.theme = this.options.theme\n\n if (this.theme) {\n this.theme.btnContents = this.options.btnContents\n this.theme.btnIcons = this.options.btnIcons\n }\n\n if (isSet(this.options.iconLib)) {\n switch (this.options.iconLib) {\n case 'glyphicons':\n this.theme.icons = glyphicons\n break\n case 'bootstrap-icons':\n this.theme.icons = bootstrapIcons\n break\n case 'fontawesome3':\n this.theme.icons = fontAwesome3\n break\n case 'fontawesome4':\n this.theme.icons = fontAwesome4\n break\n case 'fontawesome5':\n this.theme.icons = fontAwesome5\n break\n case 'fontawesome6':\n this.theme.icons = fontAwesome6\n break\n }\n }\n\n this.schema = this.options.schema\n\n this.validator = new Validator({\n refParser: this.refParser,\n assertFormat: this.options.assertFormat,\n translator: this.translator,\n constraints: this.options.constraints\n })\n\n this.root = this.createInstance({\n jedison: this,\n schema: this.options.schema,\n path: this.rootName\n })\n\n if (isSet(this.options.data)) {\n this.root.setValue(this.options.data, false)\n }\n\n if (this.options.container) {\n this.isEditor = true\n this.container = this.options.container\n this.appendHiddenInput()\n this.container.appendChild(this.root.ui.control.container)\n this.container.classList.add('jedi-ready')\n }\n }\n\n bindEventListeners () {\n if (this.root) {\n this.root.on('change', (initiator) => {\n this.emit('change', initiator)\n })\n }\n\n this.on('instance-change', (instance) => {\n for (const [path, callbacks] of Object.entries(this.watched)) {\n if (instance.path === path) {\n callbacks.forEach((callback) => {\n callback()\n })\n }\n }\n })\n\n if (this.hiddenInput) {\n this.on('change', (initiator) => {\n this.hiddenInput.value = JSON.stringify(this.getValue())\n\n if (initiator === 'user') {\n setTimeout(() => {\n this.refreshFocus()\n }, 0)\n }\n })\n\n document.addEventListener('focus', (event) => {\n this.lastKeyEvent = null\n this.lastFocusedId = event.target.id\n }, true)\n\n document.addEventListener('keydown', (event) => {\n this.lastKeyEvent = event\n })\n }\n }\n\n updateInstancesWatchedData () {\n Object.values(this.watched).forEach((callbacks) => {\n callbacks.forEach((callback) => {\n callback()\n })\n })\n }\n\n /**\n * Reapplies focus to the element that was removed and re-appended to the DOM\n * @type String\n */\n refreshFocus () {\n if (!this.lastFocusedId) {\n return\n }\n\n const el = document.getElementById(this.lastFocusedId)\n\n if (el) {\n el.focus()\n\n if (this.lastKeyEvent && this.lastKeyEvent.key === 'Tab') {\n this.simulateTab(el, this.lastKeyEvent.shiftKey)\n }\n }\n }\n\n simulateTab (currentElement, shift) {\n const focusableElements = document.querySelectorAll('input, button, select, textarea, a[href], [tabindex]:not([tabindex=\"-1\"])')\n const index = Array.prototype.indexOf.call(focusableElements, currentElement)\n\n if (index !== -1) {\n if (shift) {\n if (index > 0) {\n focusableElements[index - 1].focus()\n }\n } else {\n if (index + 1 < focusableElements.length) {\n focusableElements[index + 1].focus()\n }\n }\n }\n }\n\n /**\n * Appends a hidden input to the root container whose value will be the value\n * of the root instance.\n */\n appendHiddenInput () {\n const hiddenControl = this.theme.getInputControl({\n type: 'hidden',\n id: 'jedi-hidden-input'\n })\n\n this.hiddenInput = hiddenControl.input\n this.hiddenInput.setAttribute('name', 'json')\n this.hiddenInput.removeAttribute('aria-describedby')\n this.hiddenInput.removeAttribute('aria-hidden', 'true')\n\n if (this.options.hiddenInputAttributes && isObject(this.options.hiddenInputAttributes)) {\n Object.keys(this.options.hiddenInputAttributes).forEach(attr => {\n this.hiddenInput.setAttribute(attr, this.options.hiddenInputAttributes[attr])\n })\n }\n\n this.container.appendChild(this.hiddenInput)\n this.hiddenInput.value = JSON.stringify(this.getValue())\n }\n\n /**\n * Adds a child instance pointer to the instances list\n */\n register (instance) {\n this.instances.set(instance.path, instance)\n }\n\n /**\n * Deletes a child instance pointer from the instances list\n */\n unregister (instance) {\n this.instances.delete(instance.path)\n }\n\n logIfEditor (...params) {\n if (this.isEditor) {\n console.log(...params)\n }\n }\n\n warnIfEditor (...params) {\n if (this.isEditor) {\n console.warn(...params)\n }\n }\n\n /**\n * Creates a json instance and dereference schema on the fly if needed.\n */\n createInstance (config) {\n if (this.refParser) {\n config.schema = this.refParser.expand(config.schema)\n\n // allOf\n this.walker.traverse(config.schema, (node) => {\n if (node.allOf && Array.isArray(node.allOf)) {\n node.allOf.forEach((subschema, index) => {\n node.allOf[index] = this.refParser.expand(subschema)\n })\n }\n\n if (node.oneOf && Array.isArray(node.oneOf)) {\n node.oneOf.forEach((subschema, index) => {\n node.oneOf[index] = this.refParser.expand(subschema)\n })\n }\n\n if (node.oneOf && Array.isArray(node.oneOf)) {\n node.oneOf.forEach((subschema, index) => {\n node.oneOf[index] = this.refParser.expand(subschema)\n })\n }\n })\n }\n\n // merge allOf if editor and option is true\n if (this.isEditor) {\n // extract if then combinations\n this.walker.traverse(config.schema, (node) => {\n if (node.allOf && Array.isArray(node.allOf)) {\n if (isSet(node['x-allOf-merged'])) {\n return\n }\n\n const mergeAllOf = getSchemaXOption(node, 'mergeAllOf') ?? this.options.mergeAllOf\n\n const conditionals = []\n let nodeFinal = clone(node) // To store merged static properties\n // delete nodeFinal.allOf // do not delete allOf to keep validation clean\n\n node.allOf.forEach((subschema) => {\n if (subschema.if && subschema.then) {\n conditionals.push({\n if: subschema.if,\n then: subschema.then,\n else: subschema.else || null\n })\n } else {\n // Merge non-conditional schemas normally if mergeAllOf is true\n nodeFinal = mergeAllOf ? combineDeep({}, nodeFinal, subschema) : nodeFinal\n }\n })\n\n nodeFinal['x-allOf-merged'] = true\n\n // Build a long sequential if-then-else chain\n let sequentialIfThenElse = null\n\n for (let i = conditionals.length - 1; i >= 0; i--) {\n if (sequentialIfThenElse === null) {\n sequentialIfThenElse = conditionals[i]\n } else {\n sequentialIfThenElse = {\n if: conditionals[i].if,\n then: conditionals[i].then,\n else: sequentialIfThenElse\n }\n }\n }\n\n // Attach the final sequential if-then-else structure to nodeFinal\n if (sequentialIfThenElse) {\n Object.assign(nodeFinal, sequentialIfThenElse)\n }\n\n return nodeFinal\n }\n })\n\n // oneOf\n this.walker.traverse(config.schema, (node) => {\n if (node.oneOf && Array.isArray(node.oneOf)) {\n const nodeClone = clone(node)\n delete nodeClone.oneOf\n\n node.oneOf = node.oneOf.map((subschema) => {\n return combineDeep({}, nodeClone, subschema)\n })\n\n return {\n oneOf: node.oneOf\n }\n }\n })\n\n // anyOf\n this.walker.traverse(config.schema, (node) => {\n if (node.anyOf && Array.isArray(node.anyOf)) {\n const nodeClone = clone(node)\n delete nodeClone.anyOf\n\n node.anyOf = node.anyOf.map((subschema) => {\n return combineDeep({}, nodeClone, subschema)\n })\n\n return {\n anyOf: node.anyOf\n }\n }\n })\n\n // not\n this.walker.traverse(config.schema, (node) => {\n if (node.not && isObject(node.not)) {\n const nodeClone = clone(node)\n delete nodeClone.not\n\n node.not = combineDeep({}, nodeClone, node.not)\n }\n })\n }\n\n const schemaOneOf = getSchemaOneOf(config.schema)\n const schemaAnyOf = getSchemaAnyOf(config.schema)\n const schemaIf = getSchemaIf(config.schema)\n const schemaType = getSchemaType(config.schema)\n\n if (this.debug && notSet(schemaType) && !isSet(schemaOneOf) && !isSet(schemaAnyOf) && !isSet(schemaIf)) {\n console.warn('TYPE NOT SET', config.schema, config.path)\n }\n\n if (isSet(schemaAnyOf) || isSet(schemaOneOf) || schemaType === 'any' || isArray(schemaType) || notSet(schemaType)) {\n return new InstanceMultiple(config)\n }\n\n if (isSet(schemaIf)) {\n return new InstanceIfThenElse(config)\n }\n\n if (schemaType === 'object') {\n return new InstanceObject(config)\n }\n\n if (schemaType === 'array') {\n return new InstanceArray(config)\n }\n\n if (schemaType === 'string') {\n return new InstanceString(config)\n }\n\n if (schemaType === 'number' || schemaType === 'integer') {\n return new InstanceNumber(config)\n }\n\n if (schemaType === 'boolean') {\n return new InstanceBoolean(config)\n }\n\n if (schemaType === 'null') {\n return new InstanceNull(config)\n }\n }\n\n /**\n * Returns the value of the root instance\n * @return {*}\n */\n getValue () {\n return this.root.getValue()\n }\n\n /**\n * Sets the value of the root instance\n */\n setValue () {\n this.root.setValue(...arguments)\n this.updateInstancesWatchedData()\n }\n\n /**\n * Returns an instance by path\n * @return {*}\n */\n getInstance (path) {\n return this.instances.get(path)\n }\n\n /**\n * Disables the root instance and it's children user interfaces\n */\n disable () {\n this.root.ui.disable()\n }\n\n /**\n * Enables the root instance and it's children user interfaces\n */\n enable () {\n this.root.ui.enable()\n }\n\n /**\n * Get an array of validation errors\n * @param {string[]} filters - Types to include, e.g., ['errors', 'warnings']\n * @returns {*[]}\n */\n getErrors (filters = ['error']) {\n let results = []\n\n for (const instance of this.instances.values()) {\n results = [...results, ...instance.getErrors()]\n }\n\n return results.filter((error) => {\n return filters.includes(error.type.toLowerCase())\n })\n }\n\n export () {\n const results = []\n\n for (const instance of this.instances.values()) {\n results.push({\n path: instance.path ?? '-',\n type: instance.schema.type ?? '-',\n title: instance.ui.getTitle() ?? '-',\n value: instance.getValue() ?? '-'\n })\n }\n\n return results\n }\n\n /**\n * Displays validation errors in the respective editors.\n * If an errors list is passed, it will display these errors;\n * otherwise, it will retrieve existing errors from the instance.\n *\n * @param {Array|null} errorsList - An optional array containing error messages.\n * @returns {boolean} Returns `true` if the container exists and errors are displayed,\n * or `false` if there is no container and thus no errors are displayed.\n */\n showValidationErrors (errorsList = null) {\n if (!this.options.container) {\n return false\n }\n\n const errors = errorsList ?? this.getErrors()\n\n for (const instance of this.instances.values()) {\n instance.ui.showValidationErrors(errors, true)\n }\n }\n\n watch (path, callback) {\n if (!this.watched[path]) {\n this.watched[path] = []\n }\n\n this.watched[path].push(callback)\n }\n\n unwatch (path, callback) {\n if (!this.watched[path]) {\n return\n }\n\n this.watched[path] = this.watched[path].filter(cb => cb !== callback)\n\n if (this.watched[path].length === 0) {\n delete this.watched[path]\n }\n }\n\n /**\n * Destroy the root instance and it's children\n */\n destroy () {\n this.root.destroy()\n\n if (this.options.container) {\n this.container.innerHTML = ''\n }\n\n Object.keys(this).forEach((key) => {\n delete this[key]\n })\n }\n}\n\nexport default Jedison\n","import { mergeDeep } from '../helpers/utils.js'\nimport JsonWalker from '../json-walker.js'\n\nclass RefParser {\n constructor () {\n this.refs = {}\n this.data = {}\n this.iterations = 0\n this.maxIterations = 1000\n this.cycles = []\n this.walker = new JsonWalker()\n }\n\n async dereference (schema) {\n await this.collectRefs(schema)\n\n while (this.iterations < this.maxIterations) {\n if (this.refsResolved()) {\n break\n }\n\n this.iterations++\n await this.collectRefs(schema)\n }\n\n const missingRefs = Object.entries(this.refs).filter(([key, value]) => value === null).map(([key]) => key)\n\n if (missingRefs.length) {\n console.warn('Missing refs:', JSON.stringify(missingRefs))\n }\n\n this.cycles = this.findRecursiveRefs(this.refs)\n }\n\n refsResolved () {\n return Object.values(this.refs).every((value) => {\n return value !== null\n })\n }\n\n /**\n * Traverses the given schema recursively and for each schema with $ref\n * add a new property in the this.refs object with key being the json path to that schema.\n * If the ref has no value in data will be given a value of null. This value will be later\n * replaced in a future iteration. At that time the data will be available\n * @param schema\n * @param path\n */\n async collectRefs (schema, path = '#') {\n if (typeof schema !== 'object' || schema === null) {\n return\n }\n\n for (const [key, value] of Object.entries(schema)) {\n const nextPath = path ? `${path}/${key}` : `/${key}`\n\n if (this.hasRef(schema)) {\n const ref = schema['$ref']\n\n if (this.isExternalRef(ref)) {\n const resolvedSchema = await this.load(ref)\n this.refs[ref] = resolvedSchema\n await this.collectRefs(resolvedSchema, nextPath)\n } else {\n this.refs[ref] = this.data[ref] ?? null\n }\n }\n\n this.data[path] = schema\n\n await this.collectRefs(value, nextPath)\n }\n }\n\n hasRef (schema) {\n return typeof schema['$ref'] !== 'undefined' && typeof schema['$ref'] === 'string'\n }\n\n isExternalRef (ref) {\n if (typeof ref !== 'string') {\n return false\n }\n\n return ref.startsWith('http') || ref.startsWith('https')\n }\n\n isObject (value) {\n return value !== null && typeof value === 'object'\n }\n\n findRecursiveRefs (defs) {\n const cycles = new Set()\n\n function checkRef (path, visited, stack) {\n if (visited.has(path)) {\n const cycleStartIndex = stack.indexOf(path)\n if (cycleStartIndex !== -1) {\n const cyclePath = stack.slice(cycleStartIndex).concat(path) // Close the cycle\n\n // Normalize cycle to avoid duplicates\n const minIndex = cyclePath.reduce((minIdx, ref, idx) =>\n ref < cyclePath[minIdx] ? idx : minIdx, 0)\n const normalizedCycle = [...cyclePath.slice(minIndex), ...cyclePath.slice(0, minIndex)]\n const cycleSignature = normalizedCycle.join(' → ')\n\n cycles.add(cycleSignature)\n }\n return\n }\n if (!defs[path]) return\n\n visited.add(path)\n stack.push(path)\n\n function traverse (value) {\n if (typeof value === 'object' && value !== null) {\n if (value.$ref) checkRef(value.$ref, visited, stack)\n for (const key in value) traverse(value[key])\n }\n }\n\n traverse(defs[path])\n\n visited.delete(path)\n stack.pop()\n }\n\n for (const key in defs) {\n checkRef(key, new Set(), [])\n }\n\n return [...cycles] // Convert Set back to array for output\n }\n\n hasRefCycles () {\n return this.cycles.length > 0\n }\n\n expand (schema) {\n const cloneSchema = JSON.parse(JSON.stringify(schema))\n\n if (this.isObject(cloneSchema) && this.hasRef(cloneSchema)) {\n const ref = cloneSchema.$ref\n delete cloneSchema['$ref']\n return this.expand(mergeDeep({}, this.refs[ref], cloneSchema))\n }\n\n return cloneSchema\n }\n\n expandRecursive (schema) {\n let mustContinue = true\n\n while (mustContinue) {\n mustContinue = false\n\n this.walker.traverse(schema, (node, path, parent, key) => {\n if (node.$ref && typeof node.$ref === 'string' && parent && key !== null) {\n parent[key] = this.expand(node)\n mustContinue = true\n }\n })\n }\n }\n\n /**\n * Loads a schema with a synchronous http request\n * @param uri\n * @returns {any}\n */\n async load (uri) {\n try {\n const response = await fetch(uri)\n if (!response.ok) {\n throw new Error('Network response was not ok')\n }\n return await response.json()\n } catch (error) {\n console.error('Error loading', uri, error)\n throw error\n }\n }\n}\n\nexport default RefParser\n","import { generateRandomID, isObject, isSet, isString } from '../helpers/utils.js'\n\n/**\n * Represents a Theme instance.\n */\nclass Theme {\n constructor (icons = null) {\n this.icons = icons\n this.useToggleEvents = true\n this.btnContents = true\n this.btnIcons = true\n this.init()\n }\n\n /**\n * Inits some instance properties\n */\n init () {\n this.useToggleEvents = true\n }\n\n /**\n * Used to wrap the editor UI elements\n */\n getEditorContainer () {\n const html = document.createElement('div')\n html.classList.add('jedi-editor-container')\n return html\n }\n\n /**\n * Used to group several controls\n */\n getFieldset () {\n const html = document.createElement('fieldset')\n html.classList.add('jedi-editor-fieldset')\n html.setAttribute('role', 'group')\n return html\n }\n\n /**\n * Represents a caption for the content of its parent fieldset\n */\n getLegend (config) {\n const left = document.createElement('div')\n const right = document.createElement('div')\n const legend = document.createElement('legend')\n const legendText = document.createElement('label')\n const infoContainer = document.createElement('span')\n const dummyInput = document.createElement('input')\n const legendLabelId = 'legend-label-' + config.id\n const dummyInputId = 'legend-dummy-input-' + config.id\n\n left.classList.add('jedi-editor-legend-left')\n right.classList.add('jedi-editor-legend-right')\n\n legend.classList.add('jedi-editor-legend')\n legend.style.fontSize = 'inherit'\n legend.setAttribute('aria-labelledby', legendLabelId)\n\n legendText.classList.add('jedi-title')\n legendText.classList.add('jedi-legend')\n legendText.setAttribute('id', legendLabelId)\n legendText.innerHTML = config.content\n\n infoContainer.classList.add('jedi-editor-info-container')\n infoContainer.setAttribute('for', dummyInputId)\n\n dummyInput.setAttribute('aria-hidden', 'true')\n dummyInput.setAttribute('type', 'hidden')\n dummyInput.setAttribute('id', dummyInputId)\n\n this.visuallyHidden(dummyInput)\n\n if (config.titleHidden) {\n this.visuallyHidden(legendText)\n }\n\n legend.appendChild(left)\n legend.appendChild(right)\n left.appendChild(legendText)\n left.appendChild(infoContainer)\n legendText.appendChild(dummyInput)\n\n return { left, right, legend, legendText, infoContainer }\n }\n\n /**\n * Used to group several controls\n */\n getRadioFieldset () {\n const fieldset = document.createElement('fieldset')\n fieldset.classList.add('jedi-editor-radio-fieldset')\n fieldset.setAttribute('role', 'group')\n fieldset.style.marginBottom = '15px'\n fieldset.style.fontSize = 'inherit'\n return fieldset\n }\n\n /**\n * Represents a caption for the content of its parent fieldset\n */\n getRadioLegend (config) {\n const legendLabelId = 'legend-label-' + config.id\n const legend = document.createElement('legend')\n const legendText = document.createElement('label')\n const dummyInput = document.createElement('input')\n\n legend.classList.add('jedi-editor-legend')\n legend.style.fontSize = 'inherit'\n legend.setAttribute('aria-labelledby', legendLabelId)\n\n legendText.classList.add('jedi-title')\n legendText.classList.add('jedi-label')\n legendText.innerHTML = config.content\n legendText.setAttribute('id', legendLabelId)\n\n dummyInput.setAttribute('aria-hidden', 'true')\n dummyInput.setAttribute('type', 'hidden')\n dummyInput.setAttribute('disabled', '')\n\n this.visuallyHidden(dummyInput)\n\n legend.appendChild(legendText)\n legendText.appendChild(dummyInput)\n\n return { legend, legendText }\n }\n\n /**\n * Represents a caption for the content of its parent fieldset\n */\n getLabel (config) {\n const label = document.createElement('label')\n const labelText = document.createElement('span')\n const icon = document.createElement('i')\n\n label.setAttribute('for', config.for)\n label.classList.add('jedi-title')\n label.classList.add('jedi-label')\n labelText.innerHTML = config.text\n\n if (config.visuallyHidden) {\n this.visuallyHidden(label)\n }\n\n if (config.titleIconClass) {\n this.addIconClass(icon, config.titleIconClass)\n }\n\n if (config.titleIconClass) {\n label.appendChild(icon)\n }\n\n label.appendChild(labelText)\n\n return { label, labelText, icon }\n }\n\n getFakeLabel (config) {\n const label = document.createElement('label')\n const labelText = document.createElement('span')\n const icon = document.createElement('i')\n const dummyInput = document.createElement('input')\n\n label.setAttribute('for', config.for)\n label.classList.add('jedi-title')\n label.classList.add('jedi-label')\n\n if (config.visuallyHidden) {\n this.visuallyHidden(label)\n }\n\n labelText.innerHTML = config.content\n\n if (config.titleIconClass) {\n this.addIconClass(icon, config.titleIconClass)\n }\n\n dummyInput.setAttribute('aria-hidden', 'true')\n dummyInput.setAttribute('type', 'hidden')\n dummyInput.setAttribute('disabled', '')\n dummyInput.setAttribute('id', config.for)\n this.visuallyHidden(dummyInput)\n\n label.appendChild(icon)\n label.appendChild(labelText)\n label.appendChild(dummyInput)\n\n return { label, labelText, icon, dummyInput }\n }\n\n /**\n * Returns a icon element\n */\n addIconClass (element, classes = '') {\n let iconClasses = classes.split(' ')\n iconClasses = iconClasses.filter((className) => className.length > 0)\n\n if (iconClasses) {\n iconClasses.forEach((className) => {\n element.classList.add(className)\n })\n }\n }\n\n getOptInWrapper () {\n const optInWrapper = document.createElement('span')\n const optInContainer = document.createElement('span')\n const otherContainer = document.createElement('span')\n\n optInWrapper.classList.add('jedi-opt-in-wrapper')\n optInWrapper.style.display = 'flex'\n optInWrapper.style.alignItems = 'center'\n\n optInContainer.classList.add('jedi-opt-in-container')\n\n otherContainer.classList.add('jedi-title-container')\n otherContainer.style.flexGrow = '1'\n\n optInWrapper.appendChild(otherContainer)\n optInWrapper.appendChild(optInContainer)\n\n return { optInWrapper, optInContainer, otherContainer }\n }\n\n /**\n * Container for complex editors like arrays and objects\n */\n getCard () {\n const html = document.createElement('div')\n html.classList.add('jedi-editor-card')\n return html\n }\n\n /**\n * Header for cards\n */\n getCardHeader () {\n const html = document.createElement('div')\n html.classList.add('jedi-editor-card-header')\n return html\n }\n\n /**\n * A body for the cards\n */\n getCardBody () {\n const html = document.createElement('div')\n html.classList.add('jedi-editor-card-body')\n return html\n }\n\n /**\n * Wrapper for editor actions buttons\n */\n getActionsSlot () {\n const html = document.createElement('div')\n html.classList.add('jedi-actions-slot')\n return html\n }\n\n /**\n * Wrapper for editor array specific actions buttons\n */\n getArrayActionsSlot () {\n const html = document.createElement('span')\n html.classList.add('jedi-array-actions-slot')\n return html\n }\n\n /**\n * Wrapper for child editors\n */\n getChildrenSlot () {\n const html = document.createElement('div')\n html.classList.add('jedi-children-slot')\n return html\n }\n\n /**\n * Wrapper for error messages\n */\n getMessagesSlot (config = {}) {\n const html = document.createElement('div')\n html.classList.add('jedi-messages-slot')\n html.setAttribute('aria-atomic', 'false')\n html.setAttribute('aria-live', 'polite')\n\n if (config.id) {\n html.setAttribute('id', config.id)\n }\n\n return html\n }\n\n /**\n * Wrapper for editor controls\n */\n getControlSlot () {\n const html = document.createElement('div')\n html.classList.add('jedi-control-slot')\n return html\n }\n\n /**\n * Toggles the ObjectEditor properties wrapper visibility\n */\n getPropertiesToggle (config) {\n const toggle = this.getButton(config)\n toggle.classList.add('jedi-properties-toggle')\n\n toggle.addEventListener('click', () => {\n if (config.propertiesContainer.open) {\n config.propertiesContainer.close()\n } else {\n config.propertiesContainer.showModal()\n }\n })\n\n return toggle\n }\n\n /**\n * Container that will collapse and expand to show and hide it contents\n */\n getCollapse (config) {\n const collapse = document.createElement('div')\n collapse.classList.add('jedi-collapse')\n collapse.setAttribute('id', config.id)\n\n if (this.useToggleEvents && config.startCollapsed) {\n collapse.style.display = 'none'\n }\n\n return collapse\n }\n\n /**\n * Toggle button for collapse\n */\n getCollapseToggle (config) {\n const toggle = this.getButton(config)\n toggle.classList.add('jedi-collapse-toggle')\n toggle.setAttribute('always-enabled', '')\n\n if (this.useToggleEvents) {\n toggle.addEventListener('click', () => {\n if (config.collapse.style.display === 'none') {\n config.collapse.style.display = 'block'\n } else {\n config.collapse.style.display = 'none'\n }\n })\n }\n\n let collapsed = config.startCollapsed\n\n if (collapsed) {\n toggle.setAttribute('aria-expanded', 'false')\n } else {\n toggle.setAttribute('aria-expanded', 'true')\n }\n\n toggle.style.transition = 'transform 0.1s ease'\n\n if (collapsed) {\n toggle.style.transform = 'rotate(90deg)'\n }\n\n toggle.addEventListener('click', () => {\n if (collapsed) {\n toggle.style.transform = 'rotate(0deg)'\n } else {\n toggle.style.transform = 'rotate(90deg)'\n }\n\n collapsed = !collapsed\n })\n\n return toggle\n }\n\n /**\n * Container for properties editing elements like property activators\n */\n getPropertiesSlot (config) {\n const html = document.createElement('dialog')\n html.classList.add('jedi-properties-slot')\n html.setAttribute('id', config.id)\n\n window.addEventListener('click', (event) => {\n if (event.target === html) {\n html.close()\n }\n })\n\n return html\n }\n\n /**\n * Container for properties editing elements like property activators\n */\n getJsonData (config) {\n // dialog\n const dialog = document.createElement('dialog')\n dialog.classList.add('jedi-json-data')\n dialog.setAttribute('id', config.id)\n\n window.addEventListener('click', (event) => {\n if (event.target === dialog) {\n dialog.close()\n }\n })\n\n // toggle\n const toggle = this.getButton({\n // content: config.propertiesToggleContent, // todo: use text config or something\n id: 'jedi-json-data-toggle-' + config.id,\n icon: 'edit'\n })\n\n toggle.classList.add('jedi-json-data-toggle')\n\n toggle.addEventListener('click', () => {\n if (dialog.open) {\n dialog.close()\n } else {\n dialog.showModal()\n }\n })\n\n const control = document.createElement('div')\n\n // label\n const { label } = this.getLabel({\n for: 'json-data-input-' + config.id,\n text: 'JSON Data'\n })\n\n // input\n const input = document.createElement('textarea')\n input.setAttribute('id', 'json-data-input-' + config.id)\n input.cols = 60\n input.style.whiteSpace = 'pre'\n input.style.overflowX = 'auto'\n input.style.resize = 'both'\n input.style.maxHeight = '60vh'\n\n // saveBtn\n const saveBtn = this.getButton({\n // content: config.propertiesToggleContent, // todo: use text config or something\n id: 'jedi-json-data-save-' + config.id,\n icon: 'save'\n })\n\n dialog.appendChild(control)\n control.appendChild(label)\n control.appendChild(input)\n dialog.appendChild(saveBtn)\n\n return {\n dialog,\n toggle,\n control,\n input,\n saveBtn\n }\n }\n\n /**\n * Container for screen reader announced messages\n */\n getPropertiesAriaLive () {\n const html = document.createElement('div')\n html.classList.add('jedi-properties-aria-live')\n html.setAttribute('role', 'status')\n html.setAttribute('aria-live', 'polite')\n return html\n }\n\n /**\n * A message that will be announced by screen reader\n */\n getAriaLiveMessage (message) {\n const html = document.createElement('p')\n html.classList.add('jedi-aria-live-message')\n html.textContent = message\n this.visuallyHidden(html)\n return html\n }\n\n /**\n * Wrapper for property activators\n */\n getPropertiesActivators () {\n const html = document.createElement('div')\n html.classList.add('jedi-properties-activators')\n return html\n }\n\n /**\n * Group for property activators\n */\n getPropertiesGroup (config = {}) {\n const container = document.createElement('div')\n container.classList.add('jedi-properties-group-container')\n\n const group = document.createElement('div')\n group.classList.add('jedi-properties-group')\n\n const name = document.createElement('p')\n name.classList.add('jedi-properties-group-name')\n name.textContent = config.name ?? ''\n\n container.appendChild(name)\n container.appendChild(group)\n return { container, group, name }\n }\n\n /**\n * Wrapper buttons\n */\n getBtnGroup () {\n const html = document.createElement('span')\n html.classList.add('jedi-btn-group')\n return html\n }\n\n /**\n * A button\n */\n getButton (config = {}) {\n const button = document.createElement('button')\n const text = document.createElement('span')\n const icon = document.createElement('i')\n\n button.classList.add('jedi-btn')\n button.setAttribute('type', 'button')\n\n if (config.value) {\n button.value = config.value\n }\n\n if (config.id) {\n button.setAttribute('id', config.id)\n }\n\n text.textContent = ' ' + config.content\n\n if (this.btnIcons && this.icons && config.icon) {\n this.addIconClass(icon, this.icons[config.icon])\n icon.setAttribute('title', config.content)\n }\n\n if (!this.btnContents) {\n this.visuallyHidden(text)\n }\n\n if (this.icons && config.icon) {\n button.appendChild(icon)\n }\n\n button.appendChild(text)\n\n return button\n }\n\n getAddPropertyButton (config) {\n const html = this.getButton(config)\n html.classList.add('jedi-add-property-btn')\n return html\n }\n\n /**\n * Array \"add\" item button\n */\n getArrayBtnAdd (config) {\n const html = this.getButton({\n content: config.content,\n icon: 'add'\n })\n html.classList.add('jedi-array-add')\n return html\n }\n\n /**\n * Array \"delete\" item button\n */\n getDeleteItemBtn (config) {\n const deleteItemBtn = this.getButton({\n content: config.content,\n icon: 'delete'\n })\n deleteItemBtn.classList.add('jedi-array-delete')\n return deleteItemBtn\n }\n\n /**\n * Array \"move up\" item button\n */\n getMoveUpItemBtn (config) {\n const moveUpItemBtn = this.getButton({\n content: config.content,\n icon: 'moveUp'\n })\n moveUpItemBtn.classList.add('jedi-array-move-up')\n return moveUpItemBtn\n }\n\n /**\n * Array \"move down\" item button\n */\n getMoveDownItemBtn (config) {\n const moveDownItemBtn = this.getButton({\n content: config.content,\n icon: 'moveDown'\n })\n moveDownItemBtn.classList.add('jedi-array-move-down')\n return moveDownItemBtn\n }\n\n getDragItemBtn (config) {\n const dragItemBtn = this.getButton({\n content: config.content,\n icon: 'drag'\n })\n dragItemBtn.classList.add('jedi-array-drag')\n return dragItemBtn\n }\n\n /**\n * Wrapper for the editor description\n */\n getDescription (config = {}) {\n const description = document.createElement('small')\n description.style.display = 'block'\n description.classList.add('jedi-description')\n\n if (config.content) {\n description.innerHTML = config.content\n }\n\n if (config.id) {\n description.setAttribute('id', config.id)\n }\n\n return description\n }\n\n /**\n * Info button to display extra information\n */\n getInfo (config = {}) {\n const container = document.createElement('span')\n const info = document.createElement('a')\n const infoText = document.createElement('span')\n const icon = document.createElement('i')\n\n container.classList.add('jedi-info-button-container')\n container.style.display = 'inline-block'\n\n info.setAttribute('href', '#')\n info.classList.add('jedi-info-button')\n info.style.marginLeft = '4px'\n\n if (isObject(config.attributes)) {\n for (const [key, value] of Object.entries(config.attributes)) {\n info.setAttribute(key, value)\n }\n }\n\n infoText.textContent = 'Info'\n\n if (!this.btnContents && this.btnIcons) {\n this.visuallyHidden(infoText)\n }\n\n icon.setAttribute('title', 'More information')\n\n if (this.icons) {\n this.addIconClass(icon, this.icons['info'])\n }\n\n info.appendChild(icon)\n info.appendChild(infoText)\n container.appendChild(info)\n\n return { container, info }\n }\n\n /**\n * Dialog or modal that contains extra information about the control\n */\n infoAsModal (info, id, config = {}) {\n const dialog = document.createElement('dialog')\n const title = document.createElement('div')\n const content = document.createElement('div')\n const closeBtn = this.getButton({\n content: 'Close',\n icon: 'close'\n })\n\n dialog.classList.add('jedi-modal-dialog')\n\n title.classList.add('jedi-modal-title')\n\n if (isString(config.title)) {\n title.innerHTML = config.title\n }\n\n content.classList.add('jedi-modal-content')\n\n if (isString(config.content)) {\n content.innerHTML = config.content\n }\n\n closeBtn.classList.add('jedi-modal-close')\n closeBtn.setAttribute('always-enabled', '')\n\n window.addEventListener('click', (event) => {\n if (event.target === dialog) {\n dialog.close()\n }\n })\n\n closeBtn.addEventListener('click', () => {\n dialog.close()\n })\n\n info.info.addEventListener('click', () => {\n dialog.showModal()\n })\n\n info.container.appendChild(dialog)\n dialog.appendChild(title)\n dialog.appendChild(content)\n dialog.appendChild(closeBtn)\n }\n\n getPlaceholderControl (config) {\n const descriptionId = config.id + '-description'\n const messagesId = config.id + '-messages'\n\n const container = document.createElement('div')\n const placeholder = document.createElement('div')\n const actions = this.getActionsSlot()\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden,\n titleIconClass: config.titleIconClass\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(placeholder)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, placeholder, label, labelText, description, messages, actions }\n }\n\n /**\n * Object control is a card containing multiple editors.\n * Each editor is mapped to an object instance property.\n * Properties can be added, activated and deactivated depending on configuration\n */\n getObjectControl (config) {\n const collapseId = 'collapse-' + config.id\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const body = this.getCardBody()\n const ariaLive = this.getPropertiesAriaLive()\n const messages = this.getMessagesSlot()\n const childrenSlot = this.getChildrenSlot()\n const propertiesActivators = this.getPropertiesActivators()\n const info = this.getInfo(config.info)\n const description = this.getDescription({\n content: config.description\n })\n const jsonData = this.getJsonData({\n id: 'json-data-' + config.id\n })\n const propertiesContainer = this.getPropertiesSlot({\n id: 'properties-slot-' + config.id\n })\n const propertiesToggle = this.getPropertiesToggle({\n content: config.propertiesToggleContent,\n id: 'properties-slot-toggle-' + config.id,\n icon: 'properties',\n propertiesContainer: propertiesContainer\n })\n const collapse = this.getCollapse({\n id: collapseId,\n startCollapsed: config.startCollapsed\n })\n const collapseToggle = this.getCollapseToggle({\n content: config.collapseToggleContent,\n id: 'collapse-toggle-' + config.id,\n icon: 'collapse',\n collapseId: collapseId,\n collapse: collapse,\n startCollapsed: config.startCollapsed\n })\n const addPropertyControl = this.getInputControl({\n type: 'text',\n id: 'jedi-add-property-input-' + config.id,\n title: config.addPropertyContent\n })\n const addPropertyBtn = this.getAddPropertyButton({\n content: config.addPropertyContent,\n icon: 'add'\n })\n const fieldset = this.getFieldset()\n const { legend, infoContainer, legendText } = this.getLegend({\n content: config.title,\n id: config.id,\n titleHidden: config.titleHidden\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n addPropertyBtn.classList.add('jedi-object-add')\n\n container.appendChild(fieldset)\n container.appendChild(propertiesContainer)\n\n if (config.editJsonData) {\n container.appendChild(jsonData.dialog)\n }\n\n fieldset.appendChild(legend)\n\n if (isObject(config.info)) {\n infoContainer.appendChild(info.container)\n }\n\n fieldset.appendChild(collapse)\n collapse.appendChild(body)\n\n if (config.description) {\n body.appendChild(description)\n }\n\n body.appendChild(messages)\n\n if (config.readOnly === false) {\n legend.appendChild(actions)\n }\n\n body.appendChild(childrenSlot)\n\n if (config.addProperty) {\n propertiesContainer.appendChild(addPropertyControl.container)\n propertiesContainer.appendChild(addPropertyBtn)\n propertiesContainer.appendChild(document.createElement('hr'))\n }\n\n if (config.editJsonData) {\n actions.appendChild(jsonData.toggle)\n }\n\n if (config.enablePropertiesToggle) {\n actions.appendChild(propertiesToggle)\n propertiesContainer.appendChild(ariaLive)\n propertiesContainer.appendChild(propertiesActivators)\n }\n\n if (config.enableCollapseToggle) {\n actions.appendChild(collapseToggle)\n }\n\n return {\n container,\n collapse,\n collapseToggle,\n description,\n body,\n actions,\n messages,\n childrenSlot,\n propertiesToggle,\n jsonData,\n propertiesContainer,\n addPropertyControl,\n addPropertyBtn,\n ariaLive,\n propertiesActivators,\n legend,\n legendText,\n infoContainer\n }\n }\n\n /**\n * Array control is a card containing multiple editors.\n * Items can bve added, deleted or moved up or down.\n */\n getArrayControl (config) {\n const collapseId = 'collapse-' + config.id\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const body = this.getCardBody()\n const messages = this.getMessagesSlot()\n const childrenSlot = this.getChildrenSlot()\n const btnGroup = this.getBtnGroup()\n const addBtn = this.getArrayBtnAdd({\n content: config.arrayAddContent\n })\n\n const fieldset = this.getFieldset()\n const info = this.getInfo(config.info)\n const { legend, legendText, infoContainer } = this.getLegend({\n content: config.title,\n id: config.id,\n titleHidden: config.titleHidden\n })\n const description = this.getDescription({\n content: config.description\n })\n const jsonData = this.getJsonData({\n id: 'json-data-' + config.id\n })\n const collapse = this.getCollapse({\n id: collapseId,\n startCollapsed: config.startCollapsed\n })\n const collapseToggle = this.getCollapseToggle({\n content: config.collapseToggleContent,\n id: 'collapse-toggle-' + config.id,\n icon: 'collapse',\n collapseId: collapseId,\n collapse: collapse,\n startCollapsed: config.startCollapsed\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(fieldset)\n\n if (config.editJsonData) {\n container.appendChild(jsonData.dialog)\n }\n\n fieldset.appendChild(legend)\n\n if (isObject(config.info)) {\n infoContainer.appendChild(info.container)\n }\n\n fieldset.appendChild(collapse)\n collapse.appendChild(body)\n\n if (config.description) {\n body.appendChild(description)\n }\n\n body.appendChild(messages)\n\n legend.appendChild(actions)\n\n actions.appendChild(btnGroup)\n\n if (config.editJsonData) {\n btnGroup.appendChild(jsonData.toggle)\n }\n\n if (isSet(config.arrayAdd) && config.arrayAdd === true) {\n btnGroup.appendChild(addBtn)\n }\n\n body.appendChild(childrenSlot)\n\n if (config.enableCollapseToggle) {\n actions.appendChild(collapseToggle)\n }\n\n return {\n container,\n collapseToggle,\n collapse,\n body,\n actions,\n messages,\n childrenSlot,\n btnGroup,\n addBtn,\n jsonData,\n legend,\n legendText\n }\n }\n\n getArrayItem (config = {}) {\n const container = document.createElement('div')\n const body = document.createElement('div')\n const actions = this.getActionsSlot()\n const arrayActions = this.getArrayActionsSlot()\n\n actions.style.textAlign = 'right'\n\n container.classList.add('jedi-array-item')\n body.classList.add('jedi-array-item-body')\n\n if (isSet(config.index)) {\n container.setAttribute('jedi-array-item-index', config.index)\n }\n\n actions.appendChild(arrayActions)\n\n container.appendChild(actions)\n\n container.appendChild(body)\n\n return {\n container,\n actions,\n arrayActions,\n body\n }\n }\n\n /**\n * Multiple control is a card containing multiple editors options that can be\n * selected with a switcher control. Only one editor can be active/visible\n * at a time\n */\n getMultipleControl (config = {}) {\n const container = document.createElement('div')\n const header = document.createElement('div')\n const body = document.createElement('div')\n const messages = this.getMessagesSlot()\n const childrenSlot = this.getChildrenSlot()\n const randomId = generateRandomID(5)\n\n let switcher\n\n if (config.switcher === 'select') {\n switcher = this.getSwitcherSelect({\n values: config.switcherOptionValues,\n titles: config.switcherOptionsLabels,\n title: config.id + '-switcher',\n id: config.id + '-switcher' + '-' + randomId,\n label: config.id + '-switcher' + '-' + randomId,\n titleHidden: true,\n readOnly: config.readOnly\n })\n }\n\n if (config.switcher === 'radios' || config.switcher === 'radios-inline') {\n switcher = this.getSwitcherRadios({\n values: config.switcherOptionValues,\n titles: config.switcherOptionsLabels,\n title: config.id + '-switcher',\n id: config.id + '-switcher' + '-' + randomId,\n label: config.id + '-switcher' + '-' + randomId,\n titleHidden: true,\n readOnly: config.readOnly,\n inline: config.switcher === 'radios-inline'\n })\n }\n\n switcher.container.classList.add('jedi-switcher')\n\n container.appendChild(header)\n container.appendChild(body)\n header.appendChild(switcher.container)\n body.appendChild(messages)\n body.appendChild(childrenSlot)\n\n return {\n container,\n header,\n body,\n messages,\n childrenSlot,\n switcher\n }\n }\n\n adaptForTableMultipleControl (control, td) {\n }\n\n getIfThenElseControl (config) {\n const container = document.createElement('div')\n const card = this.getCard()\n const actions = this.getActionsSlot()\n const body = this.getCardBody()\n const messages = this.getMessagesSlot()\n const childrenSlot = this.getChildrenSlot()\n const header = this.getCardHeader({\n content: config.title,\n titleHidden: config.titleHidden\n })\n const description = this.getDescription({\n content: config.description\n })\n\n body.appendChild(description)\n container.appendChild(messages)\n container.appendChild(childrenSlot)\n\n return {\n container,\n card,\n header,\n body,\n actions,\n messages,\n childrenSlot\n }\n }\n\n /**\n * Control for NullEditor\n */\n getNullControl (config) {\n const descriptionId = config.id + '-description'\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const messages = this.getMessagesSlot()\n const br = document.createElement('br')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getFakeLabel({\n for: config.id,\n content: config.title,\n visuallyHidden: config.titleHidden,\n titleIconClass: config.titleIconClass\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(br)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, label, labelText, description, messages, actions }\n }\n\n /**\n * A Textarea\n */\n getTextareaControl (config) {\n const descriptionId = config.id + '-description'\n const messagesId = config.id + '-messages'\n const describedBy = messagesId + ' ' + descriptionId\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const input = document.createElement('textarea')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n\n input.setAttribute('aria-describedby', describedBy)\n input.setAttribute('id', config.id)\n input.setAttribute('name', config.id)\n input.style.width = '100%'\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(input)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, input, label, labelText, description, messages, actions }\n }\n\n adaptForTableTextareaControl (control) {\n this.visuallyHidden(control.label)\n this.visuallyHidden(control.description)\n control.input.setAttribute('rows', '1')\n }\n\n /**\n * An Input control\n */\n getInputControl (config) {\n const messagesId = config.id + '-messages'\n const descriptionId = config.id + '-description'\n const describedBy = messagesId + ' ' + descriptionId\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const input = document.createElement('input')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden,\n titleIconClass: config.titleIconClass\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n\n input.setAttribute('aria-describedby', describedBy)\n input.setAttribute('type', config.type)\n input.setAttribute('id', config.id)\n input.setAttribute('name', config.id)\n input.style.width = '100%'\n\n container.appendChild(label)\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(input)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, input, label, info, labelText, description, messages, actions }\n }\n\n getInputRangeControl (config) {\n const control = this.getInputControl(config)\n\n // Create output element to display current value\n const output = document.createElement('output')\n output.className = 'range-output'\n output.style.marginLeft = '10px'\n output.style.fontWeight = 'bold'\n\n // Insert output after the input\n control.input.parentNode.insertBefore(output, control.input.nextSibling)\n\n return { ...control, output }\n }\n\n adaptForTableInputControl (control) {\n this.visuallyHidden(control.label)\n this.visuallyHidden(control.description)\n }\n\n /**\n * A radio group control\n */\n getRadiosControl (config) {\n const messagesId = config.id + '-messages'\n const descriptionId = config.id + '-description'\n\n const container = document.createElement('div')\n const fieldset = this.getRadioFieldset()\n const info = this.getInfo(config.info)\n const { legend, legendText } = this.getRadioLegend({\n content: config.title,\n id: config.id,\n for: config.id\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n if (config.titleHidden) {\n this.visuallyHidden(legend)\n }\n\n const radioControls = []\n const radios = []\n const labels = []\n const labelTexts = []\n\n config.values.forEach((value, index) => {\n const describedBy = messagesId + ' ' + descriptionId\n\n const radioControl = document.createElement('div')\n const radio = document.createElement('input')\n const label = document.createElement('label')\n const labelText = document.createElement('span')\n\n radio.setAttribute('type', 'radio')\n radio.setAttribute('id', config.id + '-' + index)\n radio.setAttribute('name', config.id)\n radio.setAttribute('value', value)\n radio.setAttribute('aria-describedby', describedBy)\n\n label.setAttribute('for', config.id + '-' + index)\n label.classList.add('jedi-title')\n label.classList.add('jedi-label')\n\n labelTexts.push(labelText)\n\n if (isSet(config.titles) && isSet(config.titles[index])) {\n labelText.textContent = config.titles[index] ?? value\n }\n\n radioControls.push(radioControl)\n radios.push(radio)\n labels.push(label)\n })\n\n container.appendChild(fieldset)\n fieldset.appendChild(legend)\n\n if (isObject(config.info)) {\n legendText.appendChild(info.container)\n }\n\n radioControls.forEach((radioControl, index) => {\n fieldset.appendChild(radioControls[index])\n radioControl.appendChild(radios[index])\n radioControl.appendChild(labels[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return {\n container,\n fieldset,\n legend,\n legendText,\n info,\n radios,\n labels,\n labelTexts,\n radioControls,\n description,\n messages\n }\n }\n\n adaptForTableRadiosControl (control) {\n this.visuallyHidden(control.legend)\n this.visuallyHidden(control.description)\n }\n\n /**\n * A checkbox control\n */\n getCheckboxControl (config) {\n const descriptionId = config.id + '-description'\n const messagesId = config.id + '-messages'\n const describedBy = messagesId + ' ' + descriptionId\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const formGroup = document.createElement('span')\n const input = document.createElement('input')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n\n input.setAttribute('type', 'checkbox')\n input.setAttribute('id', config.id)\n input.setAttribute('name', config.id)\n input.setAttribute('aria-describedby', describedBy)\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(formGroup)\n container.appendChild(actions)\n formGroup.appendChild(input)\n formGroup.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n formGroup.appendChild(description)\n formGroup.appendChild(messages)\n\n return { container, formGroup, input, label, info, labelText, description, messages, actions }\n }\n\n adaptForTableCheckboxControl (control, td) {\n this.visuallyHidden(control.label)\n this.visuallyHidden(control.description)\n }\n\n getCheckboxesControl (config) {\n const messagesId = config.id + '-messages'\n const descriptionId = config.id + '-description'\n\n const container = document.createElement('div')\n const fieldset = this.getRadioFieldset()\n const info = this.getInfo(config.info)\n const { legend, legendText } = this.getRadioLegend({\n content: config.title,\n id: config.id,\n for: config.id\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n\n if (config.titleHidden) {\n this.visuallyHidden(legend)\n }\n\n const checkboxControls = []\n const checkboxes = []\n const labels = []\n const labelTexts = []\n\n config.values.forEach((value, index) => {\n const describedBy = messagesId + ' ' + descriptionId\n const checkboxId = config.id + '-' + index\n\n const checkboxControl = document.createElement('div')\n const checkbox = document.createElement('input')\n const label = document.createElement('label')\n const labelText = document.createElement('span')\n\n checkbox.setAttribute('type', 'checkbox')\n checkbox.setAttribute('id', checkboxId)\n checkbox.setAttribute('name', config.id)\n checkbox.setAttribute('value', value)\n checkbox.setAttribute('aria-describedby', describedBy)\n\n label.setAttribute('for', checkboxId)\n\n if (config.titles && config.titles[index]) {\n labelText.textContent = config.titles[index]\n }\n\n checkboxControls.push(checkboxControl)\n checkboxes.push(checkbox)\n labelTexts.push(labelText)\n labels.push(label)\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(fieldset)\n fieldset.appendChild(legend)\n\n if (isObject(config.info)) {\n legendText.appendChild(info.container)\n }\n\n checkboxControls.forEach((checkboxControl, index) => {\n fieldset.appendChild(checkboxControls[index])\n checkboxControl.appendChild(checkboxes[index])\n checkboxControl.appendChild(labels[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return {\n container,\n fieldset,\n legend,\n legendText,\n checkboxes,\n labels,\n labelTexts,\n checkboxControls,\n description,\n messages\n }\n }\n\n adaptForTableCheckboxesControl (control, td) {\n this.visuallyHidden(control.legend)\n this.visuallyHidden(control.description)\n }\n\n /**\n * A select control\n */\n getSelectControl (config) {\n const descriptionId = config.id + '-description'\n const messagesId = config.id + '-messages'\n const describedBy = messagesId + ' ' + descriptionId\n\n const container = document.createElement('div')\n const actions = this.getActionsSlot()\n const input = document.createElement('select')\n const info = this.getInfo(config.info)\n const { label, labelText } = this.getLabel({\n for: config.id,\n text: config.title,\n visuallyHidden: config.titleHidden\n })\n const messages = this.getMessagesSlot({\n id: messagesId\n })\n const description = this.getDescription({\n content: config.description,\n id: descriptionId\n })\n\n input.setAttribute('id', config.id)\n input.setAttribute('name', config.id)\n input.setAttribute('aria-describedby', describedBy)\n\n config.values.forEach((value, index) => {\n const option = document.createElement('option')\n option.setAttribute('value', value)\n\n if (config.titles && config.titles[index]) {\n option.textContent = config.titles[index]\n }\n\n input.appendChild(option)\n })\n\n if (config?.info?.variant === 'modal') {\n this.infoAsModal(info, config.id, config.info)\n }\n\n container.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(input)\n container.appendChild(description)\n container.appendChild(messages)\n container.appendChild(actions)\n\n return { container, input, label, info, labelText, description, messages, actions }\n }\n\n adaptForTableSelectControl (control) {\n this.visuallyHidden(control.label)\n this.visuallyHidden(control.description)\n }\n\n /**\n * Control to switch between multiple editors options\n */\n getSwitcherSelect (config) {\n return this.getSelectControl(config)\n }\n\n /**\n * Control to switch between multiple editors options\n */\n getSwitcherRadios (config) {\n return this.getRadiosControl(config)\n }\n\n /**\n * Another type of error message container used for more complex editors like\n * object, array and multiple editors\n */\n getAlert (config) {\n return this.getErrorFeedback(config)\n }\n\n /**\n * Error messages\n * @public\n */\n getErrorFeedback (config) {\n const html = document.createElement('div')\n const invalidFeedbackText = document.createElement('small')\n const invalidFeedbackIcon = document.createElement('span')\n\n invalidFeedbackText.textContent = config.message\n invalidFeedbackIcon.textContent = '⚠ '\n invalidFeedbackIcon.classList.add('jedi-error-message')\n invalidFeedbackIcon.setAttribute('aria-hidden', 'true')\n\n html.classList.add('jedi-error-message')\n\n html.appendChild(invalidFeedbackIcon)\n html.appendChild(invalidFeedbackText)\n return html\n }\n\n /**\n * Error messages\n * @public\n */\n getWarningFeedback (config) {\n const html = document.createElement('div')\n const invalidFeedbackText = document.createElement('small')\n const invalidFeedbackIcon = document.createElement('span')\n\n invalidFeedbackText.textContent = config.message\n invalidFeedbackIcon.textContent = '⚠ '\n invalidFeedbackIcon.classList.add('jedi-warning-message')\n invalidFeedbackIcon.setAttribute('aria-hidden', 'true')\n\n html.classList.add('jedi-warning-message')\n\n html.appendChild(invalidFeedbackIcon)\n html.appendChild(invalidFeedbackText)\n return html\n }\n\n /**\n * Container for columns\n */\n getRow () {\n const row = document.createElement('div')\n row.classList.add('jedi-row')\n return row\n }\n\n /**\n * A column to contain content to a specific width\n */\n getCol (xs, sm, md, lg, offsetMd) {\n const col = document.createElement('div')\n col.classList.add('jedi-col')\n col.classList.add('jedi-col-xs-' + xs)\n col.classList.add('jedi-col-sm-' + sm)\n col.classList.add('jedi-col-md-' + md)\n col.classList.add('jedi-col-lg-' + lg)\n\n if (offsetMd) {\n col.classList.add('jedi-col-md-offset-' + offsetMd)\n }\n\n return col\n }\n\n /**\n * Clearfix fixes layout issues in some libraries like bootstrap 3\n */\n getClearfix () {\n const clearfix = document.createElement('div')\n clearfix.classList.add('clearfix')\n return clearfix\n }\n\n /**\n * Tab list is a list of links that triggers tabs visibility ne at the time\n */\n getTabList () {\n const tabList = document.createElement('ul')\n tabList.classList.add('jedi-nav-list')\n return tabList\n }\n\n /**\n * A Tab is a wrapper for content\n */\n getTab (config) {\n const list = document.createElement('li')\n const link = document.createElement('a')\n const arrayActions = document.createElement('span')\n const text = document.createElement('span')\n link.classList.add('jedi-nav-link')\n link.setAttribute('href', '#' + 'tab-pane-' + config.id)\n text.classList.add('jedi-nav-text')\n text.textContent = config.hasErrors ? '⚠ ' + config.title : config.title\n link.appendChild(arrayActions)\n link.appendChild(text)\n list.appendChild(link)\n return { list, link, arrayActions, text }\n }\n\n /**\n * Wrapper for tabs\n */\n getTabContent () {\n const tabContent = document.createElement('div')\n tabContent.classList.add('tab-content')\n return tabContent\n }\n\n /**\n * A simple table layout\n */\n getTable () {\n const container = document.createElement('div')\n const table = document.createElement('table')\n const thead = document.createElement('thead')\n const tbody = document.createElement('tbody')\n\n table.appendChild(thead)\n table.appendChild(tbody)\n container.appendChild(table)\n\n return { container, table, thead, tbody }\n }\n\n /**\n * Returns a <td> element\n */\n getTableDefinition () {\n const td = document.createElement('td')\n td.style.whiteSpace = 'nowrap'\n return td\n }\n\n /**\n * Returns a <th> element\n */\n getTableHeader (config = {}) {\n const th = document.createElement('th')\n th.style.paddingLeft = '12px'\n th.style.paddingRight = '12px'\n th.style.textWrap = 'nowrap'\n th.style.verticalAlign = 'bottom'\n\n if (config.minWidth) {\n th.style.minWidth = config.minWidth\n }\n\n return th\n }\n\n /**\n * Set tab attributes to make it toggleable\n */\n setTabPaneAttributes (element, active, id) {\n element.setAttribute('id', 'tab-pane-' + id)\n element.classList.add('jedi-tab-pane')\n }\n\n /**\n * Makes an element visually hidden\n */\n visuallyHidden (element) {\n element.style.position = 'absolute'\n element.style.width = '1px'\n element.style.height = '1px'\n element.style.padding = '0'\n element.style.margin = '-1px'\n element.style.overflow = 'hidden'\n element.style.clip = 'rect(0,0,0,0)'\n element.style.border = '0'\n }\n\n /**\n * Reveals a visually hidden element\n */\n visuallyVisible (element) {\n element.removeAttribute('style')\n }\n\n /**\n * Makes an element physically hidden\n */\n physicallyHidden (element) {\n element.style.display = 'none'\n }\n}\n\nexport default Theme\n","import Theme from './theme.js'\nimport { isString } from '../helpers/utils.js'\n\n/**\n * Represents a ThemeBootstrap3 instance.\n * @extends Theme\n */\nclass ThemeBootstrap3 extends Theme {\n init () {\n this.useToggleEvents = false\n }\n\n getAddPropertyButton (config) {\n const btn = super.getAddPropertyButton(config)\n btn.classList.add('btn-primary')\n btn.classList.add('btn-block')\n return btn\n }\n\n getCollapseToggle (config) {\n const toggle = super.getCollapseToggle(config)\n toggle.setAttribute('href', '#' + config.collapseId)\n toggle.setAttribute('data-toggle', 'collapse')\n toggle.setAttribute('always-enabled', '')\n return toggle\n }\n\n getCollapse (config) {\n const collapse = super.getCollapse(config)\n collapse.classList.add('collapse')\n\n if (!config.startCollapsed) {\n collapse.classList.add('in')\n }\n\n return collapse\n }\n\n getJsonData (config) {\n const jsonData = super.getJsonData(config)\n jsonData.control.classList.add('form-group')\n jsonData.input.classList.add('form-control')\n jsonData.saveBtn.classList.add('btn-primary')\n jsonData.saveBtn.classList.add('btn-block')\n return jsonData\n }\n\n getFieldset () {\n const fieldset = super.getFieldset()\n fieldset.classList.add('panel')\n fieldset.classList.add('panel-default')\n fieldset.style.marginBottom = '15px'\n return fieldset\n }\n\n getLegend (config) {\n const superLegend = super.getLegend(config)\n const { legend } = superLegend\n legend.classList.add('panel-heading')\n legend.classList.add('pull-left')\n legend.style.margin = '0'\n legend.style.display = 'flex'\n legend.style.justifyContent = 'space-between'\n legend.style.alignItems = 'center'\n return superLegend\n }\n\n getRadioLegend (config) {\n const superRadioLegend = super.getRadioLegend(config)\n const { legend } = superRadioLegend\n legend.style.fontWeight = 'inherit'\n legend.style.border = 'none'\n legend.style.marginBottom = '0'\n return superRadioLegend\n }\n\n getLabel (config) {\n const labelObj = super.getLabel(config)\n\n if (labelObj.icon.classList) {\n labelObj.icon.style.marginRight = '5px'\n }\n\n return labelObj\n }\n\n getCard () {\n const card = super.getCard()\n card.classList.add('panel')\n card.classList.add('panel-default')\n return card\n }\n\n getCardHeader (config) {\n const header = super.getCardHeader(config)\n header.classList.add('panel-heading')\n header.classList.add('text-right')\n return header\n }\n\n getCardBody () {\n const html = super.getCardBody()\n html.classList.add('panel-body')\n html.style.clear = 'both'\n html.style.paddingBottom = '0'\n return html\n }\n\n getBtnGroup () {\n const html = super.getBtnGroup()\n html.classList.add('btn-group')\n return html\n }\n\n getButton (config) {\n const html = super.getButton(config)\n html.classList.add('btn')\n html.classList.add('btn-xs')\n html.classList.add('btn-default')\n return html\n }\n\n getDescription (config) {\n const description = super.getDescription(config)\n description.classList.add('text-muted')\n description.style.marginBottom = '5px'\n return description\n }\n\n getPropertiesGroup (config = {}) {\n const propertiesGroup = super.getPropertiesGroup(config)\n const br = document.createElement('br')\n propertiesGroup.container.appendChild(br)\n propertiesGroup.group.classList.add('pl-3')\n return propertiesGroup\n }\n\n getTextareaControl (config) {\n const control = super.getTextareaControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableTextareaControl (control) {\n super.adaptForTableTextareaControl(control)\n control.container.classList.remove('form-group')\n }\n\n getInputControl (config) {\n const control = super.getInputControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n getInputRangeControl (config) {\n return super.getInputRangeControl(config)\n }\n\n adaptForTableInputControl (control, td) {\n super.adaptForTableInputControl(control, td)\n control.container.classList.remove('form-group')\n }\n\n getRadiosControl (config) {\n const control = super.getRadiosControl(config)\n const { fieldset, radios, labels, labelTexts, radioControls, description, messages } = control\n\n radioControls.forEach((radioControl, index) => {\n radioControl.classList.add('radio')\n\n if (config.inline) {\n radioControl.style.display = 'inline-flex'\n radioControl.style.alignItems = 'center'\n radioControl.style.paddingLeft = '0'\n radioControl.style.marginRight = '15px'\n }\n\n fieldset.appendChild(radioControls[index])\n radioControl.appendChild(labels[index])\n labels[index].appendChild(radios[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return control\n }\n\n adaptForTableRadiosControl (control, td) {\n super.adaptForTableRadiosControl(control, td)\n control.fieldset.classList.remove('panel')\n control.fieldset.classList.remove('panel-default')\n control.fieldset.style.marginBottom = '0'\n }\n\n getCheckboxesControl (config) {\n const control = super.getCheckboxesControl(config)\n const { fieldset, checkboxes, labels, labelTexts, checkboxControls } = control\n\n checkboxControls.forEach((checkboxControl, index) => {\n checkboxControl.classList.add('checkbox')\n\n if (config.inline) {\n checkboxControl.style.display = 'inline-flex'\n checkboxControl.style.alignItems = 'center'\n checkboxControl.style.paddingLeft = '0'\n checkboxControl.style.marginRight = '30px'\n }\n\n fieldset.appendChild(checkboxControls[index])\n checkboxControl.appendChild(labels[index])\n labels[index].appendChild(checkboxes[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n return control\n }\n\n adaptForTableCheckboxesControl (control, td) {\n super.adaptForTableCheckboxesControl(control, td)\n control.fieldset.classList.remove('panel')\n control.fieldset.classList.remove('panel-default')\n control.body.classList.remove('panel-body')\n }\n\n getCheckboxControl (config) {\n const control = super.getCheckboxControl(config)\n const { container, formGroup, description, messages } = control\n\n container.appendChild(formGroup)\n container.appendChild(description)\n container.appendChild(messages)\n return control\n }\n\n adaptForTableCheckboxControl (control, td) {\n super.adaptForTableCheckboxControl(control, td)\n }\n\n getSelectControl (config) {\n const control = super.getSelectControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableSelectControl (control, td) {\n super.adaptForTableSelectControl(control, td)\n control.container.classList.remove('form-group')\n }\n\n adaptForTableMultipleControl (control, td) {\n super.adaptForTableMultipleControl(control, td)\n }\n\n getAlert (config) {\n const html = super.getAlert(config)\n html.classList.add('alert')\n html.classList.add('alert-danger')\n return html\n }\n\n getErrorFeedback (config) {\n const html = super.getErrorFeedback(config)\n html.classList.add('text-danger')\n return html\n }\n\n getWarningFeedback (config) {\n const html = super.getWarningFeedback(config)\n html.classList.add('text-warning')\n return html\n }\n\n getRow () {\n const row = super.getRow()\n row.classList.add('row')\n return row\n }\n\n getCol (xs, sm, md, lg, offsetMd) {\n const col = super.getCol()\n col.classList.add('col-xs-' + xs)\n col.classList.add('col-sm-' + sm)\n col.classList.add('col-md-' + md)\n col.classList.add('col-lg-' + lg)\n\n if (offsetMd) {\n col.classList.add('col-md-offset-' + offsetMd)\n }\n\n return col\n }\n\n getTabList (config) {\n const tabList = super.getTabList(config)\n tabList.classList.add('nav')\n\n if (config.variant === 'horizontal') {\n tabList.classList.add('nav-tabs')\n } else {\n tabList.classList.add('nav-pills')\n tabList.classList.add('nav-stacked')\n }\n\n return tabList\n }\n\n getTab (config) {\n const tab = super.getTab(config)\n tab.text.style.marginLeft = '15px'\n\n if (config.active) {\n tab.list.classList.add('active')\n }\n\n tab.link.setAttribute('data-toggle', 'tab')\n return tab\n }\n\n /**\n * A simple table layout\n */\n getTable () {\n const container = document.createElement('div')\n const table = document.createElement('table')\n const thead = document.createElement('thead')\n const tbody = document.createElement('tbody')\n\n container.classList.add('table-responsive')\n table.classList.add('table')\n\n table.appendChild(thead)\n table.appendChild(tbody)\n container.appendChild(table)\n\n return { container, table, thead, tbody }\n }\n\n setTabPaneAttributes (element, active, id) {\n super.setTabPaneAttributes(element, active, id)\n element.classList.add('tab-pane')\n\n if (active) {\n element.classList.add('in')\n element.classList.add('active')\n }\n }\n\n infoAsModal (info, id, config = {}) {\n const modal = document.createElement('div')\n const modalDialog = document.createElement('div')\n const modalContent = document.createElement('div')\n const modalHeader = document.createElement('div')\n const modalTitle = document.createElement('div')\n const modalBody = document.createElement('div')\n const closeBtn = this.getButton({\n content: 'Close',\n icon: 'close'\n })\n const modalId = id + '-modal'\n\n modal.setAttribute('role', 'dialog')\n modal.setAttribute('aria-modal', 'true')\n modal.setAttribute('id', modalId)\n closeBtn.setAttribute('data-dismiss', 'modal')\n closeBtn.setAttribute('always-enabled', '')\n info.info.setAttribute('data-toggle', 'modal')\n info.info.setAttribute('data-target', '#' + modalId)\n modal.classList.add('modal')\n modal.classList.add('fade')\n modalDialog.classList.add('modal-dialog')\n modalContent.classList.add('modal-content')\n modalHeader.classList.add('modal-header')\n modalTitle.classList.add('modal-title')\n modalBody.classList.add('modal-body')\n closeBtn.classList.add('jedi-modal-close')\n closeBtn.classList.add('close')\n\n if (isString(config.title)) {\n modalTitle.innerHTML = config.title\n }\n\n if (isString(config.content)) {\n modalBody.innerHTML = config.content\n }\n\n info.container.appendChild(modal)\n modal.appendChild(modalDialog)\n modalDialog.appendChild(modalContent)\n modalContent.appendChild(modalHeader)\n modalHeader.appendChild(closeBtn)\n modalHeader.appendChild(modalTitle)\n modalContent.appendChild(modalBody)\n }\n\n visuallyHidden (element) {\n element.classList.add('sr-only')\n }\n\n visuallyVisible (element) {\n element.classList.remove('sr-only')\n }\n}\n\nexport default ThemeBootstrap3\n","import Theme from './theme.js'\nimport { isObject, isString } from '../helpers/utils.js'\n\n/**\n * Represents a ThemeBootstrap4 instance.\n * @extends Theme\n */\nclass ThemeBootstrap4 extends Theme {\n init () {\n this.useToggleEvents = false\n }\n\n getAddPropertyButton (config) {\n const btn = super.getAddPropertyButton(config)\n btn.classList.add('btn-primary')\n btn.classList.add('btn-block')\n return btn\n }\n\n getCollapseToggle (config) {\n const toggle = super.getCollapseToggle(config)\n toggle.setAttribute('href', '#' + config.collapseId)\n toggle.setAttribute('data-toggle', 'collapse')\n toggle.setAttribute('always-enabled', '')\n return toggle\n }\n\n getCollapse (config) {\n const collapse = super.getCollapse(config)\n collapse.classList.add('collapse')\n\n if (!config.startCollapsed) {\n collapse.classList.add('show')\n }\n\n return collapse\n }\n\n getJsonData (config) {\n const jsonData = super.getJsonData(config)\n jsonData.control.classList.add('form-group')\n jsonData.input.classList.add('form-control')\n jsonData.saveBtn.classList.add('btn-primary')\n jsonData.saveBtn.classList.add('btn-block')\n return jsonData\n }\n\n getFieldset () {\n const fieldset = document.createElement('fieldset')\n fieldset.setAttribute('role', 'group')\n fieldset.classList.add('card')\n fieldset.classList.add('mb-3')\n return fieldset\n }\n\n getLegend (config) {\n const superLegend = super.getLegend(config)\n const { legend } = superLegend\n legend.classList.add('card-header')\n legend.classList.add('d-flex')\n legend.classList.add('justify-content-between')\n legend.classList.add('align-items-center')\n legend.classList.add('float-left')\n legend.classList.add('py-2')\n return superLegend\n }\n\n getLabel (config) {\n const labelObj = super.getLabel(config)\n\n if (labelObj.icon.classList) {\n labelObj.icon.classList.add('mr-1')\n }\n\n return labelObj\n }\n\n getCard () {\n const card = super.getCard()\n card.classList.add('card')\n card.classList.add('mb-3')\n return card\n }\n\n getCardHeader (config) {\n const html = super.getCardHeader(config)\n html.classList.add('card-header')\n html.classList.add('d-flex')\n html.classList.add('justify-content-end')\n html.classList.add('align-items-center')\n html.classList.add('py-1')\n return html\n }\n\n getCardBody () {\n const html = super.getCardBody()\n html.classList.add('card-body')\n html.classList.add('pb-0')\n return html\n }\n\n getBtnGroup () {\n const html = super.getBtnGroup()\n html.classList.add('btn-group')\n return html\n }\n\n getButton (config) {\n const html = super.getButton(config)\n html.classList.add('btn')\n html.classList.add('btn-sm')\n return html\n }\n\n getDescription (config) {\n const description = super.getDescription(config)\n description.classList.add('text-muted')\n description.classList.add('fs-sm')\n description.classList.add('mb-1')\n return description\n }\n\n getPropertiesGroup (config = {}) {\n const propertiesGroup = super.getPropertiesGroup(config)\n propertiesGroup.group.classList.add('pl-3')\n propertiesGroup.name.classList.add('mb-3')\n propertiesGroup.container.classList.add('mb-4')\n return propertiesGroup\n }\n\n getTextareaControl (config) {\n const control = super.getTextareaControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableTextareaControl (control) {\n super.adaptForTableTextareaControl(control)\n control.container.classList.remove('form-group')\n }\n\n getInputControl (config) {\n const control = super.getInputControl(config)\n const { container, input, label } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n getInputRangeControl (config) {\n const control = super.getInputRangeControl(config)\n const { container, input, label } = control\n\n container.classList.add('form-group')\n input.classList.add('custom-range')\n input.classList.remove('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableInputControl (control, td) {\n super.adaptForTableInputControl(control, td)\n control.container.classList.remove('form-group')\n }\n\n getRadiosControl (config) {\n const control = super.getRadiosControl(config)\n const { container, fieldset, radios, labels, labelTexts, radioControls, description, messages } = control\n\n container.classList.add('form-group')\n\n radioControls.forEach((radioControl, index) => {\n radioControl.classList.add('form-check')\n radios[index].classList.add('form-check-input')\n labels[index].classList.add('form-check-label')\n\n if (config.inline) {\n radioControl.classList.add('form-check-inline')\n }\n\n fieldset.appendChild(radioControls[index])\n radioControl.appendChild(radios[index])\n radioControl.appendChild(labels[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return control\n }\n\n adaptForTableRadiosControl (control, td) {\n super.adaptForTableRadiosControl(control, td)\n control.container.classList.remove('form-group')\n control.fieldset.classList.remove('card')\n control.fieldset.style.marginBottom = '0'\n }\n\n getCheckboxesControl (config) {\n const control = super.getCheckboxesControl(config)\n const { checkboxes, labels, checkboxControls } = control\n\n checkboxControls.forEach((checkboxControl, index) => {\n checkboxControl.classList.add('form-group')\n checkboxControl.classList.add('form-check')\n checkboxes[index].classList.add('form-check-input')\n labels[index].classList.add('form-check-label')\n\n if (config.inline) {\n checkboxControl.classList.add('form-check-inline')\n }\n })\n\n return control\n }\n\n adaptForTableCheckboxesControl (control, td) {\n super.adaptForTableCheckboxesControl(control, td)\n control.container.classList.remove('form-group')\n control.fieldset.classList.remove('card')\n control.fieldset.classList.remove('mb-3')\n control.body.classList.remove('card-body')\n\n control.body.classList.remove('card-body')\n }\n\n getCheckboxControl (config) {\n const control = super.getCheckboxControl(config)\n const { container, formGroup, input, label, info, description, messages } = control\n container.classList.add('form-group')\n formGroup.classList.add('form-check')\n input.classList.add('form-check-input')\n label.classList.add('form-check-label')\n\n container.appendChild(formGroup)\n formGroup.appendChild(input)\n formGroup.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(description)\n container.appendChild(messages)\n return control\n }\n\n adaptForTableCheckboxControl (control, td) {\n super.adaptForTableCheckboxControl(control, td)\n control.container.classList.remove('form-group')\n control.formGroup.classList.remove('form-check')\n control.input.classList.remove('form-check-input')\n control.label.classList.remove('form-check-label')\n }\n\n getSelectControl (config) {\n const control = super.getSelectControl(config)\n const { container, input } = control\n container.classList.add('form-group')\n input.classList.add('form-control')\n return control\n }\n\n adaptForTableSelectControl (control, td) {\n super.adaptForTableSelectControl(control, td)\n control.container.classList.remove('form-group')\n }\n\n adaptForTableMultipleControl (control, td) {\n super.adaptForTableMultipleControl(control, td)\n control.container.classList.remove('mb-3')\n }\n\n getAlert (config) {\n const html = super.getAlert(config)\n html.classList.add('alert')\n html.classList.add('alert-danger')\n return html\n }\n\n getErrorFeedback (config) {\n const html = super.getErrorFeedback(config)\n html.classList.add('text-danger')\n html.classList.add('form-text')\n html.classList.add('d-block')\n return html\n }\n\n getWarningFeedback (config) {\n const html = super.getWarningFeedback(config)\n html.classList.add('text-warning')\n html.classList.add('form-text')\n html.classList.add('d-block')\n return html\n }\n\n getColumnClass (size, cols) {\n return 'col-' + size + '-' + cols\n }\n\n getRow () {\n const row = super.getRow()\n row.classList.add('row')\n return row\n }\n\n getCol (xs, sm, md, lg, offsetMd) {\n const col = super.getCol(xs, md, offsetMd)\n col.classList.add('col-' + xs)\n col.classList.add('col-sm' + sm)\n col.classList.add('col-md-' + md)\n col.classList.add('col-lg-' + lg)\n\n if (offsetMd) {\n col.classList.add('offset-md-' + offsetMd)\n }\n\n return col\n }\n\n getTabList (config) {\n const tabList = super.getTabList()\n tabList.classList.add('nav')\n\n if (config.variant === 'horizontal') {\n tabList.classList.add('nav-tabs')\n } else {\n tabList.classList.add('nav-pills')\n tabList.classList.add('flex-column')\n }\n\n return tabList\n }\n\n getTab (config) {\n const tab = super.getTab(config)\n tab.list.classList.add('nav-item')\n tab.list.classList.add('mb-3')\n tab.text.classList.add('ml-3')\n tab.link.classList.add('nav-link')\n tab.link.setAttribute('data-toggle', 'tab')\n\n if (config.active) {\n tab.link.classList.add('active')\n }\n\n return tab\n }\n\n /**\n * A simple table layout\n */\n getTable () {\n const container = document.createElement('div')\n const table = document.createElement('table')\n const thead = document.createElement('thead')\n const tbody = document.createElement('tbody')\n\n container.classList.add('table-responsive')\n table.classList.add('table')\n table.classList.add('table-borderless')\n table.classList.add('table-sm')\n table.classList.add('align-middle')\n\n table.appendChild(thead)\n table.appendChild(tbody)\n container.appendChild(table)\n\n return { container, table, thead, tbody }\n }\n\n setTabPaneAttributes (element, active, id) {\n super.setTabPaneAttributes(element, active, id)\n element.classList.add('tab-pane')\n\n if (active) {\n element.classList.add('active')\n }\n }\n\n infoAsModal (info, id, config = {}) {\n const modal = document.createElement('div')\n const modalDialog = document.createElement('div')\n const modalContent = document.createElement('div')\n const modalHeader = document.createElement('div')\n const modalTitle = document.createElement('div')\n const modalBody = document.createElement('div')\n const closeBtn = this.getButton({\n content: 'Close',\n icon: 'close'\n })\n const modalId = id + '-modal'\n\n modal.setAttribute('role', 'dialog')\n modal.setAttribute('aria-modal', 'true')\n modal.setAttribute('id', modalId)\n closeBtn.setAttribute('data-dismiss', 'modal')\n closeBtn.setAttribute('always-enabled', '')\n info.info.setAttribute('data-toggle', 'modal')\n info.info.setAttribute('data-target', '#' + modalId)\n info.container.classList.add('ml-1')\n modal.classList.add('modal')\n modal.classList.add('fade')\n modalDialog.classList.add('modal-dialog')\n modalContent.classList.add('modal-content')\n modalHeader.classList.add('modal-header')\n modalTitle.classList.add('modal-title')\n modalBody.classList.add('modal-body')\n closeBtn.classList.add('jedi-modal-close')\n closeBtn.classList.add('close')\n\n if (isString(config.title)) {\n modalTitle.innerHTML = config.title\n }\n\n if (isString(config.content)) {\n modalBody.innerHTML = config.content\n }\n\n info.container.appendChild(modal)\n modal.appendChild(modalDialog)\n modalDialog.appendChild(modalContent)\n modalContent.appendChild(modalHeader)\n modalHeader.appendChild(modalTitle)\n modalHeader.appendChild(closeBtn)\n modalContent.appendChild(modalBody)\n }\n\n visuallyHidden (element) {\n element.classList.add('sr-only')\n }\n\n visuallyVisible (element) {\n element.classList.remove('sr-only')\n }\n}\n\nexport default ThemeBootstrap4\n","import Theme from './theme.js'\nimport { isObject, isString } from '../helpers/utils.js'\n\n/**\n * Represents a ThemeBootstrap5 instance.\n * @extends Theme\n */\nclass ThemeBootstrap5 extends Theme {\n init () {\n this.useToggleEvents = false\n }\n\n getAddPropertyButton (config) {\n const btn = super.getAddPropertyButton(config)\n btn.classList.add('btn-primary')\n btn.classList.add('w-100')\n return btn\n }\n\n getCollapseToggle (config) {\n const toggle = super.getCollapseToggle(config)\n toggle.setAttribute('href', '#' + config.collapseId)\n toggle.setAttribute('data-bs-toggle', 'collapse')\n toggle.setAttribute('always-enabled', '')\n return toggle\n }\n\n getCollapse (config) {\n const collapse = super.getCollapse(config)\n collapse.classList.add('collapse')\n\n if (!config.startCollapsed) {\n collapse.classList.add('show')\n }\n\n return collapse\n }\n\n getJsonData (config) {\n const jsonData = super.getJsonData(config)\n jsonData.control.classList.add('mb-3')\n jsonData.input.classList.add('form-control')\n jsonData.saveBtn.classList.add('btn-primary')\n jsonData.saveBtn.classList.add('w-100')\n return jsonData\n }\n\n getFieldset () {\n const fieldset = document.createElement('fieldset')\n fieldset.setAttribute('role', 'group')\n fieldset.classList.add('card')\n fieldset.classList.add('mb-3')\n return fieldset\n }\n\n getLegend (config) {\n const superLegend = super.getLegend(config)\n const { legend } = superLegend\n legend.classList.add('card-header')\n legend.classList.add('d-flex')\n legend.classList.add('justify-content-between')\n legend.classList.add('align-items-center')\n legend.classList.add('py-2')\n return superLegend\n }\n\n getLabel (config) {\n const labelObj = super.getLabel(config)\n\n if (labelObj.icon.classList) {\n labelObj.icon.classList.add('me-1')\n }\n\n return labelObj\n }\n\n getCard () {\n const card = super.getCard()\n card.classList.add('card')\n card.classList.add('mb-3')\n return card\n }\n\n getCardHeader (config) {\n const html = super.getCardHeader(config)\n html.classList.add('card-header')\n html.classList.add('d-flex')\n html.classList.add('justify-content-end')\n html.classList.add('align-items-center')\n html.classList.add('py-1')\n return html\n }\n\n getCardBody () {\n const html = super.getCardBody()\n html.classList.add('card-body')\n html.classList.add('pb-0')\n return html\n }\n\n getControlSlot () {\n const controlSlot = super.getControlSlot()\n controlSlot.classList.add('mb-3')\n return controlSlot\n }\n\n getBtnGroup () {\n const html = super.getBtnGroup()\n html.classList.add('btn-group')\n return html\n }\n\n getButton (config) {\n const html = super.getButton(config)\n html.classList.add('btn')\n html.classList.add('btn-sm')\n return html\n }\n\n getDescription (config) {\n const description = super.getDescription(config)\n description.classList.add('text-muted')\n description.classList.add('mb-1')\n return description\n }\n\n getPropertiesGroup (config = {}) {\n const propertiesGroup = super.getPropertiesGroup(config)\n propertiesGroup.group.classList.add('ps-3')\n propertiesGroup.container.classList.add('mb-4')\n return propertiesGroup\n }\n\n getTextareaControl (config) {\n const control = super.getTextareaControl(config)\n const { container, input, label } = control\n container.classList.add('mb-3')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableTextareaControl (control) {\n super.adaptForTableTextareaControl(control)\n control.container.classList.remove('mb-3')\n }\n\n getInputControl (config) {\n const control = super.getInputControl(config)\n const { container, input, label } = control\n container.classList.add('mb-3')\n input.classList.add('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n getInputRangeControl (config) {\n const control = super.getInputRangeControl(config)\n const { container, input, label } = control\n\n container.classList.add('mb-3')\n input.classList.add('form-range')\n input.classList.remove('form-control')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n return control\n }\n\n adaptForTableInputControl (control, td) {\n super.adaptForTableInputControl(control, td)\n control.container.classList.remove('mb-3')\n }\n\n getRadiosControl (config) {\n const control = super.getRadiosControl(config)\n const { container, fieldset, radios, labels, labelTexts, radioControls, description, messages } = control\n\n container.classList.add('mb-3')\n\n radioControls.forEach((radioControl, index) => {\n radioControl.classList.add('form-check')\n radios[index].classList.add('form-check-input')\n labels[index].classList.add('form-check-label')\n\n if (config.inline) {\n radioControl.classList.add('form-check-inline')\n }\n\n fieldset.appendChild(radioControls[index])\n radioControl.appendChild(radios[index])\n radioControl.appendChild(labels[index])\n labels[index].appendChild(labelTexts[index])\n })\n\n fieldset.appendChild(description)\n fieldset.appendChild(messages)\n\n return control\n }\n\n adaptForTableRadiosControl (control, td) {\n super.adaptForTableRadiosControl(control, td)\n control.container.classList.remove('mb-3')\n control.fieldset.classList.remove('card')\n control.fieldset.style.marginBottom = '0'\n }\n\n getCheckboxesControl (config) {\n const control = super.getCheckboxesControl(config)\n const { checkboxes, labels, checkboxControls } = control\n\n checkboxControls.forEach((checkboxControl, index) => {\n checkboxControl.classList.add('mb-3')\n checkboxControl.classList.add('form-check')\n checkboxes[index].classList.add('form-check-input')\n labels[index].classList.add('form-check-label')\n\n if (config.inline) {\n checkboxControl.classList.add('form-check-inline')\n }\n })\n\n return control\n }\n\n getCheckboxControl (config) {\n const control = super.getCheckboxControl(config)\n const { container, formGroup, input, label, info, description, messages } = control\n container.classList.add('mb-3')\n formGroup.classList.add('form-check')\n input.classList.add('form-check-input')\n label.classList.add('form-check-label')\n\n if (config.titleHidden) {\n this.visuallyHidden(label)\n }\n\n container.appendChild(formGroup)\n formGroup.appendChild(input)\n formGroup.appendChild(label)\n\n if (isObject(config.info)) {\n label.appendChild(info.container)\n }\n\n container.appendChild(description)\n container.appendChild(messages)\n return control\n }\n\n adaptForTableCheckboxControl (control, td) {\n super.adaptForTableCheckboxControl(control, td)\n control.container.classList.remove('mb-3')\n control.formGroup.classList.remove('form-check')\n }\n\n getSelectControl (config) {\n const control = super.getSelectControl(config)\n const { container, input } = control\n container.classList.add('mb-3')\n input.classList.add('form-select')\n return control\n }\n\n adaptForTableSelectControl (control, td) {\n super.adaptForTableSelectControl(control, td)\n control.container.classList.remove('mb-3')\n }\n\n adaptForTableMultipleControl (control, td) {\n super.adaptForTableMultipleControl(control, td)\n control.container.classList.remove('mb-3')\n }\n\n getAlert (config) {\n const html = super.getAlert(config)\n html.classList.add('alert')\n html.classList.add('alert-danger')\n return html\n }\n\n getErrorFeedback (config) {\n const html = super.getErrorFeedback(config)\n html.classList.add('text-danger')\n html.classList.add('d-block')\n html.classList.add('form-text')\n return html\n }\n\n getWarningFeedback (config) {\n const html = super.getWarningFeedback(config)\n html.classList.add('text-warning')\n html.classList.add('d-block')\n html.classList.add('form-text')\n return html\n }\n\n getRow () {\n const row = super.getRow()\n row.classList.add('row')\n return row\n }\n\n getCol (xs, sm, md, lg, offsetMd) {\n const col = super.getCol(xs, md, offsetMd)\n col.classList.add('col-' + xs)\n col.classList.add('col-sm' + sm)\n col.classList.add('col-md-' + md)\n col.classList.add('col-lg-' + lg)\n\n if (offsetMd) {\n col.classList.add('offset-md-' + offsetMd)\n }\n\n return col\n }\n\n getTabList (config) {\n const tabList = super.getTabList(config)\n tabList.classList.add('nav')\n\n if (config.variant === 'horizontal') {\n tabList.classList.add('nav-tabs')\n } else {\n tabList.classList.add('nav-pills')\n tabList.classList.add('flex-column')\n }\n\n return tabList\n }\n\n getTab (config) {\n const tab = super.getTab(config)\n tab.list.classList.add('nav-item')\n tab.list.classList.add('mb-3')\n\n tab.text.classList.add('ms-3')\n\n tab.link.classList.add('nav-link')\n tab.link.setAttribute('data-bs-toggle', 'tab')\n\n if (config.active) {\n tab.link.classList.add('active')\n }\n\n return tab\n }\n\n /**\n * A simple table layout\n */\n getTable () {\n const container = document.createElement('div')\n const table = document.createElement('table')\n const thead = document.createElement('thead')\n const tbody = document.createElement('tbody')\n\n container.classList.add('table-responsive')\n table.classList.add('table')\n table.classList.add('table-borderless')\n table.classList.add('table-sm')\n table.classList.add('align-middle')\n\n table.appendChild(thead)\n table.appendChild(tbody)\n container.appendChild(table)\n\n return { container, table, thead, tbody }\n }\n\n setTabPaneAttributes (element, active, id) {\n super.setTabPaneAttributes(element, active, id)\n element.classList.add('tab-pane')\n\n if (active) {\n element.classList.add('active')\n }\n }\n\n infoAsModal (info, id, config = {}) {\n const modal = document.createElement('div')\n const modalDialog = document.createElement('div')\n const modalContent = document.createElement('div')\n const modalHeader = document.createElement('div')\n const modalTitle = document.createElement('div')\n const modalBody = document.createElement('div')\n const closeBtn = this.getButton({\n content: 'Close',\n icon: 'close'\n })\n const modalId = id + '-modal'\n\n modal.setAttribute('role', 'dialog')\n modal.setAttribute('aria-modal', 'true')\n modal.setAttribute('id', modalId)\n closeBtn.setAttribute('data-bs-dismiss', 'modal')\n closeBtn.setAttribute('always-enabled', '')\n info.info.setAttribute('data-bs-toggle', 'modal')\n info.info.setAttribute('data-bs-target', '#' + modalId)\n info.container.classList.add('ms-1')\n modal.classList.add('modal')\n modal.classList.add('fade')\n modalDialog.classList.add('modal-dialog')\n modalContent.classList.add('modal-content')\n modalHeader.classList.add('modal-header')\n modalTitle.classList.add('modal-title')\n modalBody.classList.add('modal-body')\n closeBtn.classList.add('jedi-modal-close')\n\n if (isString(config.title)) {\n modalTitle.innerHTML = config.title\n }\n\n if (isString(config.content)) {\n modalBody.innerHTML = config.content\n }\n\n info.container.appendChild(modal)\n modal.appendChild(modalDialog)\n modalDialog.appendChild(modalContent)\n modalContent.appendChild(modalHeader)\n modalHeader.appendChild(modalTitle)\n modalHeader.appendChild(closeBtn)\n modalContent.appendChild(modalBody)\n }\n\n visuallyHidden (element) {\n element.classList.add('visually-hidden')\n }\n\n visuallyVisible (element) {\n element.classList.remove('visually-hidden')\n }\n}\n\nexport default ThemeBootstrap5\n","import Schema from './helpers/schema.js'\nimport Utils from './helpers/utils.js'\nimport SchemaGenerator from './schema-generator/schema-generator.js'\nimport Create from './jedison.js'\nimport RefParser from './ref-parser/ref-parser.js'\nimport Theme from './themes/theme.js'\nimport ThemeBootstrap3 from './themes/bootstrap3.js'\nimport ThemeBootstrap4 from './themes/bootstrap4.js'\nimport ThemeBootstrap5 from './themes/bootstrap5.js'\nimport EditorBoolean from './editors/boolean.js'\nimport EditorBooleanRadios from './editors/boolean-radios.js'\nimport EditorBooleanSelect from './editors/boolean-select.js'\nimport EditorBooleanCheckbox from './editors/boolean-checkbox.js'\nimport EditorString from './editors/string.js'\nimport EditorStringRadios from './editors/string-radios.js'\nimport EditorStringSelect from './editors/string-select.js'\nimport EditorStringTextarea from './editors/string-textarea.js'\nimport EditorStringAwesomplete from './editors/string-awesomplete.js'\nimport EditorStringInput from './editors/string-input.js'\nimport EditorNumberRange from './editors/number-range.js'\nimport EditorNumber from './editors/number.js'\nimport EditorNumberRadios from './editors/number-radios.js'\nimport EditorNumberSelect from './editors/number-select.js'\nimport EditorNumberInput from './editors/number-input.js'\nimport EditorObjectGrid from './editors/object-grid.js'\nimport EditorObjectNav from './editors/object-nav.js'\nimport EditorObject from './editors/object.js'\nimport EditorArrayChoices from './editors/array-choices.js'\nimport EditorArrayNav from './editors/array-nav.js'\nimport EditorArray from './editors/array.js'\nimport EditorMultiple from './editors/multiple.js'\nimport EditorIfThenElse from './editors/if-then-else.js'\nimport EditorNull from './editors/null.js'\nimport Editor from './editors/editor.js'\n\nexport default {\n Schema,\n Utils,\n Editor,\n EditorBoolean,\n EditorBooleanRadios,\n EditorBooleanSelect,\n EditorBooleanCheckbox,\n EditorString,\n EditorStringRadios,\n EditorStringSelect,\n EditorStringTextarea,\n EditorStringAwesomplete,\n EditorStringInput,\n EditorNumberRange,\n EditorNumber,\n EditorNumberRadios,\n EditorNumberSelect,\n EditorNumberInput,\n EditorObjectGrid,\n EditorObjectNav,\n EditorObject,\n EditorArrayChoices,\n EditorArrayNav,\n EditorArray,\n EditorMultiple,\n EditorIfThenElse,\n EditorNull,\n Theme,\n ThemeBootstrap3,\n ThemeBootstrap4,\n ThemeBootstrap5,\n RefParser,\n Create,\n SchemaGenerator\n}\n"],"names":["type","index","maxLength","properties","allOf","minLength","anyOf","exclusiveMaximum","exclusiveMinimum","format","items","prefixItems","maxItems","maxProperties","minimum","minItems","minProperties","multipleOf","not","oneOf","pattern","patternProperties","required","maximum","uniqueItems","seen","additionalProperties","contains","dependentRequired","dependentSchemas","unevaluatedProperties","initiator","value","property","th","EditorBooleanRadios","EditorNumberImask","EditorNumberRadio","Create"],"mappings":"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"}