formeo 4.2.4 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/demo/assets/css/demo.min.css +2 -2
- package/dist/demo/assets/css/demo.min.css.gz +0 -0
- package/dist/demo/assets/css/formeo.min.css +2 -2
- package/dist/demo/assets/img/formeo-sprite.svg +1 -1
- package/dist/demo/assets/js/demo.min.js +78 -78
- package/dist/demo/assets/js/demo.min.js.gz +0 -0
- package/dist/demo/assets/js/formeo.cjs.js +631 -168
- package/dist/demo/assets/js/formeo.es.js +631 -168
- package/dist/demo/assets/js/formeo.min.cjs.js +2 -2
- package/dist/demo/assets/js/formeo.min.es.js +3 -3
- package/dist/demo/assets/js/formeo.min.js +631 -168
- package/dist/demo/assets/js/formeo.min.umd.js +2 -2
- package/dist/demo/assets/js/formeo.umd.js +631 -168
- package/dist/demo/assets/js/index.min.js +1 -1
- package/dist/demo/assets/js/index.min2.js +2 -2
- package/dist/demo/assets/js/index.min3.js +1 -1
- package/dist/demo/assets/js/mode-json.min.js +1 -1
- package/dist/demo/assets/js/mode-json.min.js.gz +0 -0
- package/dist/demo/assets/js/theme-github_light_default.min.js +1 -1
- package/dist/demo/index.html +1 -1
- package/dist/formeo-sprite.svg +1 -1
- package/dist/formeo.cjs.js +631 -168
- package/dist/formeo.css +176 -3
- package/dist/formeo.es.js +631 -168
- package/dist/formeo.min.cjs.js +2 -2
- package/dist/formeo.min.css +2 -2
- package/dist/formeo.min.es.js +3 -3
- package/dist/formeo.min.js +631 -168
- package/dist/formeo.min.umd.js +2 -2
- package/dist/formeo.umd.js +631 -168
- package/package.json +3 -3
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
3
|
formeo - https://formeo.io
|
|
4
|
-
Version: 4.2.
|
|
4
|
+
Version: 4.2.5
|
|
5
5
|
Author: Draggable https://draggable.io
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
"use strict";
|
|
9
9
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
10
|
+
const e = { "en-US": { "en-US": "English", dir: "ltr", "af-ZA": "Afrikaans (South Africa)", "ar-TN": "Arabic (Tunisia)", "cs-CZ": "Czech (Czechia)", "de-DE": "German (Germany)", "es-ES": "European Spanish", "fa-IR": "Persian (Iran)", "fi-FI": "Finnish (Finland)", "fr-FR": "French (France)", "hu-HU": "Hungarian (Hungary)", "it-IT": "Italian (Italy)", "ja-JP": "Japanese (Japan)", "nb-NO": "Norwegian Bokmål (Norway)", "pl-PL": "Polish (Poland)", "pt-BR": "Brazilian Portuguese", "pt-PT": "European Portuguese", "ro-RO": "Romanian (Romania)", "ru-RU": "Russian (Russia)", "th-TH": "Thai (Thailand)", "tr-TR": "Turkish (Türkiye)", "zh-CN": "Chinese (China)", "zh-HK": "Chinese (Hong Kong SAR China)", "action.add.attrs.attr": "What attribute would you like to add?", "action.add.attrs.value": "Default Value", addOption: "Add Option", allFieldsRemoved: "All fields were removed.", allowSelect: "Allow Select", and: "and", attribute: "Attribute", attributeNotPermitted: 'Attribute "{attribute}" is not permitted, please choose another.', attributes: "Attributes", "attrs.class": "Class", "attrs.className": "Class", "attrs.dir": "Direction", "attrs.id": "Id", "attrs.required": "Required", "attrs.style": "Style", "attrs.title": "Title", "attrs.type": "Type", "attrs.value": "Value", autocomplete: "Autocomplete", button: "Button", cannotBeEmpty: "This field cannot be empty", cannotClearFields: "There are no fields to clear", checkbox: "Checkbox", checkboxes: "Checkboxes", class: "Class", clear: "Clear", clearAllMessage: "Are you sure you want to clear all fields?", close: "Close", column: "Column", "condition.target.placeholder": "target", "condition.type.and": "And", "condition.type.if": "If", "condition.type.or": "Or", "condition.type.then": "Then", "condition.value.placeholder": "value", confirmClearAll: "Are you sure you want to remove all fields?", content: "Content", control: "Control", "controlGroups.nextGroup": "Next Group", "controlGroups.prevGroup": "Previous Group", "controls.filteringTerm": 'Filtering "{term}"', "controls.form.button": "Button", "controls.form.checkbox-group": "Checkbox Group", "controls.form.input.date": "Date", "controls.form.input.email": "Email", "controls.form.input.file": "File Upload", "controls.form.input.hidden": "Hidden Input", "controls.form.input.number": "Number", "controls.form.input.text": "Text Input", "controls.form.radio-group": "Radio Group", "controls.form.select": "Select", "controls.form.textarea": "TextArea", "controls.groups.form": "Form Fields", "controls.groups.html": "HTML Elements", "controls.groups.layout": "Layout", "controls.html.divider": "Divider", "controls.html.header": "Header", "controls.html.paragraph": "Paragraph", "controls.layout.column": "Column", "controls.layout.row": "Row", copy: "Copy To Clipboard", danger: "Danger", defineColumnLayout: "Define a column layout", defineColumnWidths: "Define column widths", description: "Help Text", descriptionField: "Description", "editing.row": "Editing Row", editorTitle: "Form Elements", field: "Field", "field.property.invalid": "not valid", "field.property.isChecked": "is checked", "field.property.isNotVisible": "is not visible", "field.property.isVisible": "is visible", "field.property.label": "label", "field.property.valid": "valid", "field.property.value": "value", fieldNonEditable: "This field cannot be edited.", fieldRemoveWarning: "Are you sure you want to remove this field?", fileUpload: "File Upload", formUpdated: "Form Updated", getStarted: "Drag a field from the right to get started.", group: "Group", grouped: "Grouped", hidden: "Hidden Input", hide: "Edit", htmlElements: "HTML Elements", if: "If", "if.condition.source.placeholder": "source", "if.condition.target.placeholder": "target / value", info: "Info", "input.date": "Date", "input.text": "Text", label: "Label", labelCount: "{label} {count}", labelEmpty: "Field Label cannot be empty", "lang.af": "Afrikaans", "lang.ar": "Arabic", "lang.cs": "Czech", "lang.de": "German", "lang.en": "English", "lang.es": "Spanish", "lang.fa": "Persian", "lang.fi": "Finnish", "lang.fr": "French", "lang.hu": "Hungarian", "lang.it": "Italian", "lang.ja": "Japanese", "lang.nb": "Norwegian Bokmål", "lang.pl": "Polish", "lang.pt": "Portuguese", "lang.ro": "Romanian", "lang.ru": "Russian", "lang.th": "Thai", "lang.tr": "Turkish", "lang.zh": "Chinese", layout: "Layout", limitRole: "Limit access to one or more of the following roles:", mandatory: "Mandatory", maxlength: "Max Length", "meta.group": "Group", "meta.icon": "Ico", "meta.label": "Label", minOptionMessage: "This field requires a minimum of 2 options", name: "Name", newOptionLabel: "New {type}", no: "No", number: "Number", off: "Off", on: "On", "operator.contains": "contains", "operator.equals": "equals", "operator.notContains": "not contains", "operator.notEquals": "not equal", "operator.notVisible": "not visible", "operator.visible": "visible", option: "Option", optional: "optional", optionEmpty: "Option value required", optionLabel: "Option {count}", options: "Options", or: "or", order: "Order", "panel.label.attrs": "Attributes", "panel.label.conditions": "Conditions", "panel.label.config": "Configuration", "panel.label.meta": "Meta", "panel.label.options": "Options", "panelEditButtons.attrs": "+ Attribute", "panelEditButtons.conditions": "+ Condition", "panelEditButtons.options": "+ Option", placeholder: "Placeholder", "placeholder.className": "space separated classes", "placeholder.email": "Enter you email", "placeholder.label": "Label", "placeholder.password": "Enter your password", "placeholder.placeholder": "Placeholder", "placeholder.text": "Enter some Text", "placeholder.textarea": "Enter a lot of text", "placeholder.value": "Value", preview: "Preview", primary: "Primary", remove: "Remove", removeMessage: "Remove Element", removeType: "Remove {type}", required: "Required", reset: "Reset", richText: "Rich Text Editor", roles: "Access", row: "Row", "row.makeInputGroup": "Make this row an input group.", "row.makeInputGroupDesc": "Input Groups enable users to add sets of inputs at a time.", "row.settings.fieldsetWrap": "Wrap row in a <fieldset> tag", "row.settings.fieldsetWrap.aria": "Wrap Row in Fieldset", save: "Save", secondary: "Secondary", select: "Select", selectColor: "Select Color", selectionsMessage: "Allow Multiple Selections", selectOptions: "Options", separator: "Separator", settings: "Settings", size: "Size", sizes: "Sizes", "sizes.lg": "Large", "sizes.m": "Default", "sizes.sm": "Small", "sizes.xs": "Extra Small", style: "Style", styles: "Styles", "styles.btn": "Button Style", "styles.btn.danger": "Danger", "styles.btn.default": "Default", "styles.btn.info": "Info", "styles.btn.primary": "Primary", "styles.btn.success": "Success", "styles.btn.warning": "Warning", subtype: "Type", success: "Success", text: "Text Field", then: "Then", "then.condition.target.placeholder": "target", toggle: "Toggle", ungrouped: "Un-Grouped", warning: "Warning", yes: "Yes" } }, i = e["en-US"];
|
|
10
11
|
async function fetchData(url) {
|
|
11
12
|
try {
|
|
12
13
|
const response = await fetch(url);
|
|
@@ -51,8 +52,8 @@ class I18N {
|
|
|
51
52
|
this.config = { location: parsedLocation, ...restOptions };
|
|
52
53
|
const { override, preloaded = {} } = this.config;
|
|
53
54
|
const allLangs = Object.entries(this.langs).concat(Object.entries(override || preloaded));
|
|
54
|
-
this.langs = allLangs.reduce((acc, [
|
|
55
|
-
acc[
|
|
55
|
+
this.langs = allLangs.reduce((acc, [locale, lang]) => {
|
|
56
|
+
acc[locale] = this.applyLanguage(locale, lang);
|
|
56
57
|
return acc;
|
|
57
58
|
}, {});
|
|
58
59
|
this.locale = this.config.locale || this.config.langs[0];
|
|
@@ -71,9 +72,9 @@ class I18N {
|
|
|
71
72
|
* @param {String} locale
|
|
72
73
|
* @param {String|Object} lang
|
|
73
74
|
*/
|
|
74
|
-
addLanguage(
|
|
75
|
+
addLanguage(locale, lang = {}) {
|
|
75
76
|
lang = typeof lang === "string" ? I18N.processFile(lang) : lang;
|
|
76
|
-
this.applyLanguage(
|
|
77
|
+
this.applyLanguage(locale, lang);
|
|
77
78
|
this.config.langs.push("locale");
|
|
78
79
|
}
|
|
79
80
|
/**
|
|
@@ -82,9 +83,9 @@ class I18N {
|
|
|
82
83
|
* @param {String} locale - locale to check for value
|
|
83
84
|
* @return {String} language string or undefined
|
|
84
85
|
*/
|
|
85
|
-
getValue(key,
|
|
86
|
+
getValue(key, locale = this.locale) {
|
|
86
87
|
var _a;
|
|
87
|
-
const value = (_a = this.langs[
|
|
88
|
+
const value = (_a = this.langs[locale]) == null ? void 0 : _a[key];
|
|
88
89
|
return value || this.getFallbackValue(key);
|
|
89
90
|
}
|
|
90
91
|
/**
|
|
@@ -176,22 +177,22 @@ class I18N {
|
|
|
176
177
|
* @param {Boolean} useCache
|
|
177
178
|
* @return {Promise} resolves response
|
|
178
179
|
*/
|
|
179
|
-
loadLang(
|
|
180
|
+
loadLang(locale, useCache = true) {
|
|
180
181
|
const _this = this;
|
|
181
182
|
return new Promise(function(resolve, reject) {
|
|
182
|
-
if (_this.loaded.indexOf(
|
|
183
|
-
_this.applyLanguage(_this.langs[
|
|
184
|
-
return resolve(_this.langs[
|
|
183
|
+
if (_this.loaded.indexOf(locale) !== -1 && useCache) {
|
|
184
|
+
_this.applyLanguage(_this.langs[locale]);
|
|
185
|
+
return resolve(_this.langs[locale]);
|
|
185
186
|
} else {
|
|
186
|
-
const langFile = [_this.config.location,
|
|
187
|
+
const langFile = [_this.config.location, locale, _this.config.extension].join("");
|
|
187
188
|
return fetchData(langFile).then((lang) => {
|
|
188
189
|
const processedFile = I18N.processFile(lang);
|
|
189
|
-
_this.applyLanguage(
|
|
190
|
-
_this.loaded.push(
|
|
191
|
-
return resolve(_this.langs[
|
|
190
|
+
_this.applyLanguage(locale, processedFile);
|
|
191
|
+
_this.loaded.push(locale);
|
|
192
|
+
return resolve(_this.langs[locale]);
|
|
192
193
|
}).catch((err) => {
|
|
193
194
|
console.error(err);
|
|
194
|
-
const lang = _this.applyLanguage(
|
|
195
|
+
const lang = _this.applyLanguage(locale);
|
|
195
196
|
resolve(lang);
|
|
196
197
|
});
|
|
197
198
|
}
|
|
@@ -203,11 +204,11 @@ class I18N {
|
|
|
203
204
|
* @param {Object} lang
|
|
204
205
|
* @return {Object} overriden language
|
|
205
206
|
*/
|
|
206
|
-
applyLanguage(
|
|
207
|
-
const override = this.config.override[
|
|
208
|
-
const existingLang = this.langs[
|
|
209
|
-
this.langs[
|
|
210
|
-
return this.langs[
|
|
207
|
+
applyLanguage(locale, lang = {}) {
|
|
208
|
+
const override = this.config.override[locale] || {};
|
|
209
|
+
const existingLang = this.langs[locale] || {};
|
|
210
|
+
this.langs[locale] = { ...existingLang, ...lang, ...override };
|
|
211
|
+
return this.langs[locale];
|
|
211
212
|
}
|
|
212
213
|
/**
|
|
213
214
|
* return currently available languages
|
|
@@ -221,10 +222,10 @@ class I18N {
|
|
|
221
222
|
* @param {String} locale
|
|
222
223
|
* @return {Promise} language
|
|
223
224
|
*/
|
|
224
|
-
async setCurrent(
|
|
225
|
-
await this.loadLang(
|
|
226
|
-
this.locale =
|
|
227
|
-
this.current = this.langs[
|
|
225
|
+
async setCurrent(locale = "en-US") {
|
|
226
|
+
await this.loadLang(locale);
|
|
227
|
+
this.locale = locale;
|
|
228
|
+
this.current = this.langs[locale];
|
|
228
229
|
return this.current;
|
|
229
230
|
}
|
|
230
231
|
}
|
|
@@ -433,7 +434,7 @@ if (window !== void 0) {
|
|
|
433
434
|
window.SmartTooltip = SmartTooltip;
|
|
434
435
|
}
|
|
435
436
|
const name$1 = "formeo";
|
|
436
|
-
const version$2 = "4.2.
|
|
437
|
+
const version$2 = "4.2.5";
|
|
437
438
|
const pkg = {
|
|
438
439
|
name: name$1,
|
|
439
440
|
version: version$2
|
|
@@ -2168,7 +2169,7 @@ function buildFlatDataStructure(data, componentId, componentType2, result = {})
|
|
|
2168
2169
|
}
|
|
2169
2170
|
return result;
|
|
2170
2171
|
}
|
|
2171
|
-
const BUNDLED_SVG_SPRITE = '<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol id="f-i-autocomplete" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M6,5h1v1H6V5z M4,4H3v1h1V4z M6,4H5v1h1V4z M2,5v1h1V5H2z M3,7h1V6H3V7z M5,7h1V6H5V7z M4,5v1h1V5H4z M2,14h1v-1H2V14z M4,14h1v-1H4V14z M6,14h1v-1H6V14z M9,13H8v1h1V13z M16,3.5v4C16,8.3,15.3,9,14.5,9H14v3v3c0,0.6-0.4,1-1,1H1c-0.6,0-1-0.4-1-1V3.5 C0,2.7,0.7,2,1.5,2h3H8V1.5V1H7H6V0.5V0h2.5H11v0.5V1h-1H9v0.5V2h3h2.5C15.3,2,16,2.7,16,3.5z M13,12H7H1v3h12V12z M3,11v-1H2v1H3z M5,11v-1H4v1H5z M15,3.5C15,3.2,14.8,3,14.5,3H9v2.5V8H8.5H8V7.5V7H7V6h1V5.5V5H7V4h1V3.5V3H1.5C1.2,3,1,3.2,1,3.5v4 C1,7.8,1.2,8,1.5,8H8v1H6v0.5V10h2.5H11V9.5V9H9V8h5.5C14.8,8,15,7.8,15,7.5V3.5z"/></symbol><symbol viewBox="0 0 32 32" id="f-i-bin" xmlns="http://www.w3.org/2000/svg"><path d="M4 10v20c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-20h-22zM10 28h-2v-14h2v14zM14 28h-2v-14h2v14zM18 28h-2v-14h2v14zM22 28h-2v-14h2v14zM26.5 4h-6.5v-2.5c0-.825-.675-1.5-1.5-1.5h-7c-.825 0-1.5.675-1.5 1.5v2.5h-6.5c-.825 0-1.5.675-1.5 1.5v2.5h26v-2.5c0-.825-.675-1.5-1.5-1.5zM18 4h-6v-1.975h6v1.975z"/></symbol><symbol id="f-i-button" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><metadata id="acprefix__metadata8"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><path id="acprefix__rect4140" d="M 0.4765625,4 A 0.47706934,0.47706934 0 0 0 0,4.4765625 L 0,11.523438 A 0.47706934,0.47706934 0 0 0 0.4765625,12 L 15.523438,12 A 0.47706934,0.47706934 0 0 0 16,11.523438 L 16,4.4765625 A 0.47706934,0.47706934 0 0 0 15.523438,4 L 0.4765625,4 Z m 0.4765625,0.953125 14.09375,0 0,6.09375 -14.09375,0 0,-6.09375 z"/><g id="acprefix__layer1"><g id="acprefix__text4203"><g id="acprefix__g4212" transform="translate(0.10112835,0.1001358)"><path id="acprefix__path4208" d="m 6.0690374,6.4093857 q -0.5371093,0 -0.8544922,0.4003906 -0.3149414,0.4003906 -0.3149414,1.0913086 0,0.6884766 0.3149414,1.0888672 0.3173829,0.4003906 0.8544922,0.4003906 0.5371094,0 0.8496094,-0.4003906 0.3149414,-0.4003906 0.3149414,-1.0888672 0,-0.690918 -0.3149414,-1.0913086 -0.3125,-0.4003906 -0.8496094,-0.4003906 z m 0,-0.4003906 q 0.7666016,0 1.225586,0.5151367 0.4589843,0.5126953 0.4589843,1.3769531 0,0.8618164 -0.4589843,1.3769531 -0.4589844,0.5126953 -1.225586,0.5126953 -0.7690429,0 -1.2304687,-0.5126953 -0.4589844,-0.5126953 -0.4589844,-1.3769531 0,-0.8642578 0.4589844,-1.3769531 0.4614258,-0.5151367 1.2304687,-0.5151367 z"/><path id="acprefix__path4210" d="m 8.5250921,6.074913 0.4931641,0 0,1.5405274 1.6357418,-1.5405274 0.634766,0 -1.809082,1.6992188 1.938477,1.9458008 -0.649415,0 -1.7504878,-1.7553711 0,1.7553711 -0.4931641,0 0,-3.6450196 z"/></g></g></g></symbol><symbol viewBox="0 0 32 32" id="f-i-calendar" xmlns="http://www.w3.org/2000/svg"><path d="M12.048 16.961c-0.178 0.257-0.395 0.901-0.652 1.059-0.257 0.157-0.547 0.267-0.869 0.328-0.323 0.062-0.657 0.089-1.002 0.079v1.527h2.467v6.046h1.991v-9.996h-1.584c-0.056 0.381-0.173 0.7-0.351 0.957zM23 8h2c0.553 0 1-0.448 1-1v-6c0-0.552-0.447-1-1-1h-2c-0.553 0-1 0.448-1 1v6c0 0.552 0.447 1 1 1zM7 8h2c0.552 0 1-0.448 1-1v-6c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v6c0 0.552 0.448 1 1 1zM30 4h-2v5c0 0.552-0.447 1-1 1h-6c-0.553 0-1-0.448-1-1v-5h-8v5c0 0.552-0.448 1-1 1h-6c-0.552 0-1-0.448-1-1v-5h-2c-1.104 0-2 0.896-2 2v24c0 1.104 0.896 2 2 2h28c1.104 0 2-0.896 2-2v-24c0-1.104-0.896-2-2-2zM30 29c0 0.553-0.447 1-1 1h-26c-0.552 0-1-0.447-1-1v-16c0-0.552 0.448-1 1-1h26c0.553 0 1 0.448 1 1v16zM15.985 17.982h4.968c-0.936 1.152-1.689 2.325-2.265 3.705-0.575 1.381-0.638 2.818-0.749 4.312h2.131c0.009-0.666-0.195-1.385-0.051-2.156 0.146-0.771 0.352-1.532 0.617-2.285 0.267-0.752 0.598-1.461 0.996-2.127 0.396-0.667 0.853-1.229 1.367-1.686v-1.742h-7.015v1.979z"/></symbol><symbol id="f-i-checkbox" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M13.5,5v8c0,0.8-0.7,1.5-1.5,1.5H3c-0.8,0-1.5-0.7-1.5-1.5V4c0-0.8,0.7-1.5,1.5-1.5h9c0.7,0,1.3,0.5,1.5,1.2l2.4-1.4L13.5,5 z M12.5,6.2L7.7,12L2.8,5.5l4.9,1.6l4.8-2.9V4c0-0.3-0.2-0.5-0.5-0.5H3C2.7,3.5,2.5,3.7,2.5,4v9c0,0.3,0.2,0.5,0.5,0.5h9 c0.3,0,0.5-0.2,0.5-0.5V6.2z"/></symbol><symbol id="f-i-checkbox-group" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M0,1h16V0H0V1z M0,3h16V2H0V3z M6,5v1h9V5H6z M15,14v-1H6v1H15z M6,10h9V9H6V10z M4,12l-2.5,1.5L0,13l1.5,2L4,12z M4,8 L1.5,9.5L0,9l1.5,2L4,8z M4,4L1.5,5.5L0,5l1.5,2L4,4z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-columns" xmlns="http://www.w3.org/2000/svg"><metadata id="agprefix__metadata4318"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><path id="agprefix__rect4860-3-5" d="M 16,0.5 A 0.50004997,0.50004997 0 0 0 15.5,0 l -5,0 -5,0 -5,0 A 0.50004997,0.50004997 0 0 0 0,0.5 l 0,15 A 0.50004997,0.50004997 0 0 0 0.5,16 l 5,0 5,0 5,0 A 0.50004997,0.50004997 0 0 0 16,15.5 l 0,-15 z M 15,1 15,15 11,15 11,1 15,1 Z M 10,1 10,15 6,15 6,1 10,1 Z M 5,1 5,15 1,15 1,1 5,1 Z"/></symbol><symbol viewBox="0 0 32 32" id="f-i-copy" xmlns="http://www.w3.org/2000/svg"><path d="M20 8v-8h-14l-6 6v18h12v8h20v-24h-12zM6 2.828v3.172h-3.172l3.172-3.172zM2 22v-14h6v-6h10v6l-6 6v8h-10zM18 10.828v3.172h-3.172l3.172-3.172zM30 30h-16v-14h6v-6h10v20z"/></symbol><symbol id="f-i-divider" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"><metadata id="aiprefix__metadata10"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><rect y="7" x="0" height="1" width="15" id="aiprefix__rect4182"/></symbol><symbol viewBox="0 0 28 32" id="f-i-edit" xmlns="http://www.w3.org/2000/svg"><path d="M22 2l-4 4 6 6 4-4-6-6zM0 24l0.021 6.018 5.979-0.018 16-16-6-6-16 16zM6 28h-4v-4h2v2h2v2z"/></symbol><symbol fill="#000000" viewBox="0 0 24 24" id="f-i-email" xmlns="http://www.w3.org/2000/svg"><path d="M12,2 C17.4292399,2 21.8479317,6.32667079 21.9961582,11.7200952 L22,12 L22,13 C22,15.1729208 20.477434,17 18.5,17 C17.3269391,17 16.3139529,16.3570244 15.6839382,15.3803024 C14.770593,16.3757823 13.4581934,17 12,17 C9.23857625,17 7,14.7614237 7,12 C7,9.23857625 9.23857625,7 12,7 C14.6887547,7 16.8818181,9.12230671 16.9953805,11.7831104 L17,12 L17,13 C17,14.1407877 17.7160103,15 18.5,15 C19.2447902,15 19.928229,14.2245609 19.9947109,13.1689341 L20,13 L20,12 C20,7.581722 16.418278,4 12,4 C7.581722,4 4,7.581722 4,12 C4,16.418278 7.581722,20 12,20 C13.1630948,20 14.2892822,19.7522618 15.3225159,19.2798331 C15.8247876,19.0501777 16.4181317,19.271177 16.647787,19.7734487 C16.8774423,20.2757205 16.656443,20.8690646 16.1541713,21.0987199 C14.861218,21.689901 13.4515463,22 12,22 C6.4771525,22 2,17.5228475 2,12 C2,6.4771525 6.4771525,2 12,2 Z M12,9 C10.3431458,9 9,10.3431458 9,12 C9,13.6568542 10.3431458,15 12,15 C13.6568542,15 15,13.6568542 15,12 C15,10.3431458 13.6568542,9 12,9 Z"/></symbol><symbol viewBox="0 0 32 32" id="f-i-floppy-disk" xmlns="http://www.w3.org/2000/svg"><path d="M28 0h-28v32h32v-28l-4-4zM16 4h4v8h-4v-8zM28 28h-24v-24h2v10h18v-10h2.343l1.657 1.657v22.343z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle" xmlns="http://www.w3.org/2000/svg"><metadata id="aqprefix__metadata8"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><g transform="translate(0,-2)" id="aqprefix__g4220"><rect id="aqprefix__rect4191" width="2" height="2" x="2" y="7"/><rect id="aqprefix__rect4191-2" width="2" height="2" x="7" y="7"/><rect id="aqprefix__rect4191-4" width="2" height="2" x="12" y="7"/></g><g transform="translate(0,2)" id="aqprefix__g4220-6"><rect id="aqprefix__rect4191-40" width="2" height="2" x="2" y="7"/><rect id="aqprefix__rect4191-2-3" width="2" height="2" x="7" y="7"/><rect id="aqprefix__rect4191-4-9" width="2" height="2" x="12" y="7"/></g></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle-column" xmlns="http://www.w3.org/2000/svg"><path d="M2 7h2v2H2zM7 7h2v2H7zM12 7h2v2h-2zM2 12h2v2H2zM7 12h2v2H7zM12 12h2v2h-2z" transform="rotate(90 9.25 9.25)"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle-field" xmlns="http://www.w3.org/2000/svg"><path d="M9.5-6.5h2v2h-2zm-5 0h2v2h-2zm5-5h2v2h-2zm-5 0h2v2h-2z" transform="rotate(90)"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle-row" xmlns="http://www.w3.org/2000/svg"><path d="M12 9.5h2v2h-2zm-5 0h2v2H7Zm-5 0h2v2H2Zm10-5h2v2h-2zm-5 0h2v2H7Zm-5 0h2v2H2Z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle-stage" xmlns="http://www.w3.org/2000/svg"><path d="M2 4.5h2v2H2zM7 4.5h2v2H7zM12 4.5h2v2h-2zM2 9.5h2v2H2zM7 9.5h2v2H7zM12 9.5h2v2h-2zM2-.5h2v2H2zM7-.5h2v2H7zM12-.5h2v2h-2z" transform="translate(0 2.5)"/></symbol><symbol viewBox="0 0 448 512" id="f-i-hash" xmlns="http://www.w3.org/2000/svg"><g id="arprefix__icomoon-ignore"/><path fill="#000" d="M448 192v-64h-80.064l16-128h-64l-16 128h-127.968l16-128h-64l-16 128h-111.968v64h103.968l-15.968 128h-88v64h80l-16 128h64l16-128h127.968l-16 128h64.032l16-128h112v-64h-104l15.936-128h88.064zM279.968 320h-127.968l15.968-128h127.968l-15.968 128z"/></symbol><symbol viewBox="0 0 28 28" id="f-i-header" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M26.281 26q-0.688 0-2.070-0.055t-2.086-0.055q-0.688 0-2.063 0.055t-2.063 0.055q-0.375 0-0.578-0.32t-0.203-0.711q0-0.484 0.266-0.719t0.609-0.266 0.797-0.109 0.703-0.234q0.516-0.328 0.516-2.188l-0.016-6.109q0-0.328-0.016-0.484-0.203-0.063-0.781-0.063h-10.547q-0.594 0-0.797 0.063-0.016 0.156-0.016 0.484l-0.016 5.797q0 2.219 0.578 2.562 0.25 0.156 0.75 0.203t0.891 0.055 0.703 0.234 0.313 0.711q0 0.406-0.195 0.75t-0.57 0.344q-0.734 0-2.18-0.055t-2.164-0.055q-0.672 0-2 0.055t-1.984 0.055q-0.359 0-0.555-0.328t-0.195-0.703q0-0.469 0.242-0.703t0.562-0.273 0.742-0.117 0.656-0.234q0.516-0.359 0.516-2.234l-0.016-0.891v-12.703q0-0.047 0.008-0.406t0-0.57-0.023-0.602-0.055-0.656-0.102-0.57-0.172-0.492-0.25-0.281q-0.234-0.156-0.703-0.187t-0.828-0.031-0.641-0.219-0.281-0.703q0-0.406 0.187-0.75t0.562-0.344q0.719 0 2.164 0.055t2.164 0.055q0.656 0 1.977-0.055t1.977-0.055q0.391 0 0.586 0.344t0.195 0.75q0 0.469-0.266 0.68t-0.602 0.227-0.773 0.063-0.672 0.203q-0.547 0.328-0.547 2.5l0.016 5q0 0.328 0.016 0.5 0.203 0.047 0.609 0.047h10.922q0.391 0 0.594-0.047 0.016-0.172 0.016-0.5l0.016-5q0-2.172-0.547-2.5-0.281-0.172-0.914-0.195t-1.031-0.203-0.398-0.773q0-0.406 0.195-0.75t0.586-0.344q0.688 0 2.063 0.055t2.063 0.055q0.672 0 2.016-0.055t2.016-0.055q0.391 0 0.586 0.344t0.195 0.75q0 0.469-0.273 0.688t-0.625 0.227-0.805 0.047-0.688 0.195q-0.547 0.359-0.547 2.516l0.016 14.734q0 1.859 0.531 2.188 0.25 0.156 0.719 0.211t0.836 0.070 0.648 0.242 0.281 0.695q0 0.406-0.187 0.75t-0.562 0.344z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-hidden" xmlns="http://www.w3.org/2000/svg"><path d="M0 12h1v-1H0Zm15-7h1V4h-1zm-1 7h1v-1h-1zm-2 0h1v-1h-1zm-2 0h1v-1h-1Zm-2 0h1v-1H8Zm-2 0h1v-1H6Zm-2 0h1v-1H4Zm-2 0h1v-1H2Zm13-1h1v-1h-1ZM0 10h1V9H0Zm15-1h1V8h-1ZM0 8h1V7H0Zm15-1h1V6h-1ZM0 6h1V5H0Zm13-1h1V4h-1zm-2 0h1V4h-1ZM9 5h1V4H9ZM7 5h1V4H7ZM5 5h1V4H5ZM3 5h1V4H3ZM1 5h1V4H1Z"/></symbol><symbol viewBox="0 0 384 512" id="f-i-menu" xmlns="http://www.w3.org/2000/svg"><g id="auprefix__icomoon-ignore"/><path d="M0 96v64h384v-64h-384zM0 288h384v-64h-384v64zM0 416h384v-64h-384v64z"/></symbol><symbol viewBox="0 0 24 24" fill="none" id="f-i-minus" xmlns="http://www.w3.org/2000/svg"><path d="M6 12L18 12" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol><symbol viewBox="0 0 512 512" id="f-i-move" xmlns="http://www.w3.org/2000/svg"><path d="M287.744 94.736v129.008h128v-64l96.256 96.256-96.256 96.24v-65.488h-128v129.008h64.496l-96.24 96.24-96.256-96.24h64v-129.008h-128v64.992l-95.744-95.744 95.744-95.744v63.488h128v-129.008h-62.496l94.752-94.736 94.752 94.736h-63.008z"/></symbol><symbol viewBox="0 0 512 512" id="f-i-move-vertical" xmlns="http://www.w3.org/2000/svg"><metadata id="awprefix__metadata10"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="3440" inkscape:window-height="1416" id="awprefix__namedview6" showgrid="false" inkscape:zoom="1.84375" inkscape:cx="421.4312" inkscape:cy="218.56484" inkscape:window-x="0" inkscape:window-y="24" inkscape:window-maximized="1" inkscape:current-layer="svg2" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"/><path d="m 287.744,94.736 0,321.024 64.496,0 L 256,512 l -96.256,-96.24 64,0 0,-321.024 -62.496,0 L 256,0 350.752,94.736 Z" id="awprefix__path4" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:connector-curvature="0" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" sodipodi:nodetypes="ccccccccccc"/></symbol><symbol viewBox="0 0 20 28" id="f-i-paragraph" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M19.969 2.953v1.141q0 0.453-0.289 0.953t-0.664 0.5q-0.781 0-0.844 0.016-0.406 0.094-0.5 0.484-0.047 0.172-0.047 1v18q0 0.391-0.281 0.672t-0.672 0.281h-1.687q-0.391 0-0.672-0.281t-0.281-0.672v-19.031h-2.234v19.031q0 0.391-0.273 0.672t-0.68 0.281h-1.687q-0.406 0-0.68-0.281t-0.273-0.672v-7.75q-2.297-0.187-3.828-0.922-1.969-0.906-3-2.797-1-1.828-1-4.047 0-2.594 1.375-4.469 1.375-1.844 3.266-2.484 1.734-0.578 6.516-0.578h7.484q0.391 0 0.672 0.281t0.281 0.672z"/></symbol><symbol id="f-i-phone-receiver" viewBox="0 0 578.106 578.106" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g><g><path d="M577.83,456.128c1.225,9.385-1.635,17.545-8.568,24.48l-81.396,80.781 c-3.672,4.08-8.465,7.551-14.381,10.404c-5.916,2.857-11.729,4.693-17.439,5.508c-0.408,0-1.635,0.105-3.676,0.309 c-2.037,0.203-4.689,0.307-7.953,0.307c-7.754,0-20.301-1.326-37.641-3.979s-38.555-9.182-63.645-19.584 c-25.096-10.404-53.553-26.012-85.376-46.818c-31.823-20.805-65.688-49.367-101.592-85.68 c-28.56-28.152-52.224-55.08-70.992-80.783c-18.768-25.705-33.864-49.471-45.288-71.299 c-11.425-21.828-19.993-41.616-25.705-59.364S4.59,177.362,2.55,164.51s-2.856-22.95-2.448-30.294 c0.408-7.344,0.612-11.424,0.612-12.24c0.816-5.712,2.652-11.526,5.508-17.442s6.324-10.71,10.404-14.382L98.022,8.756 c5.712-5.712,12.24-8.568,19.584-8.568c5.304,0,9.996,1.53,14.076,4.59s7.548,6.834,10.404,11.322l65.484,124.236 c3.672,6.528,4.692,13.668,3.06,21.42c-1.632,7.752-5.1,14.28-10.404,19.584l-29.988,29.988c-0.816,0.816-1.53,2.142-2.142,3.978 s-0.918,3.366-0.918,4.59c1.632,8.568,5.304,18.36,11.016,29.376c4.896,9.792,12.444,21.726,22.644,35.802 s24.684,30.293,43.452,48.653c18.36,18.77,34.68,33.354,48.96,43.76c14.277,10.4,26.215,18.053,35.803,22.949 c9.588,4.896,16.932,7.854,22.031,8.871l7.648,1.531c0.816,0,2.145-0.307,3.979-0.918c1.836-0.613,3.162-1.326,3.979-2.143 l34.883-35.496c7.348-6.527,15.912-9.791,25.705-9.791c6.938,0,12.443,1.223,16.523,3.672h0.611l118.115,69.768 C571.098,441.238,576.197,447.968,577.83,456.128z"/></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></symbol><symbol viewBox="0 0 24 24" fill="none" id="f-i-plus" xmlns="http://www.w3.org/2000/svg"><path d="M6 12H18M12 6V18" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol><symbol id="f-i-radio-group" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M0,1h16V0H0V1z M0,3h16V2H0V3z M5,6h10V5H5V6z M15,9H5v1h10V9z M15,14v-1H5v1H15z M1.5,7C0.7,7,0,6.3,0,5.5S0.7,4,1.5,4 S3,4.7,3,5.5S2.3,7,1.5,7z M1.5,5C1.2,5,1,5.2,1,5.5S1.2,6,1.5,6S2,5.8,2,5.5S1.8,5,1.5,5z M1.5,11.1C0.7,11.1,0,10.4,0,9.6 s0.7-1.5,1.5-1.5S3,8.7,3,9.6S2.3,11.1,1.5,11.1z M1.5,9.1C1.2,9.1,1,9.3,1,9.6s0.2,0.5,0.5,0.5S2,9.8,2,9.6S1.8,9.1,1.5,9.1z M1.5,15C0.7,15,0,14.3,0,13.5S0.7,12,1.5,12S3,12.7,3,13.5S2.3,15,1.5,15z M1.5,13C1.2,13,1,13.2,1,13.5S1.2,14,1.5,14 S2,13.8,2,13.5S1.8,13,1.5,13z"/></symbol><symbol viewBox="0 0 512 512" id="f-i-remove" xmlns="http://www.w3.org/2000/svg"><path d="M193.694-139.2h87.322v510.916h-87.322zM-18.103 159.92V72.597h510.915v87.322z" transform="rotate(45 77.994 208.636)"/></symbol><symbol id="f-i-rich-text" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M15,1H1C0.4,1,0,1.4,0,2v12c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1V2C16,1.4,15.6,1,15,1z M1,3.1h0.8v0.3H1V3.1z M1,3.6h0.8 v0.3H1V3.6z M15,14H1V5.1h14V14z M15,4.9H1V4.6h14V4.9z M15,4.4H1V4.1h0.8v0.2h1.5V4.1h1.3v0.2H6V4.1h1.3v0.2h1.5V4.1H10v0.2h1.5 V4.1h1.3v0.2h1.5V4.1H15V4.4z M4.5,3.6v0.3H3.3V3.6H4.5z M3.3,3.4V3.1h1.3v0.3H3.3z M7.3,3.6v0.3H6V3.6H7.3z M6,3.4V3.1h1.3v0.3H6z M10,3.6v0.3H8.8V3.6H10z M8.8,3.4V3.1H10v0.3H8.8z M12.8,3.6v0.3h-1.3V3.6H12.8z M11.5,3.4V3.1h1.3v0.3H11.5z M15,3.9h-0.8V3.6H15 V3.9z M15,3.4h-0.8V3.1H15V3.4z M15,2.9h-0.8V2.8h-1.5v0.2h-1.3V2.8H10v0.2H8.8V2.8H7.3v0.2H6V2.8H4.5v0.2H3.3V2.8H1.8v0.2H1V2.6h14 V2.9z M15,2.4H1V2.1h14V2.4z M3,12v-1h10v1H3z M13,10H3V9h10V10z M11,8H3V7h8V8z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-rows" xmlns="http://www.w3.org/2000/svg"><metadata id="beprefix__metadata4318"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><g transform="matrix(0,1,-1,0,3.0984025,11.835155)" id="beprefix__g7209"><path id="beprefix__rect4860-3-5" d="m 4.1640625,-12.402344 a 0.50004997,0.50004997 0 0 0 -0.5,-0.5 l -5,0 -5,0 -5.0000005,0 a 0.50004997,0.50004997 0 0 0 -0.5,0.5 l 0,15.0000002 a 0.50004997,0.50004997 0 0 0 0.5,0.5 l 4.9648442,0 a 0.50004997,0.50004997 0 0 0 0.035156,0 l 4.9648437,0 a 0.50004997,0.50004997 0 0 0 0.035156,0 l 5,0 a 0.50004997,0.50004997 0 0 0 0.5,-0.5 l 0,-15.0000002 z m -1,0.5 0,14.0000002 -4,0 0,-14.0000002 4,0 z m -5,0 0,14.0000002 -4,0 0,-14.0000002 4,0 z m -5,0 0,14.0000002 -4.0000005,0 0,-14.0000002 4.0000005,0 z"/></g></symbol><symbol id="f-i-select" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path id="bfprefix__XMLID_1_" d="M0,0v14h0c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1h0V5h4V0H0z M1,1h10v3H1V1z M1,7h10v3H1V7z M1,14v-3h10v3H1z M15,4h-3V1h3V4z M2,2h1v1H2V2z M2,12h1v1H2V12z M4,12h1v1H4V12z M6,12h1v1H6V12z M9,12v1H8v-1H9z M2,8h1v1H2V8z M4,8h1v1H4V8z M6,8 h1v1H6V8z M13.5,3.1l-1-1.1h1.9L13.5,3.1z M2,6V5h1v1H2L2,6z M4,6V5h1v1H4L4,6z"/></symbol><symbol viewBox="0 0 448 512" id="f-i-settings" xmlns="http://www.w3.org/2000/svg"><g id="bgprefix__icomoon-ignore"/><path d="M223.969 175c-44.703 0-80.969 36.266-80.969 81 0 44.688 36.266 81.031 80.969 81.031 44.719 0 80.719-36.344 80.719-81.031-0-44.734-36-81-80.719-81zM386.313 302.531l-14.594 35.156 29.469 57.875-36.094 36.094-59.218-27.969-35.156 14.438-17.844 54.625-2.281 7.25h-51.016l-22.078-61.656-35.156-14.5-57.952 29.344-36.078-36.063 27.938-59.25-14.484-35.125-61.767-20.156v-50.984l61.703-22.109 14.485-35.094-25.953-51.234-3.422-6.719 36.031-36.031 59.297 27.922 35.109-14.516 17.828-54.594 2.297-7.234h51l22.094 61.734 35.063 14.516 58.031-29.406 36.063 36.031-27.938 59.203 14.438 35.172 61.875 20.125v50.969l-61.688 22.187z"/></symbol><symbol id="f-i-text-input" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path id="bhprefix__XMLID_10_" d="M15,4H4.5V3H6V2H4.5h-1H2v1h1.5v1H1C0.4,4,0,4.5,0,5v6c0,0.6,0.4,1,1,1h2.5v1H2v1h4v-1H4.5v-1H15 c0.6,0,1-0.4,1-1V5C16,4.5,15.6,4,15,4z M1,11V5h2.5v6H1z M15,11H4.5V5H15V11z"/></symbol><symbol id="f-i-textarea" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path id="biprefix__XMLID_1_" d="M3,11v-1h8v1H3L3,11z M3,7h10V6H3V7L3,7z M3,8v1h10V8H3L3,8z M13,4H3v1h10V4L13,4z M16,14V2c0-0.6-0.4-1-1-1 H1C0.4,1,0,1.4,0,2v12c0,0.6,0.4,1,1,1h14C15.6,15,16,14.6,16,14z M15,2v12H1V2H15z"/></symbol><symbol viewBox="0 0 24 32" id="f-i-triangle-down" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M0 12l11.992 11.992 11.992-11.992h-23.984z"/></symbol><symbol viewBox="0 0 12 32" id="f-i-triangle-left" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M0 15.996l11.992 11.992v-23.984l-11.992 11.992z"/></symbol><symbol viewBox="0 0 12 32" id="f-i-triangle-right" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M0.002 4.008l11.992 11.992-11.992 11.992v-23.984z"/></symbol><symbol viewBox="0 0 24 32" id="f-i-triangle-up" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M11.992 8l-11.992 11.992h23.984l-11.992-11.992z"/></symbol><symbol viewBox="0 0 512 512" id="f-i-upload" xmlns="http://www.w3.org/2000/svg"><g id="bnprefix__icomoon-ignore"/><path d="M240 352h-240v128h480v-128h-240zM448 416h-64v-32h64v32zM112 160l128-128 128 128h-80v160h-96v-160z"/></symbol></svg>';
|
|
2172
|
+
const BUNDLED_SVG_SPRITE = '<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol id="f-i-autocomplete" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M6,5h1v1H6V5z M4,4H3v1h1V4z M6,4H5v1h1V4z M2,5v1h1V5H2z M3,7h1V6H3V7z M5,7h1V6H5V7z M4,5v1h1V5H4z M2,14h1v-1H2V14z M4,14h1v-1H4V14z M6,14h1v-1H6V14z M9,13H8v1h1V13z M16,3.5v4C16,8.3,15.3,9,14.5,9H14v3v3c0,0.6-0.4,1-1,1H1c-0.6,0-1-0.4-1-1V3.5 C0,2.7,0.7,2,1.5,2h3H8V1.5V1H7H6V0.5V0h2.5H11v0.5V1h-1H9v0.5V2h3h2.5C15.3,2,16,2.7,16,3.5z M13,12H7H1v3h12V12z M3,11v-1H2v1H3z M5,11v-1H4v1H5z M15,3.5C15,3.2,14.8,3,14.5,3H9v2.5V8H8.5H8V7.5V7H7V6h1V5.5V5H7V4h1V3.5V3H1.5C1.2,3,1,3.2,1,3.5v4 C1,7.8,1.2,8,1.5,8H8v1H6v0.5V10h2.5H11V9.5V9H9V8h5.5C14.8,8,15,7.8,15,7.5V3.5z"/></symbol><symbol viewBox="0 0 32 32" id="f-i-bin" xmlns="http://www.w3.org/2000/svg"><path d="M4 10v20c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-20h-22zM10 28h-2v-14h2v14zM14 28h-2v-14h2v14zM18 28h-2v-14h2v14zM22 28h-2v-14h2v14zM26.5 4h-6.5v-2.5c0-.825-.675-1.5-1.5-1.5h-7c-.825 0-1.5.675-1.5 1.5v2.5h-6.5c-.825 0-1.5.675-1.5 1.5v2.5h26v-2.5c0-.825-.675-1.5-1.5-1.5zM18 4h-6v-1.975h6v1.975z"/></symbol><symbol id="f-i-button" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><metadata id="acprefix__metadata8"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><path id="acprefix__rect4140" d="M 0.4765625,4 A 0.47706934,0.47706934 0 0 0 0,4.4765625 L 0,11.523438 A 0.47706934,0.47706934 0 0 0 0.4765625,12 L 15.523438,12 A 0.47706934,0.47706934 0 0 0 16,11.523438 L 16,4.4765625 A 0.47706934,0.47706934 0 0 0 15.523438,4 L 0.4765625,4 Z m 0.4765625,0.953125 14.09375,0 0,6.09375 -14.09375,0 0,-6.09375 z"/><g id="acprefix__layer1"><g id="acprefix__text4203"><g id="acprefix__g4212" transform="translate(0.10112835,0.1001358)"><path id="acprefix__path4208" d="m 6.0690374,6.4093857 q -0.5371093,0 -0.8544922,0.4003906 -0.3149414,0.4003906 -0.3149414,1.0913086 0,0.6884766 0.3149414,1.0888672 0.3173829,0.4003906 0.8544922,0.4003906 0.5371094,0 0.8496094,-0.4003906 0.3149414,-0.4003906 0.3149414,-1.0888672 0,-0.690918 -0.3149414,-1.0913086 -0.3125,-0.4003906 -0.8496094,-0.4003906 z m 0,-0.4003906 q 0.7666016,0 1.225586,0.5151367 0.4589843,0.5126953 0.4589843,1.3769531 0,0.8618164 -0.4589843,1.3769531 -0.4589844,0.5126953 -1.225586,0.5126953 -0.7690429,0 -1.2304687,-0.5126953 -0.4589844,-0.5126953 -0.4589844,-1.3769531 0,-0.8642578 0.4589844,-1.3769531 0.4614258,-0.5151367 1.2304687,-0.5151367 z"/><path id="acprefix__path4210" d="m 8.5250921,6.074913 0.4931641,0 0,1.5405274 1.6357418,-1.5405274 0.634766,0 -1.809082,1.6992188 1.938477,1.9458008 -0.649415,0 -1.7504878,-1.7553711 0,1.7553711 -0.4931641,0 0,-3.6450196 z"/></g></g></g></symbol><symbol viewBox="0 0 32 32" id="f-i-calendar" xmlns="http://www.w3.org/2000/svg"><path d="M12.048 16.961c-0.178 0.257-0.395 0.901-0.652 1.059-0.257 0.157-0.547 0.267-0.869 0.328-0.323 0.062-0.657 0.089-1.002 0.079v1.527h2.467v6.046h1.991v-9.996h-1.584c-0.056 0.381-0.173 0.7-0.351 0.957zM23 8h2c0.553 0 1-0.448 1-1v-6c0-0.552-0.447-1-1-1h-2c-0.553 0-1 0.448-1 1v6c0 0.552 0.447 1 1 1zM7 8h2c0.552 0 1-0.448 1-1v-6c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v6c0 0.552 0.448 1 1 1zM30 4h-2v5c0 0.552-0.447 1-1 1h-6c-0.553 0-1-0.448-1-1v-5h-8v5c0 0.552-0.448 1-1 1h-6c-0.552 0-1-0.448-1-1v-5h-2c-1.104 0-2 0.896-2 2v24c0 1.104 0.896 2 2 2h28c1.104 0 2-0.896 2-2v-24c0-1.104-0.896-2-2-2zM30 29c0 0.553-0.447 1-1 1h-26c-0.552 0-1-0.447-1-1v-16c0-0.552 0.448-1 1-1h26c0.553 0 1 0.448 1 1v16zM15.985 17.982h4.968c-0.936 1.152-1.689 2.325-2.265 3.705-0.575 1.381-0.638 2.818-0.749 4.312h2.131c0.009-0.666-0.195-1.385-0.051-2.156 0.146-0.771 0.352-1.532 0.617-2.285 0.267-0.752 0.598-1.461 0.996-2.127 0.396-0.667 0.853-1.229 1.367-1.686v-1.742h-7.015v1.979z"/></symbol><symbol id="f-i-checkbox" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M13.5,5v8c0,0.8-0.7,1.5-1.5,1.5H3c-0.8,0-1.5-0.7-1.5-1.5V4c0-0.8,0.7-1.5,1.5-1.5h9c0.7,0,1.3,0.5,1.5,1.2l2.4-1.4L13.5,5 z M12.5,6.2L7.7,12L2.8,5.5l4.9,1.6l4.8-2.9V4c0-0.3-0.2-0.5-0.5-0.5H3C2.7,3.5,2.5,3.7,2.5,4v9c0,0.3,0.2,0.5,0.5,0.5h9 c0.3,0,0.5-0.2,0.5-0.5V6.2z"/></symbol><symbol id="f-i-checkbox-group" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M0,1h16V0H0V1z M0,3h16V2H0V3z M6,5v1h9V5H6z M15,14v-1H6v1H15z M6,10h9V9H6V10z M4,12l-2.5,1.5L0,13l1.5,2L4,12z M4,8 L1.5,9.5L0,9l1.5,2L4,8z M4,4L1.5,5.5L0,5l1.5,2L4,4z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-columns" xmlns="http://www.w3.org/2000/svg"><metadata id="agprefix__metadata4318"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><path id="agprefix__rect4860-3-5" d="M 16,0.5 A 0.50004997,0.50004997 0 0 0 15.5,0 l -5,0 -5,0 -5,0 A 0.50004997,0.50004997 0 0 0 0,0.5 l 0,15 A 0.50004997,0.50004997 0 0 0 0.5,16 l 5,0 5,0 5,0 A 0.50004997,0.50004997 0 0 0 16,15.5 l 0,-15 z M 15,1 15,15 11,15 11,1 15,1 Z M 10,1 10,15 6,15 6,1 10,1 Z M 5,1 5,15 1,15 1,1 5,1 Z"/></symbol><symbol viewBox="0 0 32 32" id="f-i-copy" xmlns="http://www.w3.org/2000/svg"><path d="M20 8v-8h-14l-6 6v18h12v8h20v-24h-12zM6 2.828v3.172h-3.172l3.172-3.172zM2 22v-14h6v-6h10v6l-6 6v8h-10zM18 10.828v3.172h-3.172l3.172-3.172zM30 30h-16v-14h6v-6h10v20z"/></symbol><symbol id="f-i-divider" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"><metadata id="aiprefix__metadata10"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><rect y="7" x="0" height="1" width="15" id="aiprefix__rect4182"/></symbol><symbol viewBox="0 0 28 32" id="f-i-edit" xmlns="http://www.w3.org/2000/svg"><path d="M22 2l-4 4 6 6 4-4-6-6zM0 24l0.021 6.018 5.979-0.018 16-16-6-6-16 16zM6 28h-4v-4h2v2h2v2z"/></symbol><symbol fill="#000000" viewBox="0 0 24 24" id="f-i-email" xmlns="http://www.w3.org/2000/svg"><path d="M12,2 C17.4292399,2 21.8479317,6.32667079 21.9961582,11.7200952 L22,12 L22,13 C22,15.1729208 20.477434,17 18.5,17 C17.3269391,17 16.3139529,16.3570244 15.6839382,15.3803024 C14.770593,16.3757823 13.4581934,17 12,17 C9.23857625,17 7,14.7614237 7,12 C7,9.23857625 9.23857625,7 12,7 C14.6887547,7 16.8818181,9.12230671 16.9953805,11.7831104 L17,12 L17,13 C17,14.1407877 17.7160103,15 18.5,15 C19.2447902,15 19.928229,14.2245609 19.9947109,13.1689341 L20,13 L20,12 C20,7.581722 16.418278,4 12,4 C7.581722,4 4,7.581722 4,12 C4,16.418278 7.581722,20 12,20 C13.1630948,20 14.2892822,19.7522618 15.3225159,19.2798331 C15.8247876,19.0501777 16.4181317,19.271177 16.647787,19.7734487 C16.8774423,20.2757205 16.656443,20.8690646 16.1541713,21.0987199 C14.861218,21.689901 13.4515463,22 12,22 C6.4771525,22 2,17.5228475 2,12 C2,6.4771525 6.4771525,2 12,2 Z M12,9 C10.3431458,9 9,10.3431458 9,12 C9,13.6568542 10.3431458,15 12,15 C13.6568542,15 15,13.6568542 15,12 C15,10.3431458 13.6568542,9 12,9 Z"/></symbol><symbol viewBox="0 0 32 32" id="f-i-floppy-disk" xmlns="http://www.w3.org/2000/svg"><path d="M28 0h-28v32h32v-28l-4-4zM16 4h4v8h-4v-8zM28 28h-24v-24h2v10h18v-10h2.343l1.657 1.657v22.343z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle" xmlns="http://www.w3.org/2000/svg"><metadata id="aqprefix__metadata8"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><g transform="translate(0,-2)" id="aqprefix__g4220"><rect id="aqprefix__rect4191" width="2" height="2" x="2" y="7"/><rect id="aqprefix__rect4191-2" width="2" height="2" x="7" y="7"/><rect id="aqprefix__rect4191-4" width="2" height="2" x="12" y="7"/></g><g transform="translate(0,2)" id="aqprefix__g4220-6"><rect id="aqprefix__rect4191-40" width="2" height="2" x="2" y="7"/><rect id="aqprefix__rect4191-2-3" width="2" height="2" x="7" y="7"/><rect id="aqprefix__rect4191-4-9" width="2" height="2" x="12" y="7"/></g></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle-column" xmlns="http://www.w3.org/2000/svg"><path d="M2 7h2v2H2zM7 7h2v2H7zM12 7h2v2h-2zM2 12h2v2H2zM7 12h2v2H7zM12 12h2v2h-2z" transform="rotate(90 9.25 9.25)"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle-field" xmlns="http://www.w3.org/2000/svg"><path d="M9.5-6.5h2v2h-2zm-5 0h2v2h-2zm5-5h2v2h-2zm-5 0h2v2h-2z" transform="rotate(90)"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle-row" xmlns="http://www.w3.org/2000/svg"><path d="M12 9.5h2v2h-2zm-5 0h2v2H7Zm-5 0h2v2H2Zm10-5h2v2h-2zm-5 0h2v2H7Zm-5 0h2v2H2Z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-handle-stage" xmlns="http://www.w3.org/2000/svg"><path d="M2 4.5h2v2H2zM7 4.5h2v2H7zM12 4.5h2v2h-2zM2 9.5h2v2H2zM7 9.5h2v2H7zM12 9.5h2v2h-2zM2-.5h2v2H2zM7-.5h2v2H7zM12-.5h2v2h-2z" transform="translate(0 2.5)"/></symbol><symbol viewBox="0 0 448 512" id="f-i-hash" xmlns="http://www.w3.org/2000/svg"><g id="arprefix__icomoon-ignore"/><path fill="#000" d="M448 192v-64h-80.064l16-128h-64l-16 128h-127.968l16-128h-64l-16 128h-111.968v64h103.968l-15.968 128h-88v64h80l-16 128h64l16-128h127.968l-16 128h64.032l16-128h112v-64h-104l15.936-128h88.064zM279.968 320h-127.968l15.968-128h127.968l-15.968 128z"/></symbol><symbol viewBox="0 0 28 28" id="f-i-header" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M26.281 26q-0.688 0-2.070-0.055t-2.086-0.055q-0.688 0-2.063 0.055t-2.063 0.055q-0.375 0-0.578-0.32t-0.203-0.711q0-0.484 0.266-0.719t0.609-0.266 0.797-0.109 0.703-0.234q0.516-0.328 0.516-2.188l-0.016-6.109q0-0.328-0.016-0.484-0.203-0.063-0.781-0.063h-10.547q-0.594 0-0.797 0.063-0.016 0.156-0.016 0.484l-0.016 5.797q0 2.219 0.578 2.562 0.25 0.156 0.75 0.203t0.891 0.055 0.703 0.234 0.313 0.711q0 0.406-0.195 0.75t-0.57 0.344q-0.734 0-2.18-0.055t-2.164-0.055q-0.672 0-2 0.055t-1.984 0.055q-0.359 0-0.555-0.328t-0.195-0.703q0-0.469 0.242-0.703t0.562-0.273 0.742-0.117 0.656-0.234q0.516-0.359 0.516-2.234l-0.016-0.891v-12.703q0-0.047 0.008-0.406t0-0.57-0.023-0.602-0.055-0.656-0.102-0.57-0.172-0.492-0.25-0.281q-0.234-0.156-0.703-0.187t-0.828-0.031-0.641-0.219-0.281-0.703q0-0.406 0.187-0.75t0.562-0.344q0.719 0 2.164 0.055t2.164 0.055q0.656 0 1.977-0.055t1.977-0.055q0.391 0 0.586 0.344t0.195 0.75q0 0.469-0.266 0.68t-0.602 0.227-0.773 0.063-0.672 0.203q-0.547 0.328-0.547 2.5l0.016 5q0 0.328 0.016 0.5 0.203 0.047 0.609 0.047h10.922q0.391 0 0.594-0.047 0.016-0.172 0.016-0.5l0.016-5q0-2.172-0.547-2.5-0.281-0.172-0.914-0.195t-1.031-0.203-0.398-0.773q0-0.406 0.195-0.75t0.586-0.344q0.688 0 2.063 0.055t2.063 0.055q0.672 0 2.016-0.055t2.016-0.055q0.391 0 0.586 0.344t0.195 0.75q0 0.469-0.273 0.688t-0.625 0.227-0.805 0.047-0.688 0.195q-0.547 0.359-0.547 2.516l0.016 14.734q0 1.859 0.531 2.188 0.25 0.156 0.719 0.211t0.836 0.070 0.648 0.242 0.281 0.695q0 0.406-0.187 0.75t-0.562 0.344z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-hidden" xmlns="http://www.w3.org/2000/svg"><path d="M0 12h1v-1H0Zm15-7h1V4h-1zm-1 7h1v-1h-1zm-2 0h1v-1h-1zm-2 0h1v-1h-1Zm-2 0h1v-1H8Zm-2 0h1v-1H6Zm-2 0h1v-1H4Zm-2 0h1v-1H2Zm13-1h1v-1h-1ZM0 10h1V9H0Zm15-1h1V8h-1ZM0 8h1V7H0Zm15-1h1V6h-1ZM0 6h1V5H0Zm13-1h1V4h-1zm-2 0h1V4h-1ZM9 5h1V4H9ZM7 5h1V4H7ZM5 5h1V4H5ZM3 5h1V4H3ZM1 5h1V4H1Z"/></symbol><symbol xml:space="preserve" viewBox="0 0 32 32" id="f-i-info-circle" xmlns="http://www.w3.org/2000/svg"><path d="m17.962 24.725 1.806.096v2.531h-7.534v-2.406l1.045-.094c.568-.063.916-.254.916-1.014v-8.801c0-.699-.188-.92-.791-.92l-1.106-.062v-2.626h5.666zM15.747 4.648c1.394 0 2.405 1.047 2.405 2.374 0 1.331-1.014 2.313-2.438 2.313-1.454 0-2.404-.982-2.404-2.313 0-1.327.95-2.374 2.437-2.374M16 32C7.178 32 0 24.822 0 16S7.178 0 16 0c8.82 0 16 7.178 16 16s-7.18 16-16 16m0-29C8.832 3 3 8.832 3 16s5.832 13 13 13 13-5.832 13-13S23.168 3 16 3"/></symbol><symbol viewBox="0 0 384 512" id="f-i-menu" xmlns="http://www.w3.org/2000/svg"><g id="avprefix__icomoon-ignore"/><path d="M0 96v64h384v-64h-384zM0 288h384v-64h-384v64zM0 416h384v-64h-384v64z"/></symbol><symbol viewBox="0 0 24 24" fill="none" id="f-i-minus" xmlns="http://www.w3.org/2000/svg"><path d="M6 12L18 12" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol><symbol viewBox="0 0 512 512" id="f-i-move" xmlns="http://www.w3.org/2000/svg"><path d="M287.744 94.736v129.008h128v-64l96.256 96.256-96.256 96.24v-65.488h-128v129.008h64.496l-96.24 96.24-96.256-96.24h64v-129.008h-128v64.992l-95.744-95.744 95.744-95.744v63.488h128v-129.008h-62.496l94.752-94.736 94.752 94.736h-63.008z"/></symbol><symbol viewBox="0 0 512 512" id="f-i-move-vertical" xmlns="http://www.w3.org/2000/svg"><metadata id="axprefix__metadata10"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><sodipodi:namedview pagecolor="#ffffff" bordercolor="#666666" borderopacity="1" objecttolerance="10" gridtolerance="10" guidetolerance="10" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:pageopacity="0" inkscape:pageshadow="2" inkscape:window-width="3440" inkscape:window-height="1416" id="axprefix__namedview6" showgrid="false" inkscape:zoom="1.84375" inkscape:cx="421.4312" inkscape:cy="218.56484" inkscape:window-x="0" inkscape:window-y="24" inkscape:window-maximized="1" inkscape:current-layer="svg2" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"/><path d="m 287.744,94.736 0,321.024 64.496,0 L 256,512 l -96.256,-96.24 64,0 0,-321.024 -62.496,0 L 256,0 350.752,94.736 Z" id="axprefix__path4" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:connector-curvature="0" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" sodipodi:nodetypes="ccccccccccc"/></symbol><symbol viewBox="0 0 20 28" id="f-i-paragraph" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M19.969 2.953v1.141q0 0.453-0.289 0.953t-0.664 0.5q-0.781 0-0.844 0.016-0.406 0.094-0.5 0.484-0.047 0.172-0.047 1v18q0 0.391-0.281 0.672t-0.672 0.281h-1.687q-0.391 0-0.672-0.281t-0.281-0.672v-19.031h-2.234v19.031q0 0.391-0.273 0.672t-0.68 0.281h-1.687q-0.406 0-0.68-0.281t-0.273-0.672v-7.75q-2.297-0.187-3.828-0.922-1.969-0.906-3-2.797-1-1.828-1-4.047 0-2.594 1.375-4.469 1.375-1.844 3.266-2.484 1.734-0.578 6.516-0.578h7.484q0.391 0 0.672 0.281t0.281 0.672z"/></symbol><symbol id="f-i-phone-receiver" viewBox="0 0 578.106 578.106" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g><g><path d="M577.83,456.128c1.225,9.385-1.635,17.545-8.568,24.48l-81.396,80.781 c-3.672,4.08-8.465,7.551-14.381,10.404c-5.916,2.857-11.729,4.693-17.439,5.508c-0.408,0-1.635,0.105-3.676,0.309 c-2.037,0.203-4.689,0.307-7.953,0.307c-7.754,0-20.301-1.326-37.641-3.979s-38.555-9.182-63.645-19.584 c-25.096-10.404-53.553-26.012-85.376-46.818c-31.823-20.805-65.688-49.367-101.592-85.68 c-28.56-28.152-52.224-55.08-70.992-80.783c-18.768-25.705-33.864-49.471-45.288-71.299 c-11.425-21.828-19.993-41.616-25.705-59.364S4.59,177.362,2.55,164.51s-2.856-22.95-2.448-30.294 c0.408-7.344,0.612-11.424,0.612-12.24c0.816-5.712,2.652-11.526,5.508-17.442s6.324-10.71,10.404-14.382L98.022,8.756 c5.712-5.712,12.24-8.568,19.584-8.568c5.304,0,9.996,1.53,14.076,4.59s7.548,6.834,10.404,11.322l65.484,124.236 c3.672,6.528,4.692,13.668,3.06,21.42c-1.632,7.752-5.1,14.28-10.404,19.584l-29.988,29.988c-0.816,0.816-1.53,2.142-2.142,3.978 s-0.918,3.366-0.918,4.59c1.632,8.568,5.304,18.36,11.016,29.376c4.896,9.792,12.444,21.726,22.644,35.802 s24.684,30.293,43.452,48.653c18.36,18.77,34.68,33.354,48.96,43.76c14.277,10.4,26.215,18.053,35.803,22.949 c9.588,4.896,16.932,7.854,22.031,8.871l7.648,1.531c0.816,0,2.145-0.307,3.979-0.918c1.836-0.613,3.162-1.326,3.979-2.143 l34.883-35.496c7.348-6.527,15.912-9.791,25.705-9.791c6.938,0,12.443,1.223,16.523,3.672h0.611l118.115,69.768 C571.098,441.238,576.197,447.968,577.83,456.128z"/></g></g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/></symbol><symbol viewBox="0 0 24 24" fill="none" id="f-i-plus" xmlns="http://www.w3.org/2000/svg"><path d="M6 12H18M12 6V18" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></symbol><symbol id="f-i-radio-group" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M0,1h16V0H0V1z M0,3h16V2H0V3z M5,6h10V5H5V6z M15,9H5v1h10V9z M15,14v-1H5v1H15z M1.5,7C0.7,7,0,6.3,0,5.5S0.7,4,1.5,4 S3,4.7,3,5.5S2.3,7,1.5,7z M1.5,5C1.2,5,1,5.2,1,5.5S1.2,6,1.5,6S2,5.8,2,5.5S1.8,5,1.5,5z M1.5,11.1C0.7,11.1,0,10.4,0,9.6 s0.7-1.5,1.5-1.5S3,8.7,3,9.6S2.3,11.1,1.5,11.1z M1.5,9.1C1.2,9.1,1,9.3,1,9.6s0.2,0.5,0.5,0.5S2,9.8,2,9.6S1.8,9.1,1.5,9.1z M1.5,15C0.7,15,0,14.3,0,13.5S0.7,12,1.5,12S3,12.7,3,13.5S2.3,15,1.5,15z M1.5,13C1.2,13,1,13.2,1,13.5S1.2,14,1.5,14 S2,13.8,2,13.5S1.8,13,1.5,13z"/></symbol><symbol viewBox="0 0 512 512" id="f-i-remove" xmlns="http://www.w3.org/2000/svg"><path d="M193.694-139.2h87.322v510.916h-87.322zM-18.103 159.92V72.597h510.915v87.322z" transform="rotate(45 77.994 208.636)"/></symbol><symbol id="f-i-rich-text" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="M15,1H1C0.4,1,0,1.4,0,2v12c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1V2C16,1.4,15.6,1,15,1z M1,3.1h0.8v0.3H1V3.1z M1,3.6h0.8 v0.3H1V3.6z M15,14H1V5.1h14V14z M15,4.9H1V4.6h14V4.9z M15,4.4H1V4.1h0.8v0.2h1.5V4.1h1.3v0.2H6V4.1h1.3v0.2h1.5V4.1H10v0.2h1.5 V4.1h1.3v0.2h1.5V4.1H15V4.4z M4.5,3.6v0.3H3.3V3.6H4.5z M3.3,3.4V3.1h1.3v0.3H3.3z M7.3,3.6v0.3H6V3.6H7.3z M6,3.4V3.1h1.3v0.3H6z M10,3.6v0.3H8.8V3.6H10z M8.8,3.4V3.1H10v0.3H8.8z M12.8,3.6v0.3h-1.3V3.6H12.8z M11.5,3.4V3.1h1.3v0.3H11.5z M15,3.9h-0.8V3.6H15 V3.9z M15,3.4h-0.8V3.1H15V3.4z M15,2.9h-0.8V2.8h-1.5v0.2h-1.3V2.8H10v0.2H8.8V2.8H7.3v0.2H6V2.8H4.5v0.2H3.3V2.8H1.8v0.2H1V2.6h14 V2.9z M15,2.4H1V2.1h14V2.4z M3,12v-1h10v1H3z M13,10H3V9h10V10z M11,8H3V7h8V8z"/></symbol><symbol xml:space="preserve" viewBox="0 0 16 16" id="f-i-rows" xmlns="http://www.w3.org/2000/svg"><metadata id="bfprefix__metadata4318"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><cc:Work rdf:about="" xmlns:cc="http://creativecommons.org/ns#"><dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:dc="http://purl.org/dc/elements/1.1/"/><dc:title xmlns:dc="http://purl.org/dc/elements/1.1/"/></cc:Work></rdf:RDF></metadata><g transform="matrix(0,1,-1,0,3.0984025,11.835155)" id="bfprefix__g7209"><path id="bfprefix__rect4860-3-5" d="m 4.1640625,-12.402344 a 0.50004997,0.50004997 0 0 0 -0.5,-0.5 l -5,0 -5,0 -5.0000005,0 a 0.50004997,0.50004997 0 0 0 -0.5,0.5 l 0,15.0000002 a 0.50004997,0.50004997 0 0 0 0.5,0.5 l 4.9648442,0 a 0.50004997,0.50004997 0 0 0 0.035156,0 l 4.9648437,0 a 0.50004997,0.50004997 0 0 0 0.035156,0 l 5,0 a 0.50004997,0.50004997 0 0 0 0.5,-0.5 l 0,-15.0000002 z m -1,0.5 0,14.0000002 -4,0 0,-14.0000002 4,0 z m -5,0 0,14.0000002 -4,0 0,-14.0000002 4,0 z m -5,0 0,14.0000002 -4.0000005,0 0,-14.0000002 4.0000005,0 z"/></g></symbol><symbol id="f-i-select" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path id="bgprefix__XMLID_1_" d="M0,0v14h0c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1h0V5h4V0H0z M1,1h10v3H1V1z M1,7h10v3H1V7z M1,14v-3h10v3H1z M15,4h-3V1h3V4z M2,2h1v1H2V2z M2,12h1v1H2V12z M4,12h1v1H4V12z M6,12h1v1H6V12z M9,12v1H8v-1H9z M2,8h1v1H2V8z M4,8h1v1H4V8z M6,8 h1v1H6V8z M13.5,3.1l-1-1.1h1.9L13.5,3.1z M2,6V5h1v1H2L2,6z M4,6V5h1v1H4L4,6z"/></symbol><symbol viewBox="0 0 448 512" id="f-i-settings" xmlns="http://www.w3.org/2000/svg"><g id="bhprefix__icomoon-ignore"/><path d="M223.969 175c-44.703 0-80.969 36.266-80.969 81 0 44.688 36.266 81.031 80.969 81.031 44.719 0 80.719-36.344 80.719-81.031-0-44.734-36-81-80.719-81zM386.313 302.531l-14.594 35.156 29.469 57.875-36.094 36.094-59.218-27.969-35.156 14.438-17.844 54.625-2.281 7.25h-51.016l-22.078-61.656-35.156-14.5-57.952 29.344-36.078-36.063 27.938-59.25-14.484-35.125-61.767-20.156v-50.984l61.703-22.109 14.485-35.094-25.953-51.234-3.422-6.719 36.031-36.031 59.297 27.922 35.109-14.516 17.828-54.594 2.297-7.234h51l22.094 61.734 35.063 14.516 58.031-29.406 36.063 36.031-27.938 59.203 14.438 35.172 61.875 20.125v50.969l-61.688 22.187z"/></symbol><symbol id="f-i-text-input" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path id="biprefix__XMLID_10_" d="M15,4H4.5V3H6V2H4.5h-1H2v1h1.5v1H1C0.4,4,0,4.5,0,5v6c0,0.6,0.4,1,1,1h2.5v1H2v1h4v-1H4.5v-1H15 c0.6,0,1-0.4,1-1V5C16,4.5,15.6,4,15,4z M1,11V5h2.5v6H1z M15,11H4.5V5H15V11z"/></symbol><symbol id="f-i-textarea" viewBox="0 0 16 16" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path id="bjprefix__XMLID_1_" d="M3,11v-1h8v1H3L3,11z M3,7h10V6H3V7L3,7z M3,8v1h10V8H3L3,8z M13,4H3v1h10V4L13,4z M16,14V2c0-0.6-0.4-1-1-1 H1C0.4,1,0,1.4,0,2v12c0,0.6,0.4,1,1,1h14C15.6,15,16,14.6,16,14z M15,2v12H1V2H15z"/></symbol><symbol viewBox="0 0 24 32" id="f-i-triangle-down" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M0 12l11.992 11.992 11.992-11.992h-23.984z"/></symbol><symbol viewBox="0 0 12 32" id="f-i-triangle-left" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M0 15.996l11.992 11.992v-23.984l-11.992 11.992z"/></symbol><symbol viewBox="0 0 12 32" id="f-i-triangle-right" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M0.002 4.008l11.992 11.992-11.992 11.992v-23.984z"/></symbol><symbol viewBox="0 0 24 32" id="f-i-triangle-up" xmlns="http://www.w3.org/2000/svg"><path fill="#444" d="M11.992 8l-11.992 11.992h23.984l-11.992-11.992z"/></symbol><symbol viewBox="0 0 512 512" id="f-i-upload" xmlns="http://www.w3.org/2000/svg"><g id="boprefix__icomoon-ignore"/><path d="M240 352h-240v128h480v-128h-240zM448 416h-64v-32h64v32zM112 160l128-128 128 128h-80v160h-96v-160z"/></symbol></svg>';
|
|
2172
2173
|
const name = pkg.name;
|
|
2173
2174
|
const version$1 = pkg.version;
|
|
2174
2175
|
const PACKAGE_NAME = name;
|
|
@@ -2352,8 +2353,11 @@ const DEFAULT_FORMDATA = () => ({
|
|
|
2352
2353
|
});
|
|
2353
2354
|
const CHECKED_TYPES = ["selected", "checked"];
|
|
2354
2355
|
const REVERSED_CHECKED_TYPES = CHECKED_TYPES.toReversed();
|
|
2355
|
-
const
|
|
2356
|
-
|
|
2356
|
+
const FILTERED_PANEL_DATA_KEYS = /* @__PURE__ */ new Map([
|
|
2357
|
+
["config", /* @__PURE__ */ new Set(["label", "helpText", "hideLabel", "labelAfter", "disableHtmlLabel", "tooltip"])]
|
|
2358
|
+
]);
|
|
2359
|
+
const toTitleCaseLowers = "a an and as at but by for for from in into near nor of on onto or the to with".split(" ").map((lower) => String.raw`\s${lower}\s`);
|
|
2360
|
+
const toTitleCaseRegex = new RegExp(String.raw`(?!${toTitleCaseLowers.join("|")})\w\S*`, "g");
|
|
2357
2361
|
const regexSpace = /\s+/g;
|
|
2358
2362
|
function toTitleCase(str) {
|
|
2359
2363
|
if (typeof str !== "string") {
|
|
@@ -2405,6 +2409,10 @@ const truncateByWord = (str, maxLength, tail = "…") => {
|
|
|
2405
2409
|
}
|
|
2406
2410
|
return truncatedWord;
|
|
2407
2411
|
};
|
|
2412
|
+
const keyPrefixRegex = /^attrs\.|^meta\.|^options\.|^config\./g;
|
|
2413
|
+
function trimKeyPrefix(key) {
|
|
2414
|
+
return key.replaceAll(keyPrefixRegex, "");
|
|
2415
|
+
}
|
|
2408
2416
|
var isSymbol_1;
|
|
2409
2417
|
var hasRequiredIsSymbol;
|
|
2410
2418
|
function requireIsSymbol() {
|
|
@@ -3975,14 +3983,14 @@ function calculateRealTime(animatingRect, fromRect, toRect, options) {
|
|
|
3975
3983
|
return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;
|
|
3976
3984
|
}
|
|
3977
3985
|
var plugins = [];
|
|
3978
|
-
var defaults$
|
|
3986
|
+
var defaults$4 = {
|
|
3979
3987
|
initializeByDefault: true
|
|
3980
3988
|
};
|
|
3981
3989
|
var PluginManager = {
|
|
3982
3990
|
mount: function mount(plugin) {
|
|
3983
|
-
for (var option2 in defaults$
|
|
3984
|
-
if (defaults$
|
|
3985
|
-
plugin[option2] = defaults$
|
|
3991
|
+
for (var option2 in defaults$4) {
|
|
3992
|
+
if (defaults$4.hasOwnProperty(option2) && !(option2 in plugin)) {
|
|
3993
|
+
plugin[option2] = defaults$4[option2];
|
|
3986
3994
|
}
|
|
3987
3995
|
}
|
|
3988
3996
|
plugins.forEach(function(p) {
|
|
@@ -5782,7 +5790,7 @@ const insertStyle = (srcs) => {
|
|
|
5782
5790
|
},
|
|
5783
5791
|
action: {
|
|
5784
5792
|
load: () => onLoadStylesheet(styleLink, resolve),
|
|
5785
|
-
error: () => reject(new Error(`${
|
|
5793
|
+
error: () => reject(new Error(`${src} failed to load.`))
|
|
5786
5794
|
}
|
|
5787
5795
|
});
|
|
5788
5796
|
document.head.appendChild(styleLink);
|
|
@@ -5827,9 +5835,9 @@ const fetchDependencies = (dependencies) => {
|
|
|
5827
5835
|
return Promise.all(promises);
|
|
5828
5836
|
};
|
|
5829
5837
|
const fetchFormeoStyle = async (cssUrl) => {
|
|
5830
|
-
if (!loaded.css.has(cssUrl)) {
|
|
5838
|
+
if (cssUrl && !loaded.css.has(cssUrl)) {
|
|
5831
5839
|
await insertStyle(cssUrl);
|
|
5832
|
-
if (!loaded.css.has(FALLBACK_CSS_URL)) {
|
|
5840
|
+
if (!loaded.css.has(cssUrl) && !loaded.css.has(FALLBACK_CSS_URL)) {
|
|
5833
5841
|
return await insertStyle(FALLBACK_CSS_URL);
|
|
5834
5842
|
}
|
|
5835
5843
|
}
|
|
@@ -5843,6 +5851,12 @@ const iconFontTemplates = {
|
|
|
5843
5851
|
fontello: (icon) => `<i class="${iconPrefix}${icon}">${icon}</i>`
|
|
5844
5852
|
};
|
|
5845
5853
|
const inputTags = /* @__PURE__ */ new Set(["input", "textarea", "select"]);
|
|
5854
|
+
const stripOn = (str) => str.replace(/^on([A-Z])/, (_, l) => l.toLowerCase());
|
|
5855
|
+
const useCaptureEvts = /* @__PURE__ */ new Set(["focus", "blur"]);
|
|
5856
|
+
const defaultActionHandler = (event) => {
|
|
5857
|
+
const eventName = stripOn(event);
|
|
5858
|
+
return (node, cb) => node.addEventListener(eventName, cb, useCaptureEvts.has(eventName));
|
|
5859
|
+
};
|
|
5846
5860
|
const getName = (elem = {}) => {
|
|
5847
5861
|
let name2 = elem?.attrs?.name || elem?.name;
|
|
5848
5862
|
if (name2) {
|
|
@@ -6048,12 +6062,10 @@ class DOM {
|
|
|
6048
6062
|
onRender: dom.onRender,
|
|
6049
6063
|
render: dom.onRender
|
|
6050
6064
|
};
|
|
6051
|
-
const useCaptureEvts = ["focus", "blur"];
|
|
6052
|
-
const defaultHandler = (event) => (node2, cb) => node2.addEventListener(event, cb, useCaptureEvts.includes(event));
|
|
6053
6065
|
return Object.entries(actions2).map(([event, cb]) => {
|
|
6054
6066
|
const cbs = Array.isArray(cb) ? cb : [cb];
|
|
6055
6067
|
return cbs.map((cb2) => {
|
|
6056
|
-
const action = handlers[event] ||
|
|
6068
|
+
const action = handlers[event] || defaultActionHandler(event);
|
|
6057
6069
|
return action(node, cb2);
|
|
6058
6070
|
});
|
|
6059
6071
|
});
|
|
@@ -6135,7 +6147,11 @@ class DOM {
|
|
|
6135
6147
|
const safeAttrName2 = helpers.safeAttrName(attr);
|
|
6136
6148
|
const value = this.processAttrValue(attrs[attr]);
|
|
6137
6149
|
if (value !== false) {
|
|
6138
|
-
|
|
6150
|
+
try {
|
|
6151
|
+
element.setAttribute(safeAttrName2, value);
|
|
6152
|
+
} catch (e2) {
|
|
6153
|
+
console.warn(`Could not set attribute ${safeAttrName2} with value ${value}`, e2);
|
|
6154
|
+
}
|
|
6139
6155
|
}
|
|
6140
6156
|
}
|
|
6141
6157
|
}
|
|
@@ -6295,7 +6311,7 @@ class DOM {
|
|
|
6295
6311
|
* @return {Boolean} holdsContent
|
|
6296
6312
|
*/
|
|
6297
6313
|
holdsContent(element) {
|
|
6298
|
-
return element.outerHTML.
|
|
6314
|
+
return element.outerHTML.includes("/");
|
|
6299
6315
|
}
|
|
6300
6316
|
/**
|
|
6301
6317
|
* Is this a textarea, select or other block input
|
|
@@ -6337,13 +6353,26 @@ class DOM {
|
|
|
6337
6353
|
const type = helpers.get(elem, "attrs.type");
|
|
6338
6354
|
const labelAfter = helpers.get(elem, "config.labelAfter");
|
|
6339
6355
|
const isCB = type === "checkbox" || type === "radio";
|
|
6340
|
-
return labelAfter
|
|
6356
|
+
return labelAfter === void 0 ? isCB : labelAfter;
|
|
6341
6357
|
}
|
|
6342
6358
|
requiredMark = () => ({
|
|
6343
6359
|
tag: "span",
|
|
6344
6360
|
className: "text-error",
|
|
6345
6361
|
children: "*"
|
|
6346
6362
|
});
|
|
6363
|
+
tooltip = (tooltip2) => ({
|
|
6364
|
+
tag: "span",
|
|
6365
|
+
className: "f-tooltip",
|
|
6366
|
+
dataset: {
|
|
6367
|
+
tooltip: tooltip2
|
|
6368
|
+
},
|
|
6369
|
+
content: dom.icon("info-circle")
|
|
6370
|
+
});
|
|
6371
|
+
helpText = (helpText) => ({
|
|
6372
|
+
tag: "small",
|
|
6373
|
+
className: "f-help-text",
|
|
6374
|
+
children: helpText
|
|
6375
|
+
});
|
|
6347
6376
|
/**
|
|
6348
6377
|
* Generate a label
|
|
6349
6378
|
* @param {Object} elem config object
|
|
@@ -6353,7 +6382,7 @@ class DOM {
|
|
|
6353
6382
|
label(elem, fMap) {
|
|
6354
6383
|
const required = helpers.get(elem, "attrs.required");
|
|
6355
6384
|
let {
|
|
6356
|
-
config: { label: labelText = "" }
|
|
6385
|
+
config: { label: labelText = "", helpText = "", tooltip: tooltip2 = null }
|
|
6357
6386
|
} = elem;
|
|
6358
6387
|
const { id: elemId, attrs } = elem;
|
|
6359
6388
|
if (typeof labelText === "function") {
|
|
@@ -6365,7 +6394,12 @@ class DOM {
|
|
|
6365
6394
|
for: elemId || attrs?.id
|
|
6366
6395
|
},
|
|
6367
6396
|
className: [],
|
|
6368
|
-
children: [
|
|
6397
|
+
children: [
|
|
6398
|
+
labelText,
|
|
6399
|
+
required && this.requiredMark(),
|
|
6400
|
+
tooltip2 && this.tooltip(tooltip2),
|
|
6401
|
+
helpText && this.helpText(helpText)
|
|
6402
|
+
],
|
|
6369
6403
|
action: {}
|
|
6370
6404
|
};
|
|
6371
6405
|
if (fMap) {
|
|
@@ -7079,15 +7113,21 @@ class Autocomplete {
|
|
|
7079
7113
|
this.onChange?.({ target: this.hiddenField });
|
|
7080
7114
|
}
|
|
7081
7115
|
}
|
|
7116
|
+
const keyToPlaceHolder = (key) => mi18n.get(`${key}.placeholder`) || toTitleCase(trimKeyPrefix(key));
|
|
7117
|
+
const keyToClassName = (key) => key.replaceAll(".", "-");
|
|
7118
|
+
const stringInputTypeMap = /* @__PURE__ */ new Map([
|
|
7119
|
+
["config.helpText", (...args) => largeTextInputConfigBase(...args)],
|
|
7120
|
+
["config.tooltip", (...args) => largeTextInputConfigBase(...args)]
|
|
7121
|
+
]);
|
|
7082
7122
|
function inputConfigBase({ key, value, type = "text", checked }) {
|
|
7083
7123
|
const config = {
|
|
7084
7124
|
tag: "input",
|
|
7085
7125
|
attrs: {
|
|
7086
7126
|
type,
|
|
7087
7127
|
value,
|
|
7088
|
-
placeholder:
|
|
7128
|
+
placeholder: keyToPlaceHolder(key)
|
|
7089
7129
|
},
|
|
7090
|
-
className: [key
|
|
7130
|
+
className: [keyToClassName(key)],
|
|
7091
7131
|
config: {}
|
|
7092
7132
|
};
|
|
7093
7133
|
if (checked) {
|
|
@@ -7095,17 +7135,33 @@ function inputConfigBase({ key, value, type = "text", checked }) {
|
|
|
7095
7135
|
}
|
|
7096
7136
|
return config;
|
|
7097
7137
|
}
|
|
7138
|
+
function largeTextInputConfigBase({ key, value }) {
|
|
7139
|
+
return {
|
|
7140
|
+
tag: "textarea",
|
|
7141
|
+
attrs: {
|
|
7142
|
+
placeholder: keyToPlaceHolder(key)
|
|
7143
|
+
},
|
|
7144
|
+
className: [keyToClassName(key)],
|
|
7145
|
+
config: {},
|
|
7146
|
+
textContent: value
|
|
7147
|
+
};
|
|
7148
|
+
}
|
|
7098
7149
|
function labelHelper(key) {
|
|
7099
7150
|
const labelText = mi18n.get(key);
|
|
7100
7151
|
if (labelText) {
|
|
7101
7152
|
return labelText;
|
|
7102
7153
|
}
|
|
7103
|
-
const
|
|
7104
|
-
return mi18n.get(
|
|
7154
|
+
const trimmedKey = trimKeyPrefix(key);
|
|
7155
|
+
return mi18n.get(trimmedKey) || toTitleCase(trimmedKey);
|
|
7105
7156
|
}
|
|
7106
7157
|
const ITEM_INPUT_TYPE_MAP = {
|
|
7107
7158
|
autocomplete: (...args) => new Autocomplete(...args).createProxy(),
|
|
7108
|
-
string: ({ key, value }) =>
|
|
7159
|
+
string: ({ key, value }) => {
|
|
7160
|
+
if (stringInputTypeMap.has(key)) {
|
|
7161
|
+
return stringInputTypeMap.get(key)({ key, value });
|
|
7162
|
+
}
|
|
7163
|
+
return inputConfigBase({ key, value });
|
|
7164
|
+
},
|
|
7109
7165
|
boolean: ({ key, value }) => {
|
|
7110
7166
|
const type = key === "selected" ? "radio" : "checkbox";
|
|
7111
7167
|
return inputConfigBase({ key, value, type, checked: !!value });
|
|
@@ -7117,7 +7173,7 @@ const ITEM_INPUT_TYPE_MAP = {
|
|
|
7117
7173
|
attrs: {
|
|
7118
7174
|
placeholder: labelHelper(`placeholder.${key}`)
|
|
7119
7175
|
},
|
|
7120
|
-
className: [key
|
|
7176
|
+
className: [keyToClassName(key)],
|
|
7121
7177
|
options: value
|
|
7122
7178
|
};
|
|
7123
7179
|
},
|
|
@@ -7158,6 +7214,265 @@ const INPUT_TYPE_ACTION = {
|
|
|
7158
7214
|
}),
|
|
7159
7215
|
object: () => ({})
|
|
7160
7216
|
};
|
|
7217
|
+
const defaults$3 = Object.freeze({
|
|
7218
|
+
title: "",
|
|
7219
|
+
content: null,
|
|
7220
|
+
confirmText: () => labelHelper("save"),
|
|
7221
|
+
cancelText: () => labelHelper("cancel"),
|
|
7222
|
+
onConfirm: () => {
|
|
7223
|
+
},
|
|
7224
|
+
onCancel: () => {
|
|
7225
|
+
},
|
|
7226
|
+
className: "",
|
|
7227
|
+
closeOnEscape: true,
|
|
7228
|
+
position: "top",
|
|
7229
|
+
// 'top' | 'center' | 'trigger'
|
|
7230
|
+
triggerElement: null,
|
|
7231
|
+
// Element that triggered the dialog (for position: 'trigger')
|
|
7232
|
+
triggerCoords: null
|
|
7233
|
+
// Or manual coords { x, y } (for position: 'trigger')
|
|
7234
|
+
});
|
|
7235
|
+
class Dialog {
|
|
7236
|
+
/**
|
|
7237
|
+
* Creates a new Dialog instance
|
|
7238
|
+
* @param {Object} options - Dialog configuration options
|
|
7239
|
+
* @param {string} [options.title] - Dialog title
|
|
7240
|
+
* @param {Object|Array} [options.content] - DOM config for dialog body content
|
|
7241
|
+
* @param {Function} [options.onConfirm] - Callback when form is submitted (receives FormData)
|
|
7242
|
+
* @param {Function} [options.onCancel] - Callback when dialog is cancelled
|
|
7243
|
+
* @param {string|Function} [options.confirmText] - Confirm button text
|
|
7244
|
+
* @param {string|Function} [options.cancelText] - Cancel button text
|
|
7245
|
+
* @param {string} [options.className] - Additional CSS class name(s)
|
|
7246
|
+
* @param {boolean} [options.closeOnEscape] - Whether Escape key closes dialog
|
|
7247
|
+
* @param {string} [options.position] - Positioning mode: 'top' (upper center), 'center', or 'trigger' (near trigger element)
|
|
7248
|
+
* @param {HTMLElement} [options.triggerElement] - Element that triggered dialog (for position: 'trigger')
|
|
7249
|
+
* @param {Object} [options.triggerCoords] - Manual coordinates {x, y} (for position: 'trigger')
|
|
7250
|
+
*/
|
|
7251
|
+
constructor(options) {
|
|
7252
|
+
this.opts = merge(defaults$3, options);
|
|
7253
|
+
this.dialog = null;
|
|
7254
|
+
}
|
|
7255
|
+
/**
|
|
7256
|
+
* Creates the dialog DOM structure
|
|
7257
|
+
* @returns {HTMLDialogElement} The created dialog element
|
|
7258
|
+
*/
|
|
7259
|
+
createDialog() {
|
|
7260
|
+
const { title, content, confirmText, cancelText, className, closeOnEscape, position } = this.opts;
|
|
7261
|
+
const positionClass = `dialog-position-${position}`;
|
|
7262
|
+
const formChildren = [];
|
|
7263
|
+
if (title) {
|
|
7264
|
+
formChildren.push({
|
|
7265
|
+
tag: "h3",
|
|
7266
|
+
className: "dialog-title",
|
|
7267
|
+
textContent: title
|
|
7268
|
+
});
|
|
7269
|
+
}
|
|
7270
|
+
if (content) {
|
|
7271
|
+
formChildren.push({
|
|
7272
|
+
tag: "div",
|
|
7273
|
+
className: "dialog-body",
|
|
7274
|
+
children: Array.isArray(content) ? content : [content]
|
|
7275
|
+
});
|
|
7276
|
+
}
|
|
7277
|
+
formChildren.push({
|
|
7278
|
+
tag: "div",
|
|
7279
|
+
className: "dialog-actions",
|
|
7280
|
+
children: [
|
|
7281
|
+
{
|
|
7282
|
+
tag: "button",
|
|
7283
|
+
type: "button",
|
|
7284
|
+
className: "btn btn-sm btn-secondary",
|
|
7285
|
+
textContent: typeof cancelText === "function" ? cancelText() : cancelText,
|
|
7286
|
+
action: {
|
|
7287
|
+
click: () => this.handleCancel()
|
|
7288
|
+
}
|
|
7289
|
+
},
|
|
7290
|
+
{
|
|
7291
|
+
tag: "button",
|
|
7292
|
+
type: "submit",
|
|
7293
|
+
className: "btn btn-sm btn-primary",
|
|
7294
|
+
textContent: typeof confirmText === "function" ? confirmText() : confirmText
|
|
7295
|
+
}
|
|
7296
|
+
]
|
|
7297
|
+
});
|
|
7298
|
+
const dialogElement = dom.create({
|
|
7299
|
+
tag: "dialog",
|
|
7300
|
+
className: ["formeo-dialog", "formeo", positionClass, className],
|
|
7301
|
+
children: [
|
|
7302
|
+
{
|
|
7303
|
+
tag: "form",
|
|
7304
|
+
className: "dialog-form",
|
|
7305
|
+
method: "dialog",
|
|
7306
|
+
children: formChildren,
|
|
7307
|
+
action: {
|
|
7308
|
+
submit: (e2) => this.handleSubmit(e2)
|
|
7309
|
+
}
|
|
7310
|
+
}
|
|
7311
|
+
],
|
|
7312
|
+
action: {
|
|
7313
|
+
cancel: (e2) => {
|
|
7314
|
+
if (closeOnEscape) {
|
|
7315
|
+
this.handleCancel();
|
|
7316
|
+
} else {
|
|
7317
|
+
e2.preventDefault();
|
|
7318
|
+
}
|
|
7319
|
+
}
|
|
7320
|
+
}
|
|
7321
|
+
});
|
|
7322
|
+
return dialogElement;
|
|
7323
|
+
}
|
|
7324
|
+
/**
|
|
7325
|
+
* Handles form submission
|
|
7326
|
+
* @param {Event} e - Submit event
|
|
7327
|
+
*/
|
|
7328
|
+
handleSubmit(e2) {
|
|
7329
|
+
e2.preventDefault();
|
|
7330
|
+
const formData = new FormData(e2.target);
|
|
7331
|
+
this.opts.onConfirm(formData, this);
|
|
7332
|
+
this.close();
|
|
7333
|
+
}
|
|
7334
|
+
/**
|
|
7335
|
+
* Handles dialog cancellation
|
|
7336
|
+
*/
|
|
7337
|
+
handleCancel() {
|
|
7338
|
+
this.opts.onCancel(this);
|
|
7339
|
+
this.close();
|
|
7340
|
+
}
|
|
7341
|
+
/**
|
|
7342
|
+
* Sets dialog position based on trigger element or coordinates
|
|
7343
|
+
*/
|
|
7344
|
+
setPosition() {
|
|
7345
|
+
const { position, triggerElement, triggerCoords } = this.opts;
|
|
7346
|
+
if (position !== "trigger" || !this.dialog) return;
|
|
7347
|
+
let coords = triggerCoords;
|
|
7348
|
+
if (!coords && triggerElement) {
|
|
7349
|
+
const rect = triggerElement.getBoundingClientRect();
|
|
7350
|
+
coords = {
|
|
7351
|
+
x: rect.left + rect.width / 2,
|
|
7352
|
+
y: rect.bottom + 8
|
|
7353
|
+
// 8px gap below trigger
|
|
7354
|
+
};
|
|
7355
|
+
}
|
|
7356
|
+
if (coords) {
|
|
7357
|
+
const dialogRect = this.dialog.getBoundingClientRect();
|
|
7358
|
+
const viewportWidth = window.innerWidth;
|
|
7359
|
+
const viewportHeight = window.innerHeight;
|
|
7360
|
+
let left = coords.x - dialogRect.width / 2;
|
|
7361
|
+
let top = coords.y;
|
|
7362
|
+
const padding = 16;
|
|
7363
|
+
left = Math.max(padding, Math.min(left, viewportWidth - dialogRect.width - padding));
|
|
7364
|
+
top = Math.max(padding, Math.min(top, viewportHeight - dialogRect.height - padding));
|
|
7365
|
+
this.dialog.style.left = `${left}px`;
|
|
7366
|
+
this.dialog.style.top = `${top}px`;
|
|
7367
|
+
this.dialog.style.transform = "none";
|
|
7368
|
+
}
|
|
7369
|
+
}
|
|
7370
|
+
/**
|
|
7371
|
+
* Opens the dialog
|
|
7372
|
+
* @returns {Dialog} This dialog instance for chaining
|
|
7373
|
+
*/
|
|
7374
|
+
open() {
|
|
7375
|
+
if (!this.dialog) {
|
|
7376
|
+
this.dialog = this.createDialog();
|
|
7377
|
+
}
|
|
7378
|
+
document.body.appendChild(this.dialog);
|
|
7379
|
+
this.dialog.showModal();
|
|
7380
|
+
if (this.opts.position === "trigger") {
|
|
7381
|
+
const setTimeoutId = setTimeout(() => {
|
|
7382
|
+
this.setPosition();
|
|
7383
|
+
clearTimeout(setTimeoutId);
|
|
7384
|
+
}, 0);
|
|
7385
|
+
}
|
|
7386
|
+
return this;
|
|
7387
|
+
}
|
|
7388
|
+
/**
|
|
7389
|
+
* Closes and removes the dialog
|
|
7390
|
+
*/
|
|
7391
|
+
close() {
|
|
7392
|
+
if (this.dialog) {
|
|
7393
|
+
this.dialog.close();
|
|
7394
|
+
this.dialog.remove();
|
|
7395
|
+
this.dialog = null;
|
|
7396
|
+
}
|
|
7397
|
+
}
|
|
7398
|
+
/**
|
|
7399
|
+
* Static shorthand for simple alert dialog
|
|
7400
|
+
* @param {string} message - Alert message
|
|
7401
|
+
* @param {Function} [onConfirm] - Optional callback when confirmed
|
|
7402
|
+
* @returns {Dialog} Dialog instance
|
|
7403
|
+
*/
|
|
7404
|
+
static alert(message, onConfirm = () => {
|
|
7405
|
+
}) {
|
|
7406
|
+
return new Dialog({
|
|
7407
|
+
content: {
|
|
7408
|
+
tag: "p",
|
|
7409
|
+
className: "dialog-message",
|
|
7410
|
+
textContent: message
|
|
7411
|
+
},
|
|
7412
|
+
confirmText: () => mi18n.get("ok") || "OK",
|
|
7413
|
+
cancelText: "",
|
|
7414
|
+
// Hide cancel button by returning empty string
|
|
7415
|
+
onConfirm: () => onConfirm()
|
|
7416
|
+
});
|
|
7417
|
+
}
|
|
7418
|
+
/**
|
|
7419
|
+
* Static shorthand for confirmation dialog
|
|
7420
|
+
* @param {string} message - Confirmation question
|
|
7421
|
+
* @param {Function} [onConfirm] - Callback when confirmed
|
|
7422
|
+
* @param {Function} [onCancel] - Callback when cancelled
|
|
7423
|
+
* @returns {Dialog} Dialog instance
|
|
7424
|
+
*/
|
|
7425
|
+
static confirm(message, onConfirm = () => {
|
|
7426
|
+
}, onCancel = () => {
|
|
7427
|
+
}) {
|
|
7428
|
+
return new Dialog({
|
|
7429
|
+
content: {
|
|
7430
|
+
tag: "p",
|
|
7431
|
+
className: "dialog-message",
|
|
7432
|
+
textContent: message
|
|
7433
|
+
},
|
|
7434
|
+
confirmText: () => mi18n.get("confirm") || "Confirm",
|
|
7435
|
+
onConfirm: () => onConfirm(),
|
|
7436
|
+
onCancel: () => onCancel()
|
|
7437
|
+
});
|
|
7438
|
+
}
|
|
7439
|
+
/**
|
|
7440
|
+
* Static shorthand for prompt dialog
|
|
7441
|
+
* @param {string} message - Prompt message
|
|
7442
|
+
* @param {Function} onSubmit - Callback with user input value
|
|
7443
|
+
* @param {string} [defaultValue] - Default input value
|
|
7444
|
+
* @returns {Dialog} Dialog instance
|
|
7445
|
+
*/
|
|
7446
|
+
static prompt(message, onSubmit = () => {
|
|
7447
|
+
}, defaultValue = "") {
|
|
7448
|
+
return new Dialog({
|
|
7449
|
+
content: [
|
|
7450
|
+
{
|
|
7451
|
+
tag: "label",
|
|
7452
|
+
className: "dialog-prompt-label",
|
|
7453
|
+
children: [
|
|
7454
|
+
{
|
|
7455
|
+
tag: "p",
|
|
7456
|
+
className: "dialog-message",
|
|
7457
|
+
textContent: message
|
|
7458
|
+
},
|
|
7459
|
+
{
|
|
7460
|
+
tag: "input",
|
|
7461
|
+
type: "text",
|
|
7462
|
+
name: "prompt-value",
|
|
7463
|
+
className: "dialog-prompt-input",
|
|
7464
|
+
value: defaultValue
|
|
7465
|
+
}
|
|
7466
|
+
]
|
|
7467
|
+
}
|
|
7468
|
+
],
|
|
7469
|
+
onConfirm: (formData) => {
|
|
7470
|
+
const value = formData.get("prompt-value");
|
|
7471
|
+
onSubmit(value);
|
|
7472
|
+
}
|
|
7473
|
+
});
|
|
7474
|
+
}
|
|
7475
|
+
}
|
|
7161
7476
|
const hiddenPropertyClassname = "hidden-property";
|
|
7162
7477
|
const hiddenOptionClassname = "hidden-option";
|
|
7163
7478
|
const optionsAddressRegex = /\.options\[\d+\]$/;
|
|
@@ -7545,7 +7860,7 @@ class EditPanelItem {
|
|
|
7545
7860
|
const conditionTypeWrap = this.conditionTypeWrap.get(conditionType);
|
|
7546
7861
|
const conditionField = conditionTypeWrap.children[index2];
|
|
7547
7862
|
conditionField.destroy();
|
|
7548
|
-
|
|
7863
|
+
conditionField.dom.remove();
|
|
7549
7864
|
};
|
|
7550
7865
|
generateConditionFields = (conditionType, conditionVals) => {
|
|
7551
7866
|
this.conditions = /* @__PURE__ */ new Map();
|
|
@@ -7596,24 +7911,52 @@ class EditPanelItem {
|
|
|
7596
7911
|
};
|
|
7597
7912
|
return controls;
|
|
7598
7913
|
}
|
|
7914
|
+
/**
|
|
7915
|
+
* Get config-provided options for an attribute
|
|
7916
|
+
* @param {String} attrKey - The attribute key (e.g., 'attrs.type')
|
|
7917
|
+
* @returns {Array|null} Array of options if config provides them, null otherwise
|
|
7918
|
+
*/
|
|
7919
|
+
getConfigAttrOptions(attrKey) {
|
|
7920
|
+
const attrName = attrKey.split(".").pop();
|
|
7921
|
+
const configValue = this.field.config?.attrs?.[attrName];
|
|
7922
|
+
if (Array.isArray(configValue)) {
|
|
7923
|
+
return configValue;
|
|
7924
|
+
}
|
|
7925
|
+
return null;
|
|
7926
|
+
}
|
|
7599
7927
|
itemInput(key, value) {
|
|
7600
|
-
|
|
7928
|
+
if (this.isDisabled) {
|
|
7929
|
+
return null;
|
|
7930
|
+
}
|
|
7931
|
+
let valType = dom.childType(value) || "string";
|
|
7932
|
+
let effectiveValue = value;
|
|
7933
|
+
if (this.panelName === "attrs") {
|
|
7934
|
+
const configAttrOptions = this.getConfigAttrOptions(key);
|
|
7935
|
+
if (configAttrOptions) {
|
|
7936
|
+
effectiveValue = configAttrOptions.map((opt) => ({
|
|
7937
|
+
...opt,
|
|
7938
|
+
selected: opt.value === value
|
|
7939
|
+
}));
|
|
7940
|
+
valType = "array";
|
|
7941
|
+
}
|
|
7942
|
+
}
|
|
7601
7943
|
const dataKey = panelDataKeyMap.get(this.panelName)?.({ itemKey: this.itemKey, key }) || this.itemKey;
|
|
7602
7944
|
const labelKey = dataKey.split(".").filter(Number.isNaN).join(".") || key;
|
|
7603
|
-
const baseConfig = ITEM_INPUT_TYPE_MAP[valType]({ key, value });
|
|
7604
|
-
const name2 = `${this.field.shortId}-${slugifyAddress(dataKey).
|
|
7945
|
+
const baseConfig = ITEM_INPUT_TYPE_MAP[valType]({ key, value: effectiveValue });
|
|
7946
|
+
const name2 = `${this.field.shortId}-${slugifyAddress(dataKey).replaceAll(/-\d+-(selected)/g, "-$1")}`;
|
|
7605
7947
|
const config = {
|
|
7606
|
-
label: this.panelName !== "options" &&
|
|
7607
|
-
labelAfter: false
|
|
7948
|
+
label: this.panelName !== "options" && labelHelper(labelKey),
|
|
7949
|
+
labelAfter: false,
|
|
7950
|
+
inputWrap: ["f-input-wrap", this.isLocked && "locked-prop", this.isDisabled && "disabled-prop"].filter(Boolean).join(" ")
|
|
7608
7951
|
};
|
|
7609
7952
|
const attrs = {
|
|
7610
7953
|
name: baseConfig.attrs.type === "checkbox" ? `${name2}[]` : name2
|
|
7611
7954
|
};
|
|
7612
7955
|
attrs.disabled = this.isDisabled;
|
|
7613
|
-
attrs.
|
|
7956
|
+
attrs.readonly = this.isLocked;
|
|
7614
7957
|
const itemInputAction = itemInputActions.get(this.itemSlug)?.(this);
|
|
7615
7958
|
const action = mergeActions(INPUT_TYPE_ACTION[valType](dataKey, this.field), itemInputAction || {});
|
|
7616
|
-
const inputConfig = merge(ITEM_INPUT_TYPE_MAP[valType]({ key, value }), { action, attrs, config });
|
|
7959
|
+
const inputConfig = merge(ITEM_INPUT_TYPE_MAP[valType]({ key, value: effectiveValue }), { action, attrs, config });
|
|
7617
7960
|
if (CHECKED_TYPES.includes(key)) {
|
|
7618
7961
|
return {
|
|
7619
7962
|
className: "f-addon",
|
|
@@ -7628,6 +7971,22 @@ const addAttributeActions = {
|
|
|
7628
7971
|
toggleOptionMultiSelect(!!val, field2);
|
|
7629
7972
|
}
|
|
7630
7973
|
};
|
|
7974
|
+
const defaultConfigOptions = [
|
|
7975
|
+
{ label: labelHelper("config.label"), value: "label" },
|
|
7976
|
+
{ label: labelHelper("config.hideLabel"), value: "hideLabel" },
|
|
7977
|
+
{ label: labelHelper("config.helpText"), value: "helpText" },
|
|
7978
|
+
{ label: labelHelper("config.labelAfter"), value: "labelAfter" },
|
|
7979
|
+
{ label: labelHelper("config.disableHtmlLabel"), value: "disableHtmlLabel" },
|
|
7980
|
+
{ label: labelHelper("config.tooltip"), value: "tooltip" }
|
|
7981
|
+
];
|
|
7982
|
+
const defaultConfigValues = {
|
|
7983
|
+
label: "New Field",
|
|
7984
|
+
hideLabel: false,
|
|
7985
|
+
helpText: "",
|
|
7986
|
+
labelAfter: false,
|
|
7987
|
+
disableHtmlLabel: false,
|
|
7988
|
+
tooltip: ""
|
|
7989
|
+
};
|
|
7631
7990
|
class EditPanel {
|
|
7632
7991
|
/**
|
|
7633
7992
|
* Set defaults and load panelData
|
|
@@ -7668,16 +8027,23 @@ class EditPanel {
|
|
|
7668
8027
|
createProps(data = this.data) {
|
|
7669
8028
|
this.editPanelItems = Array.from(data).map((dataVal, index2) => {
|
|
7670
8029
|
const isArray = this.type === "array";
|
|
8030
|
+
const keyBase = dataVal[0];
|
|
7671
8031
|
const key = isArray ? `[${index2}]` : `.${dataVal[0]}`;
|
|
7672
8032
|
const val = isArray ? dataVal : { [dataVal[0]]: dataVal[1] };
|
|
8033
|
+
const itemKey = `${this.name}${key}`;
|
|
8034
|
+
const isDisabledProp = this.component.isDisabledProp(itemKey, this.name);
|
|
8035
|
+
const isEditableProp = FILTERED_PANEL_DATA_KEYS.get(this.name)?.has(keyBase) ?? true;
|
|
8036
|
+
if (isDisabledProp || !isEditableProp) {
|
|
8037
|
+
return null;
|
|
8038
|
+
}
|
|
7673
8039
|
return new EditPanelItem({
|
|
7674
|
-
key:
|
|
8040
|
+
key: itemKey,
|
|
7675
8041
|
data: val,
|
|
7676
8042
|
field: this.component,
|
|
7677
8043
|
index: index2,
|
|
7678
8044
|
panel: this
|
|
7679
8045
|
});
|
|
7680
|
-
});
|
|
8046
|
+
}).filter(Boolean);
|
|
7681
8047
|
const editGroupConfig = {
|
|
7682
8048
|
tag: "ul",
|
|
7683
8049
|
attrs: {
|
|
@@ -7700,11 +8066,11 @@ class EditPanel {
|
|
|
7700
8066
|
*/
|
|
7701
8067
|
createEditButtons() {
|
|
7702
8068
|
const type = this.name;
|
|
7703
|
-
const btnTitle = mi18n.get(`panelEditButtons.${type}`);
|
|
7704
8069
|
const addActions = {
|
|
7705
8070
|
attrs: this.addAttribute,
|
|
7706
8071
|
options: this.addOption,
|
|
7707
|
-
conditions: this.addCondition
|
|
8072
|
+
conditions: this.addCondition,
|
|
8073
|
+
config: this.addConfiguration
|
|
7708
8074
|
};
|
|
7709
8075
|
const editPanelButtons = [];
|
|
7710
8076
|
if (type === "conditions") {
|
|
@@ -7725,8 +8091,9 @@ class EditPanel {
|
|
|
7725
8091
|
};
|
|
7726
8092
|
editPanelButtons.push(clearAllBtn);
|
|
7727
8093
|
}
|
|
8094
|
+
const addBtnTitle = mi18n.get(`panelEditButtons.${type}`) || `+ Add ${toTitleCase(type)}`;
|
|
7728
8095
|
const addBtn = {
|
|
7729
|
-
...dom.btnTemplate({ content:
|
|
8096
|
+
...dom.btnTemplate({ content: addBtnTitle, title: addBtnTitle }),
|
|
7730
8097
|
className: `add-${type}`,
|
|
7731
8098
|
action: {
|
|
7732
8099
|
click: (evt) => {
|
|
@@ -7743,7 +8110,7 @@ class EditPanel {
|
|
|
7743
8110
|
};
|
|
7744
8111
|
}
|
|
7745
8112
|
const eventType = toTitleCase(type);
|
|
7746
|
-
const customEvt = new
|
|
8113
|
+
const customEvt = new globalThis.CustomEvent(`onAdd${eventType}`, {
|
|
7747
8114
|
detail: addEvt
|
|
7748
8115
|
});
|
|
7749
8116
|
actions.add[type](addEvt);
|
|
@@ -7824,6 +8191,37 @@ class EditPanel {
|
|
|
7824
8191
|
this.component.set(itemKey, evt.template);
|
|
7825
8192
|
this.component.resizePanelWrap();
|
|
7826
8193
|
};
|
|
8194
|
+
addConfiguration = () => {
|
|
8195
|
+
const configData = this.component.get("config");
|
|
8196
|
+
const dialog = new Dialog({
|
|
8197
|
+
className: "config-item-dialog",
|
|
8198
|
+
content: [
|
|
8199
|
+
{
|
|
8200
|
+
tag: "select",
|
|
8201
|
+
config: { label: mi18n.get("selectConfigKey") || "Select Configuration Key" },
|
|
8202
|
+
attrs: { name: "selectConfigKey", required: true, className: "config-key-select" },
|
|
8203
|
+
options: defaultConfigOptions.filter((opt) => !(opt.value in configData))
|
|
8204
|
+
}
|
|
8205
|
+
],
|
|
8206
|
+
onConfirm: (formData) => {
|
|
8207
|
+
const configKey = formData.get("selectConfigKey").trim();
|
|
8208
|
+
const itemKey = `config.${configKey}`;
|
|
8209
|
+
if (configKey) {
|
|
8210
|
+
const newConfig = new EditPanelItem({
|
|
8211
|
+
key: itemKey,
|
|
8212
|
+
data: defaultConfigValues[configKey],
|
|
8213
|
+
field: this.component,
|
|
8214
|
+
panel: this
|
|
8215
|
+
});
|
|
8216
|
+
this.editPanelItems.push(newConfig);
|
|
8217
|
+
this.props.appendChild(newConfig.dom);
|
|
8218
|
+
this.component.debouncedUpdatePreview();
|
|
8219
|
+
this.component.resizePanelWrap();
|
|
8220
|
+
}
|
|
8221
|
+
}
|
|
8222
|
+
});
|
|
8223
|
+
dialog.open();
|
|
8224
|
+
};
|
|
7827
8225
|
/**
|
|
7828
8226
|
* Clears all items from the component property based on its type.
|
|
7829
8227
|
* Sets the property to an empty array for 'array' type or empty object for other types.
|
|
@@ -7844,7 +8242,7 @@ class EditPanel {
|
|
|
7844
8242
|
};
|
|
7845
8243
|
actions.remove[this.name](removeEvt);
|
|
7846
8244
|
const eventType = toTitleCase(this.name);
|
|
7847
|
-
const customEvt = new
|
|
8245
|
+
const customEvt = new globalThis.CustomEvent(`onRemove${eventType}`, {
|
|
7848
8246
|
detail: removeEvt
|
|
7849
8247
|
});
|
|
7850
8248
|
document.dispatchEvent(customEvt);
|
|
@@ -7999,10 +8397,6 @@ class Panels {
|
|
|
7999
8397
|
title: mi18n.get("controlGroups.nextGroup"),
|
|
8000
8398
|
type: "button"
|
|
8001
8399
|
},
|
|
8002
|
-
dataset: {
|
|
8003
|
-
toggle: "tooltip",
|
|
8004
|
-
placement: "top"
|
|
8005
|
-
},
|
|
8006
8400
|
action: {
|
|
8007
8401
|
click: (e2) => this.nav.nextGroup(e2)
|
|
8008
8402
|
},
|
|
@@ -8015,10 +8409,6 @@ class Panels {
|
|
|
8015
8409
|
title: mi18n.get("controlGroups.prevGroup"),
|
|
8016
8410
|
type: "button"
|
|
8017
8411
|
},
|
|
8018
|
-
dataset: {
|
|
8019
|
-
toggle: "tooltip",
|
|
8020
|
-
placement: "top"
|
|
8021
|
-
},
|
|
8022
8412
|
action: {
|
|
8023
8413
|
click: (e2) => this.nav.prevGroup(e2)
|
|
8024
8414
|
},
|
|
@@ -8149,8 +8539,7 @@ class Component extends Data {
|
|
|
8149
8539
|
this.shortId = this.id.slice(0, this.id.indexOf("-"));
|
|
8150
8540
|
this.name = name2;
|
|
8151
8541
|
this.indexName = `${name2}s`;
|
|
8152
|
-
this.config = components[`${this.name}s`].config;
|
|
8153
|
-
merge(this.config, data.config);
|
|
8542
|
+
this.config = { ...data.config, ...components[`${this.name}s`].config };
|
|
8154
8543
|
this.address = `${this.name}s.${this.id}`;
|
|
8155
8544
|
this.dataPath = `${this.address}.`;
|
|
8156
8545
|
this.editPanels = /* @__PURE__ */ new Map();
|
|
@@ -8280,7 +8669,7 @@ class Component extends Data {
|
|
|
8280
8669
|
// copy array since children will be modified
|
|
8281
8670
|
});
|
|
8282
8671
|
forEach(children, (child) => child.remove());
|
|
8283
|
-
this.dom.
|
|
8672
|
+
this.dom.remove();
|
|
8284
8673
|
remove(components.getAddress(`${parent.name}s.${parent.id}.children`), this.id);
|
|
8285
8674
|
if (!parent.children.length) {
|
|
8286
8675
|
parent.emptyClass();
|
|
@@ -8851,12 +9240,18 @@ class Component extends Data {
|
|
|
8851
9240
|
* @return {Boolean}
|
|
8852
9241
|
*/
|
|
8853
9242
|
isDisabledProp = (propName, kind = "attrs") => {
|
|
8854
|
-
|
|
8855
|
-
if (!propKind) {
|
|
9243
|
+
if (get(this.config, propName)) {
|
|
8856
9244
|
return false;
|
|
8857
9245
|
}
|
|
8858
|
-
const
|
|
8859
|
-
|
|
9246
|
+
const disabledConfigProps = this.config?.disabled || [];
|
|
9247
|
+
const isDisabledConfigProp = disabledConfigProps.includes(propName);
|
|
9248
|
+
if (isDisabledConfigProp) {
|
|
9249
|
+
return true;
|
|
9250
|
+
}
|
|
9251
|
+
const basePropName = trimKeyPrefix(propName);
|
|
9252
|
+
const disabledPanelProps = this.config?.panels[kind]?.disabled || [];
|
|
9253
|
+
const isDisabledPanelProp = disabledPanelProps.includes(basePropName);
|
|
9254
|
+
return isDisabledPanelProp;
|
|
8860
9255
|
};
|
|
8861
9256
|
/**
|
|
8862
9257
|
* Checks if property can be removed
|
|
@@ -8864,12 +9259,18 @@ class Component extends Data {
|
|
|
8864
9259
|
* @return {Boolean}
|
|
8865
9260
|
*/
|
|
8866
9261
|
isLockedProp = (propName, kind = "attrs") => {
|
|
8867
|
-
const
|
|
8868
|
-
|
|
8869
|
-
|
|
9262
|
+
const lockedConfigProps = this.config?.locked || [];
|
|
9263
|
+
const isLockedConfigProp = lockedConfigProps.includes(propName);
|
|
9264
|
+
if (isLockedConfigProp) {
|
|
9265
|
+
return true;
|
|
8870
9266
|
}
|
|
8871
|
-
const
|
|
8872
|
-
|
|
9267
|
+
const basePropName = trimKeyPrefix(propName);
|
|
9268
|
+
const lockedPanelProps = this.config?.panels[kind]?.locked || [];
|
|
9269
|
+
const isLockedPanelProp = lockedPanelProps.includes(basePropName);
|
|
9270
|
+
if (isLockedPanelProp) {
|
|
9271
|
+
return true;
|
|
9272
|
+
}
|
|
9273
|
+
return false;
|
|
8873
9274
|
};
|
|
8874
9275
|
/**
|
|
8875
9276
|
* Generate the markup for field edit mode
|
|
@@ -8905,14 +9306,14 @@ class Component extends Data {
|
|
|
8905
9306
|
if (!this.config) {
|
|
8906
9307
|
return null;
|
|
8907
9308
|
}
|
|
8908
|
-
const editable = ["object", "array"];
|
|
9309
|
+
const editable = /* @__PURE__ */ new Set(["object", "array"]);
|
|
8909
9310
|
const panelOrder = unique([...this.config.panels.order, ...Object.keys(this.data)]);
|
|
8910
|
-
const noPanels = ["children", "
|
|
8911
|
-
const allowedPanels = panelOrder.filter((panelName) => !noPanels.
|
|
9311
|
+
const noPanels = /* @__PURE__ */ new Set(["children", "meta", "action", "events", ...this.config.panels.disabled]);
|
|
9312
|
+
const allowedPanels = panelOrder.filter((panelName) => !noPanels.has(panelName));
|
|
8912
9313
|
for (const panelName of allowedPanels) {
|
|
8913
9314
|
const panelData = this.get(panelName);
|
|
8914
9315
|
const propType = dom.childType(panelData);
|
|
8915
|
-
if (editable.
|
|
9316
|
+
if (editable.has(propType)) {
|
|
8916
9317
|
const editPanel = new EditPanel(panelData, panelName, this);
|
|
8917
9318
|
this.editPanels.set(editPanel.name, editPanel);
|
|
8918
9319
|
}
|
|
@@ -9094,7 +9495,7 @@ class ResizeColumn {
|
|
|
9094
9495
|
return value;
|
|
9095
9496
|
}
|
|
9096
9497
|
}
|
|
9097
|
-
const DEFAULT_DATA$
|
|
9498
|
+
const DEFAULT_DATA$2 = () => Object.freeze({
|
|
9098
9499
|
config: {
|
|
9099
9500
|
width: "100%"
|
|
9100
9501
|
},
|
|
@@ -9120,7 +9521,7 @@ class Column extends Component {
|
|
|
9120
9521
|
* @return {Object} Column config object
|
|
9121
9522
|
*/
|
|
9122
9523
|
constructor(columnData) {
|
|
9123
|
-
super("column", { ...DEFAULT_DATA$
|
|
9524
|
+
super("column", { ...DEFAULT_DATA$2(), ...columnData });
|
|
9124
9525
|
const childWrap = this.createChildWrap();
|
|
9125
9526
|
this.dom = dom.create({
|
|
9126
9527
|
tag: "li",
|
|
@@ -9219,7 +9620,7 @@ let Columns$1 = class Columns extends ComponentData {
|
|
|
9219
9620
|
}
|
|
9220
9621
|
};
|
|
9221
9622
|
const columns = new Columns$1();
|
|
9222
|
-
const DEFAULT_DATA$
|
|
9623
|
+
const DEFAULT_DATA$1 = () => Object.freeze({
|
|
9223
9624
|
config: {
|
|
9224
9625
|
fieldset: false,
|
|
9225
9626
|
// wrap contents of row in fieldset
|
|
@@ -9238,7 +9639,7 @@ class Row extends Component {
|
|
|
9238
9639
|
* @return {Object}
|
|
9239
9640
|
*/
|
|
9240
9641
|
constructor(rowData) {
|
|
9241
|
-
super("row", { ...DEFAULT_DATA$
|
|
9642
|
+
super("row", { ...DEFAULT_DATA$1(), ...rowData });
|
|
9242
9643
|
const children = this.createChildWrap();
|
|
9243
9644
|
this.dom = dom.create({
|
|
9244
9645
|
tag: "li",
|
|
@@ -9501,7 +9902,7 @@ let Rows$1 = class Rows extends ComponentData {
|
|
|
9501
9902
|
}
|
|
9502
9903
|
};
|
|
9503
9904
|
const rows = new Rows$1();
|
|
9504
|
-
const DEFAULT_DATA
|
|
9905
|
+
const DEFAULT_DATA = () => ({ conditions: [CONDITION_TEMPLATE()], children: [] });
|
|
9505
9906
|
class Stage extends Component {
|
|
9506
9907
|
/**
|
|
9507
9908
|
* Process options and load existing fields from data to the stage
|
|
@@ -9510,7 +9911,7 @@ class Stage extends Component {
|
|
|
9510
9911
|
* @return {Object} DOM element
|
|
9511
9912
|
*/
|
|
9512
9913
|
constructor(stageData) {
|
|
9513
|
-
super("stage", { ...DEFAULT_DATA
|
|
9914
|
+
super("stage", { ...DEFAULT_DATA(), ...stageData });
|
|
9514
9915
|
this.updateEditPanels();
|
|
9515
9916
|
this.debouncedUpdateEditPanels = debounce(this.updateEditPanels);
|
|
9516
9917
|
({
|
|
@@ -9693,9 +10094,9 @@ class Control {
|
|
|
9693
10094
|
* @return {String} the translated label
|
|
9694
10095
|
*/
|
|
9695
10096
|
i18n(lookup, args) {
|
|
9696
|
-
const
|
|
10097
|
+
const locale = mi18n.locale;
|
|
9697
10098
|
const controlTranslations = this.definition?.i18n;
|
|
9698
|
-
const localeTranslations = controlTranslations?.[
|
|
10099
|
+
const localeTranslations = controlTranslations?.[locale] || {};
|
|
9699
10100
|
return (localeTranslations[lookup]?.() ?? localeTranslations[lookup]) || mi18n.get(lookup, args);
|
|
9700
10101
|
}
|
|
9701
10102
|
}
|
|
@@ -10045,9 +10446,6 @@ const index$7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
10045
10446
|
Controls: Controls$1,
|
|
10046
10447
|
default: Controls$2
|
|
10047
10448
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10048
|
-
const DEFAULT_DATA = () => ({
|
|
10049
|
-
// conditions: [CONDITION_TEMPLATE()],
|
|
10050
|
-
});
|
|
10051
10449
|
const checkableTypes = /* @__PURE__ */ new Set(["checkbox", "radio"]);
|
|
10052
10450
|
const isSelectableType = /* @__PURE__ */ new Set(["radio", "checkbox", "select-one", "select-multiple"]);
|
|
10053
10451
|
class Field extends Component {
|
|
@@ -10057,7 +10455,7 @@ class Field extends Component {
|
|
|
10057
10455
|
* @return {Object} field object
|
|
10058
10456
|
*/
|
|
10059
10457
|
constructor(fieldData = /* @__PURE__ */ Object.create(null)) {
|
|
10060
|
-
super("field",
|
|
10458
|
+
super("field", fieldData);
|
|
10061
10459
|
this.debouncedUpdateEditPanels = debounce(this.updateEditPanels);
|
|
10062
10460
|
this.debouncedUpdatePreview = debounce(this.updatePreview);
|
|
10063
10461
|
this.label = dom.create(this.labelConfig);
|
|
@@ -10093,34 +10491,41 @@ class Field extends Component {
|
|
|
10093
10491
|
if (hideLabel) {
|
|
10094
10492
|
return null;
|
|
10095
10493
|
}
|
|
10096
|
-
const
|
|
10097
|
-
const required = this.get("attrs
|
|
10098
|
-
const
|
|
10099
|
-
const
|
|
10100
|
-
|
|
10101
|
-
|
|
10102
|
-
attrs: {}
|
|
10103
|
-
};
|
|
10104
|
-
if (disableHTML) {
|
|
10105
|
-
config.tag = "input";
|
|
10106
|
-
config.attrs.value = labelVal;
|
|
10107
|
-
return config;
|
|
10108
|
-
}
|
|
10109
|
-
config.attrs.contenteditable = true;
|
|
10110
|
-
config.children = labelVal;
|
|
10111
|
-
return config;
|
|
10494
|
+
const { label, editorLabel, disableHtmlLabel, helpText, tooltip: tooltip2 } = this.get("config");
|
|
10495
|
+
const { required: isRequired } = this.get("attrs") || {};
|
|
10496
|
+
const labelVal = editorLabel || label;
|
|
10497
|
+
const labelBase = {
|
|
10498
|
+
tag: "label",
|
|
10499
|
+
attrs: {}
|
|
10112
10500
|
};
|
|
10113
|
-
|
|
10114
|
-
|
|
10501
|
+
if (disableHtmlLabel) {
|
|
10502
|
+
labelBase.tag = "input";
|
|
10503
|
+
labelBase.attrs.value = labelVal;
|
|
10504
|
+
} else {
|
|
10505
|
+
labelBase.attrs.contenteditable = true;
|
|
10506
|
+
labelBase.children = labelVal;
|
|
10507
|
+
}
|
|
10508
|
+
const labelObj = {
|
|
10509
|
+
...labelBase,
|
|
10115
10510
|
action: {
|
|
10116
|
-
input: ({ target: { innerHTML,
|
|
10117
|
-
|
|
10511
|
+
input: ({ target: { innerHTML, value } }) => {
|
|
10512
|
+
const labelVal2 = disableHtmlLabel ? value : innerHTML;
|
|
10513
|
+
super.set("config.label", labelVal2);
|
|
10514
|
+
const configPanelLabelInput = this.dom.querySelector(".config-label");
|
|
10515
|
+
if (configPanelLabelInput) {
|
|
10516
|
+
configPanelLabelInput.value = labelVal2;
|
|
10517
|
+
}
|
|
10118
10518
|
}
|
|
10119
10519
|
}
|
|
10120
10520
|
};
|
|
10121
10521
|
const labelWrap = {
|
|
10122
10522
|
className: "prev-label",
|
|
10123
|
-
children: [
|
|
10523
|
+
children: [
|
|
10524
|
+
labelObj,
|
|
10525
|
+
isRequired && dom.requiredMark(),
|
|
10526
|
+
tooltip2 && dom.tooltip(tooltip2),
|
|
10527
|
+
helpText && dom.helpText(helpText)
|
|
10528
|
+
]
|
|
10124
10529
|
};
|
|
10125
10530
|
return labelWrap;
|
|
10126
10531
|
}
|
|
@@ -10132,18 +10537,23 @@ class Field extends Component {
|
|
|
10132
10537
|
*/
|
|
10133
10538
|
set(path, value) {
|
|
10134
10539
|
const data = this.setData(path, value);
|
|
10135
|
-
this.debouncedUpdatePreview();
|
|
10136
10540
|
return data;
|
|
10137
10541
|
}
|
|
10138
10542
|
/**
|
|
10139
10543
|
* Update the label dom when label data changes
|
|
10140
10544
|
*/
|
|
10141
10545
|
updateLabel() {
|
|
10142
|
-
if (!this.label) {
|
|
10143
|
-
return null;
|
|
10144
|
-
}
|
|
10145
10546
|
const newLabel = dom.create(this.labelConfig);
|
|
10146
|
-
this.label
|
|
10547
|
+
if (this.label || !newLabel) {
|
|
10548
|
+
this.label.remove();
|
|
10549
|
+
}
|
|
10550
|
+
if (newLabel) {
|
|
10551
|
+
if (this.data.config?.labelAfter) {
|
|
10552
|
+
this.dom.append(newLabel);
|
|
10553
|
+
} else {
|
|
10554
|
+
this.dom.prepend(newLabel);
|
|
10555
|
+
}
|
|
10556
|
+
}
|
|
10147
10557
|
this.label = newLabel;
|
|
10148
10558
|
}
|
|
10149
10559
|
/**
|
|
@@ -10164,7 +10574,7 @@ class Field extends Component {
|
|
|
10164
10574
|
if (isSelectableType.has(type)) {
|
|
10165
10575
|
const selectedOptions = this.preview.querySelectorAll(":checked");
|
|
10166
10576
|
const optionsData = this.get("options");
|
|
10167
|
-
const checkedType = optionsData?.[0]?.selected
|
|
10577
|
+
const checkedType = optionsData?.[0]?.selected === void 0 ? "checked" : "selected";
|
|
10168
10578
|
const optionsDataMap = optionsData.reduce((acc, option2) => {
|
|
10169
10579
|
acc[option2.value] = option2;
|
|
10170
10580
|
acc[option2.value][checkedType] = false;
|
|
@@ -10415,6 +10825,7 @@ const index$6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
10415
10825
|
Columns: Columns2,
|
|
10416
10826
|
Components,
|
|
10417
10827
|
Controls: Controls2,
|
|
10828
|
+
Dialog,
|
|
10418
10829
|
Fields: Fields2,
|
|
10419
10830
|
Rows: Rows2,
|
|
10420
10831
|
Stages: Stages2,
|
|
@@ -10446,19 +10857,19 @@ const defaults$1 = {
|
|
|
10446
10857
|
onSave: (_evt) => {
|
|
10447
10858
|
},
|
|
10448
10859
|
confirmClearAll: (evt) => {
|
|
10449
|
-
if (
|
|
10860
|
+
if (globalThis.confirm(evt.confirmationMessage)) {
|
|
10450
10861
|
evt.clearAllAction(evt);
|
|
10451
10862
|
}
|
|
10452
10863
|
}
|
|
10453
10864
|
};
|
|
10454
10865
|
const defaultCustomEvent = ({ src, ...evtData }, type = EVENT_FORMEO_UPDATED) => {
|
|
10455
|
-
const evt = new
|
|
10866
|
+
const evt = new globalThis.CustomEvent(type, {
|
|
10456
10867
|
detail: evtData,
|
|
10457
10868
|
bubbles: events.opts?.debug || events.opts?.bubbles
|
|
10458
10869
|
});
|
|
10459
10870
|
evt.data = (src || document).dispatchEvent(evt);
|
|
10460
10871
|
if (type === EVENT_FORMEO_UPDATED) {
|
|
10461
|
-
const changedEvt = new
|
|
10872
|
+
const changedEvt = new globalThis.CustomEvent(EVENT_FORMEO_CHANGED, {
|
|
10462
10873
|
detail: evtData,
|
|
10463
10874
|
bubbles: events.opts?.debug || events.opts?.bubbles
|
|
10464
10875
|
});
|
|
@@ -10485,7 +10896,7 @@ const events = {
|
|
|
10485
10896
|
};
|
|
10486
10897
|
const formeoUpdatedThrottled = throttle$1(() => {
|
|
10487
10898
|
const eventData = {
|
|
10488
|
-
timeStamp:
|
|
10899
|
+
timeStamp: globalThis.performance.now(),
|
|
10489
10900
|
type: EVENT_FORMEO_UPDATED,
|
|
10490
10901
|
detail: components.formData
|
|
10491
10902
|
};
|
|
@@ -10594,14 +11005,14 @@ window.addEventListener("resize", onResizeWindow);
|
|
|
10594
11005
|
const defaultActions = {
|
|
10595
11006
|
add: {
|
|
10596
11007
|
attr: (evt) => {
|
|
10597
|
-
const attr =
|
|
11008
|
+
const attr = globalThis.prompt(evt.message.attr);
|
|
10598
11009
|
if (attr && evt.isDisabled(attr)) {
|
|
10599
|
-
|
|
11010
|
+
globalThis.alert(mi18n.get("attributeNotPermitted", attr));
|
|
10600
11011
|
return actions.add.attrs(evt);
|
|
10601
11012
|
}
|
|
10602
11013
|
let val;
|
|
10603
11014
|
if (attr) {
|
|
10604
|
-
val = String(
|
|
11015
|
+
val = String(globalThis.prompt(evt.message.value, ""));
|
|
10605
11016
|
evt.addAction(attr, val);
|
|
10606
11017
|
}
|
|
10607
11018
|
},
|
|
@@ -10610,6 +11021,9 @@ const defaultActions = {
|
|
|
10610
11021
|
},
|
|
10611
11022
|
condition: (evt) => {
|
|
10612
11023
|
evt.addAction(evt);
|
|
11024
|
+
},
|
|
11025
|
+
config: (evt) => {
|
|
11026
|
+
evt.addAction(evt);
|
|
10613
11027
|
}
|
|
10614
11028
|
},
|
|
10615
11029
|
remove: {
|
|
@@ -10651,6 +11065,9 @@ const actions = {
|
|
|
10651
11065
|
conditions: (evt) => {
|
|
10652
11066
|
evt.template = evt.template || CONDITION_TEMPLATE();
|
|
10653
11067
|
return actions.opts.add.condition(evt);
|
|
11068
|
+
},
|
|
11069
|
+
config: (evt) => {
|
|
11070
|
+
return actions.opts.add.config(evt);
|
|
10654
11071
|
}
|
|
10655
11072
|
},
|
|
10656
11073
|
remove: {
|
|
@@ -10679,10 +11096,6 @@ const actions = {
|
|
|
10679
11096
|
}
|
|
10680
11097
|
}
|
|
10681
11098
|
};
|
|
10682
|
-
const e = { "en-US": { "en-US": "English", dir: "ltr", "af-ZA": "Afrikaans (South Africa)", "ar-TN": "Arabic (Tunisia)", "cs-CZ": "Czech (Czechia)", "de-DE": "German (Germany)", "es-ES": "European Spanish", "fa-IR": "Persian (Iran)", "fi-FI": "Finnish (Finland)", "fr-FR": "French (France)", "hu-HU": "Hungarian (Hungary)", "it-IT": "Italian (Italy)", "ja-JP": "Japanese (Japan)", "nb-NO": "Norwegian Bokmål (Norway)", "pl-PL": "Polish (Poland)", "pt-BR": "Brazilian Portuguese", "pt-PT": "European Portuguese", "ro-RO": "Romanian (Romania)", "ru-RU": "Russian (Russia)", "th-TH": "Thai (Thailand)", "tr-TR": "Turkish (Türkiye)", "zh-CN": "Chinese (China)", "zh-HK": "Chinese (Hong Kong SAR China)", "action.add.attrs.attr": "What attribute would you like to add?", "action.add.attrs.value": "Default Value", addOption: "Add Option", allFieldsRemoved: "All fields were removed.", allowSelect: "Allow Select", and: "and", attribute: "Attribute", attributeNotPermitted: 'Attribute "{attribute}" is not permitted, please choose another.', attributes: "Attributes", "attrs.class": "Class", "attrs.className": "Class", "attrs.dir": "Direction", "attrs.id": "Id", "attrs.required": "Required", "attrs.style": "Style", "attrs.title": "Title", "attrs.type": "Type", "attrs.value": "Value", autocomplete: "Autocomplete", button: "Button", cannotBeEmpty: "This field cannot be empty", cannotClearFields: "There are no fields to clear", checkbox: "Checkbox", checkboxes: "Checkboxes", class: "Class", clear: "Clear", clearAllMessage: "Are you sure you want to clear all fields?", close: "Close", column: "Column", "condition.target.placeholder": "target", "condition.type.and": "And", "condition.type.if": "If", "condition.type.or": "Or", "condition.type.then": "Then", "condition.value.placeholder": "value", confirmClearAll: "Are you sure you want to remove all fields?", content: "Content", control: "Control", "controlGroups.nextGroup": "Next Group", "controlGroups.prevGroup": "Previous Group", "controls.filteringTerm": 'Filtering "{term}"', "controls.form.button": "Button", "controls.form.checkbox-group": "Checkbox Group", "controls.form.input.date": "Date", "controls.form.input.email": "Email", "controls.form.input.file": "File Upload", "controls.form.input.hidden": "Hidden Input", "controls.form.input.number": "Number", "controls.form.input.text": "Text Input", "controls.form.radio-group": "Radio Group", "controls.form.select": "Select", "controls.form.textarea": "TextArea", "controls.groups.form": "Form Fields", "controls.groups.html": "HTML Elements", "controls.groups.layout": "Layout", "controls.html.divider": "Divider", "controls.html.header": "Header", "controls.html.paragraph": "Paragraph", "controls.layout.column": "Column", "controls.layout.row": "Row", copy: "Copy To Clipboard", danger: "Danger", defineColumnLayout: "Define a column layout", defineColumnWidths: "Define column widths", description: "Help Text", descriptionField: "Description", "editing.row": "Editing Row", editorTitle: "Form Elements", field: "Field", "field.property.invalid": "not valid", "field.property.isChecked": "is checked", "field.property.isNotVisible": "is not visible", "field.property.isVisible": "is visible", "field.property.label": "label", "field.property.valid": "valid", "field.property.value": "value", fieldNonEditable: "This field cannot be edited.", fieldRemoveWarning: "Are you sure you want to remove this field?", fileUpload: "File Upload", formUpdated: "Form Updated", getStarted: "Drag a field from the right to get started.", group: "Group", grouped: "Grouped", hidden: "Hidden Input", hide: "Edit", htmlElements: "HTML Elements", if: "If", "if.condition.source.placeholder": "source", "if.condition.target.placeholder": "target / value", info: "Info", "input.date": "Date", "input.text": "Text", label: "Label", labelCount: "{label} {count}", labelEmpty: "Field Label cannot be empty", "lang.af": "Afrikaans", "lang.ar": "Arabic", "lang.cs": "Czech", "lang.de": "German", "lang.en": "English", "lang.es": "Spanish", "lang.fa": "Persian", "lang.fi": "Finnish", "lang.fr": "French", "lang.hu": "Hungarian", "lang.it": "Italian", "lang.ja": "Japanese", "lang.nb": "Norwegian Bokmål", "lang.pl": "Polish", "lang.pt": "Portuguese", "lang.ro": "Romanian", "lang.ru": "Russian", "lang.th": "Thai", "lang.tr": "Turkish", "lang.zh": "Chinese", layout: "Layout", limitRole: "Limit access to one or more of the following roles:", mandatory: "Mandatory", maxlength: "Max Length", "meta.group": "Group", "meta.icon": "Ico", "meta.label": "Label", minOptionMessage: "This field requires a minimum of 2 options", name: "Name", newOptionLabel: "New {type}", no: "No", number: "Number", off: "Off", on: "On", "operator.contains": "contains", "operator.equals": "equals", "operator.notContains": "not contains", "operator.notEquals": "not equal", "operator.notVisible": "not visible", "operator.visible": "visible", option: "Option", optional: "optional", optionEmpty: "Option value required", optionLabel: "Option {count}", options: "Options", or: "or", order: "Order", "panel.label.attrs": "Attributes", "panel.label.conditions": "Conditions", "panel.label.config": "Configuration", "panel.label.meta": "Meta", "panel.label.options": "Options", "panelEditButtons.attrs": "+ Attribute", "panelEditButtons.conditions": "+ Condition", "panelEditButtons.options": "+ Option", placeholder: "Placeholder", "placeholder.className": "space separated classes", "placeholder.email": "Enter you email", "placeholder.label": "Label", "placeholder.password": "Enter your password", "placeholder.placeholder": "Placeholder", "placeholder.text": "Enter some Text", "placeholder.textarea": "Enter a lot of text", "placeholder.value": "Value", preview: "Preview", primary: "Primary", remove: "Remove", removeMessage: "Remove Element", removeType: "Remove {type}", required: "Required", reset: "Reset", richText: "Rich Text Editor", roles: "Access", row: "Row", "row.makeInputGroup": "Make this row an input group.", "row.makeInputGroupDesc": "Input Groups enable users to add sets of inputs at a time.", "row.settings.fieldsetWrap": "Wrap row in a <fieldset> tag", "row.settings.fieldsetWrap.aria": "Wrap Row in Fieldset", save: "Save", secondary: "Secondary", select: "Select", selectColor: "Select Color", selectionsMessage: "Allow Multiple Selections", selectOptions: "Options", separator: "Separator", settings: "Settings", size: "Size", sizes: "Sizes", "sizes.lg": "Large", "sizes.m": "Default", "sizes.sm": "Small", "sizes.xs": "Extra Small", style: "Style", styles: "Styles", "styles.btn": "Button Style", "styles.btn.danger": "Danger", "styles.btn.default": "Default", "styles.btn.info": "Info", "styles.btn.primary": "Primary", "styles.btn.success": "Success", "styles.btn.warning": "Warning", subtype: "Type", success: "Success", text: "Text Field", then: "Then", "then.condition.target.placeholder": "target", toggle: "Toggle", ungrouped: "Un-Grouped", warning: "Warning", yes: "Yes" } }, i = e["en-US"];
|
|
10683
|
-
const locale = "en-US";
|
|
10684
|
-
mi18n.addLanguage(locale, i);
|
|
10685
|
-
mi18n.setCurrent(locale);
|
|
10686
11099
|
const defaults = {
|
|
10687
11100
|
get editor() {
|
|
10688
11101
|
return {
|
|
@@ -10696,7 +11109,6 @@ const defaults = {
|
|
|
10696
11109
|
svgSprite: null,
|
|
10697
11110
|
// null = use bundled sprite, or provide custom URL
|
|
10698
11111
|
style: CSS_URL,
|
|
10699
|
-
// change to null
|
|
10700
11112
|
iconFont: null,
|
|
10701
11113
|
// 'glyphicons' || 'font-awesome' || 'fontello'
|
|
10702
11114
|
config: {},
|
|
@@ -10712,7 +11124,6 @@ const defaults = {
|
|
|
10712
11124
|
};
|
|
10713
11125
|
}
|
|
10714
11126
|
};
|
|
10715
|
-
new SmartTooltip();
|
|
10716
11127
|
let FormeoEditor$1 = class FormeoEditor {
|
|
10717
11128
|
/**
|
|
10718
11129
|
* @param {Object} options formeo options
|
|
@@ -10767,12 +11178,15 @@ let FormeoEditor$1 = class FormeoEditor {
|
|
|
10767
11178
|
*/
|
|
10768
11179
|
async loadResources() {
|
|
10769
11180
|
document.removeEventListener("DOMContentLoaded", this.loadResources);
|
|
10770
|
-
const promises = [
|
|
10771
|
-
promises.push(
|
|
11181
|
+
const promises = [
|
|
10772
11182
|
fetchIcons(this.opts.svgSprite),
|
|
10773
11183
|
fetchFormeoStyle(this.opts.style),
|
|
10774
|
-
mi18n.init({
|
|
10775
|
-
|
|
11184
|
+
mi18n.init({
|
|
11185
|
+
preloaded: { "en-US": i },
|
|
11186
|
+
...this.opts.i18n,
|
|
11187
|
+
locale: globalThis.sessionStorage?.getItem(SESSION_LOCALE_KEY)
|
|
11188
|
+
})
|
|
11189
|
+
].filter(Boolean);
|
|
10776
11190
|
await Promise.all(promises);
|
|
10777
11191
|
if (this.opts.allowEdit) {
|
|
10778
11192
|
this.init();
|
|
@@ -10790,7 +11204,7 @@ let FormeoEditor$1 = class FormeoEditor {
|
|
|
10790
11204
|
this.formId = components.get("id");
|
|
10791
11205
|
this.i18n = {
|
|
10792
11206
|
setLang: (formeoLocale) => {
|
|
10793
|
-
|
|
11207
|
+
globalThis.sessionStorage?.setItem(SESSION_LOCALE_KEY, formeoLocale);
|
|
10794
11208
|
const loadLang = mi18n.setCurrent(formeoLocale);
|
|
10795
11209
|
loadLang.then(() => {
|
|
10796
11210
|
this.init();
|
|
@@ -10798,6 +11212,7 @@ let FormeoEditor$1 = class FormeoEditor {
|
|
|
10798
11212
|
}
|
|
10799
11213
|
};
|
|
10800
11214
|
this.opts.onLoad?.(this);
|
|
11215
|
+
this.tooltipInstance = new SmartTooltip();
|
|
10801
11216
|
});
|
|
10802
11217
|
}
|
|
10803
11218
|
load(formData = this.userFormData, opts = this.opts) {
|
|
@@ -10810,7 +11225,7 @@ let FormeoEditor$1 = class FormeoEditor {
|
|
|
10810
11225
|
*/
|
|
10811
11226
|
render() {
|
|
10812
11227
|
if (!this.controls) {
|
|
10813
|
-
return
|
|
11228
|
+
return globalThis.requestAnimationFrame(() => this.render());
|
|
10814
11229
|
}
|
|
10815
11230
|
this.stages = Object.values(components.get("stages"));
|
|
10816
11231
|
if (this.opts.controlOnLeft) {
|
|
@@ -10856,7 +11271,7 @@ const processOptions = ({ editorContainer, renderContainer, formData, ...opts })
|
|
|
10856
11271
|
};
|
|
10857
11272
|
const baseId = (id) => {
|
|
10858
11273
|
const match2 = id.match(UUID_REGEXP);
|
|
10859
|
-
return match2?.[0] || id
|
|
11274
|
+
return match2?.[0] || id;
|
|
10860
11275
|
};
|
|
10861
11276
|
const isVisible = (elem) => {
|
|
10862
11277
|
if (!elem) return false;
|
|
@@ -10941,12 +11356,13 @@ const targetPropertyMap = {
|
|
|
10941
11356
|
};
|
|
10942
11357
|
let FormeoRenderer$1 = class FormeoRenderer {
|
|
10943
11358
|
constructor(opts, formDataArg) {
|
|
10944
|
-
const { renderContainer, elements, formData } = processOptions(opts);
|
|
10945
|
-
this.container =
|
|
11359
|
+
const { renderContainer: container, elements, formData, config } = processOptions(opts);
|
|
11360
|
+
this.container = container;
|
|
10946
11361
|
this.form = cleanFormData(formDataArg || formData);
|
|
10947
|
-
this.dom = dom;
|
|
10948
|
-
this.components = /* @__PURE__ */ Object.create(null);
|
|
10949
11362
|
this.elements = elements;
|
|
11363
|
+
this.config = config;
|
|
11364
|
+
this.components = /* @__PURE__ */ Object.create(null);
|
|
11365
|
+
this.dom = dom;
|
|
10950
11366
|
}
|
|
10951
11367
|
get formData() {
|
|
10952
11368
|
return this.form;
|
|
@@ -10954,10 +11370,30 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
10954
11370
|
set formData(data) {
|
|
10955
11371
|
this.form = cleanFormData(data);
|
|
10956
11372
|
}
|
|
11373
|
+
/**
|
|
11374
|
+
* Gets the user data from the rendered form as a plain object.
|
|
11375
|
+
* Converts FormData to an object, handling multiple values for the same key
|
|
11376
|
+
* by converting them into arrays.
|
|
11377
|
+
*
|
|
11378
|
+
* @returns {Object.<string, string|string[]>} An object containing form field names as keys
|
|
11379
|
+
* and their values. Fields with multiple values are stored as arrays.
|
|
11380
|
+
*
|
|
11381
|
+
* @example
|
|
11382
|
+
* // Form with single values
|
|
11383
|
+
* { username: 'john', email: 'john@example.com' }
|
|
11384
|
+
*
|
|
11385
|
+
* @example
|
|
11386
|
+
* // Form with multiple values for same key
|
|
11387
|
+
* { username: 'john', hobbies: ['reading', 'gaming'] }
|
|
11388
|
+
*/
|
|
10957
11389
|
get userData() {
|
|
10958
|
-
const
|
|
11390
|
+
const form = this.container.querySelector(".formeo-render") || this.renderedForm;
|
|
11391
|
+
if (!form) {
|
|
11392
|
+
return {};
|
|
11393
|
+
}
|
|
11394
|
+
const formEntries = new FormData(form);
|
|
10959
11395
|
const formDataObj = {};
|
|
10960
|
-
for (const [key, value] of
|
|
11396
|
+
for (const [key, value] of formEntries.entries()) {
|
|
10961
11397
|
if (formDataObj[key]) {
|
|
10962
11398
|
if (Array.isArray(formDataObj[key])) {
|
|
10963
11399
|
formDataObj[key].push(value);
|
|
@@ -10970,6 +11406,27 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
10970
11406
|
}
|
|
10971
11407
|
return formDataObj;
|
|
10972
11408
|
}
|
|
11409
|
+
/**
|
|
11410
|
+
* Gets the user form data as an array of field objects.
|
|
11411
|
+
* Combines user input values with component metadata to create structured field data.
|
|
11412
|
+
*
|
|
11413
|
+
* @returns {Array<{key: string, value: any, label: string}>} An array of field data objects, where each object contains:
|
|
11414
|
+
* - key: The field identifier
|
|
11415
|
+
* - value: The user's input value for the field
|
|
11416
|
+
* - label: The field's label from component configuration (empty string if not found)
|
|
11417
|
+
*/
|
|
11418
|
+
get userFormData() {
|
|
11419
|
+
const userFormData = [];
|
|
11420
|
+
for (const [key, value] of Object.entries(this.userData)) {
|
|
11421
|
+
const fieldData = {
|
|
11422
|
+
key,
|
|
11423
|
+
value,
|
|
11424
|
+
label: this.components[baseId(key)]?.config?.label || ""
|
|
11425
|
+
};
|
|
11426
|
+
userFormData.push(fieldData);
|
|
11427
|
+
}
|
|
11428
|
+
return userFormData;
|
|
11429
|
+
}
|
|
10973
11430
|
set userData(data = {}) {
|
|
10974
11431
|
const form = this.container.querySelector("form");
|
|
10975
11432
|
for (const key of Object.keys(data)) {
|
|
@@ -10993,6 +11450,7 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
10993
11450
|
* @param {Object} formData
|
|
10994
11451
|
*/
|
|
10995
11452
|
render(formData = this.form) {
|
|
11453
|
+
this.form = cleanFormData(formData);
|
|
10996
11454
|
const renderedForm = this.getRenderedForm(formData);
|
|
10997
11455
|
const existingRenderedForm = this.container.querySelector(".formeo-render");
|
|
10998
11456
|
if (existingRenderedForm) {
|
|
@@ -11005,6 +11463,7 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
11005
11463
|
this.form = cleanFormData(formData);
|
|
11006
11464
|
const renderCount = document.getElementsByClassName("formeo-render").length;
|
|
11007
11465
|
const config = {
|
|
11466
|
+
...this.config,
|
|
11008
11467
|
tag: "form",
|
|
11009
11468
|
id: this.form.id,
|
|
11010
11469
|
className: `formeo-render formeo formeo-rendered-${renderCount}`,
|
|
@@ -11030,11 +11489,9 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
11030
11489
|
*/
|
|
11031
11490
|
processColumn = ({ id, ...columnData }) => ({
|
|
11032
11491
|
...columnData,
|
|
11033
|
-
|
|
11034
|
-
|
|
11035
|
-
|
|
11036
|
-
style: `width: ${columnData.config.width || "100%"}`
|
|
11037
|
-
}
|
|
11492
|
+
id: this.prefixId(id),
|
|
11493
|
+
children: this.processFields(columnData.children),
|
|
11494
|
+
style: `width: ${columnData.config.width || "100%"}`
|
|
11038
11495
|
});
|
|
11039
11496
|
processRows = (stageId) => this.orderChildren("rows", this.form.stages[stageId].children).reduce((acc, row) => {
|
|
11040
11497
|
if (row) {
|
|
@@ -11077,11 +11534,16 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
11077
11534
|
};
|
|
11078
11535
|
};
|
|
11079
11536
|
cloneComponentData = (componentId) => {
|
|
11080
|
-
const { children = [], id, ...rest } = this.components[componentId];
|
|
11537
|
+
const { children = [], id, attrs = {}, ...rest } = this.components[componentId];
|
|
11538
|
+
const updatedAttrs = { ...attrs, "data-clone-of": id };
|
|
11539
|
+
if (rest.tag === "input") {
|
|
11540
|
+
updatedAttrs.name = getName(this.components[componentId]);
|
|
11541
|
+
}
|
|
11081
11542
|
return {
|
|
11082
11543
|
...rest,
|
|
11083
|
-
id: uuid(id),
|
|
11084
|
-
children: children?.length && children.map(({ id: id2 }) => this.cloneComponentData(baseId(id2)))
|
|
11544
|
+
id: RENDER_PREFIX + uuid(id),
|
|
11545
|
+
children: children?.length && children.map(({ id: id2 }) => this.cloneComponentData(baseId(id2))),
|
|
11546
|
+
attrs: updatedAttrs
|
|
11085
11547
|
};
|
|
11086
11548
|
};
|
|
11087
11549
|
addButton = (id) => ({
|
|
@@ -11229,12 +11691,12 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
11229
11691
|
return components2;
|
|
11230
11692
|
};
|
|
11231
11693
|
};
|
|
11694
|
+
const listenTypeMap = [
|
|
11695
|
+
["input", (c) => ["textarea", "text"].includes(c.type)],
|
|
11696
|
+
["change", (c) => ["select"].includes(c.tagName.toLowerCase()) || ["checkbox", "radio"].includes(c.type)]
|
|
11697
|
+
];
|
|
11232
11698
|
const LISTEN_TYPE_MAP = (component) => {
|
|
11233
|
-
const
|
|
11234
|
-
["input", (c) => ["textarea", "text"].includes(c.type)],
|
|
11235
|
-
["change", (c) => ["select"].includes(c.tagName.toLowerCase()) || ["checkbox", "radio"].includes(c.type)]
|
|
11236
|
-
];
|
|
11237
|
-
const [listenerEvent] = typesMap.find((typeMap) => typeMap[1](component)) || [false];
|
|
11699
|
+
const [listenerEvent] = listenTypeMap.find((typeMap) => typeMap[1](component)) || [false];
|
|
11238
11700
|
return listenerEvent;
|
|
11239
11701
|
};
|
|
11240
11702
|
if (window !== void 0) {
|
|
@@ -11452,7 +11914,8 @@ class TextControl extends Control {
|
|
|
11452
11914
|
className: ""
|
|
11453
11915
|
},
|
|
11454
11916
|
config: {
|
|
11455
|
-
label: mi18n.get("controls.form.input.text")
|
|
11917
|
+
label: mi18n.get("controls.form.input.text"),
|
|
11918
|
+
hideLabel: false
|
|
11456
11919
|
},
|
|
11457
11920
|
meta: {
|
|
11458
11921
|
group: "common",
|